Compare commits
3 Commits
| Author | SHA256 | Date | |
|---|---|---|---|
| be124392a5 | |||
| f3a00681a8 | |||
| 8913ad7fa7 |
BIN
qpdf-11.10.1.tar.gz
LFS
BIN
qpdf-11.10.1.tar.gz
LFS
Binary file not shown.
@@ -1,16 +0,0 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAABCAAdFiEEwslrEAEf4Anm0d+CinXRCZgBLH4FAmexGSMACgkQinXRCZgB
|
||||
LH66eQ/+KTmVtK53UXL+Cf3OIugcwSXPceJYQEmpwivPtrQF0eGDsxWNCdTFR+VF
|
||||
J0R+PtxKEl5DMVmLvxye3oUDJWnxvH3rMLHwaTuVort+MLeEV63IUlQ1nIh4Ci/2
|
||||
CfGX2d4ZU1kLc9W67KjJ576qE78vvTIGUP/16/8haaJ/LB22FeS3Vb4mLq4Q4hH7
|
||||
XfMp2SFjBQvUvxIAQw7WNblocdYUlHEWynlzKeCo5p7DdRZ1o0D9ec8JRFzkT53H
|
||||
bmErjY9lvOSqD8ZtFyVsJXyCCphAJ9gVv42LypA86famPcY+9TWEuC07rAlQQTyO
|
||||
7eR1x4ZS58MyoMPh/jWih4bucnTnj2ZrwrFD3TgWzPvE3J3OLDPNlB/X1AtsKEwd
|
||||
uLd247196hU4uhzGO4yF+nY3Ncf3sG3snwcyrBOg52Biyak2OEtp4RD71Y9MHjQm
|
||||
iHVEYWV8hMvmk+KwdSKSofr0g4D4kQwIDwi3xII7ybGZ/wh3fC010uWt+hWBCH56
|
||||
JioqPTGfEbpoJj7iM+I4BSQkDV1e6jEG38QCo8xetbaDDhn8cWe8scadEvTZTIdR
|
||||
ZH2d8BQxAv+SlgOQFKp7OvtIaZ2Bd8okSjUPkm2xsjl5dmmo9QLqrN0c7HrBhxCm
|
||||
sR17YHlz1SeLPfzyk0oOEj9p1eod7cxtRT8msShCIuE3crqPrck=
|
||||
=JuQP
|
||||
-----END PGP SIGNATURE-----
|
||||
3
qpdf-12.2.0.tar.gz
Normal file
3
qpdf-12.2.0.tar.gz
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:b3d1575b2218badc3549d6977524bb0f8c468c6528eebc8967bbe3078cf2cace
|
||||
size 19537905
|
||||
16
qpdf-12.2.0.tar.gz.asc
Normal file
16
qpdf-12.2.0.tar.gz.asc
Normal file
@@ -0,0 +1,16 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAABCAAdFiEEwslrEAEf4Anm0d+CinXRCZgBLH4FAmgXsfIACgkQinXRCZgB
|
||||
LH5SYxAAnLJzlk53vs9Egnkzyl2HNASYgv0OcYunycAoVVDiTW2ku9jR68Hg90v6
|
||||
T/DqNcN+9dJ/OiGKS07TI+0eKo3eujxU67gt1oNz0V59kZCP2y6a6Ig89Qg7ZC8u
|
||||
2kXJMLEmEFuYpBIYvghBVwn4T8s4EqzpbyDKUFVN06Kom8vTGzLirbTEo93AlonF
|
||||
DaPwawUsYAYKOl45HPWoFDxFoiL2EFz+H5DK3f9qweTDMa79ze+Oq9tChuTddumM
|
||||
xjby7yfFRjfYG9g+rzsFt8r8V6QoTlyXMwRfsWfFgxQAUhDZJqsAbtSJumr2C40t
|
||||
oMaCYtVqFoGH45U8O9R0agQARgRcf9QAUyS2OkRLoVyGx4ESwnhr6BY63owuKzaS
|
||||
uV5Vf/43YknaeRdF+tEqhTgtx1//i+8pVQt1AQwlPKtOr94OlvVDFOy11mPbKAby
|
||||
dNy/IGUqnK5w7D+/j6iph2pakUSFlSD/EPkFWhmHLcKfD5dgDQW4XY2Ocje0rpYA
|
||||
+zmVGUfP6Wg/H5+nfzNXquPMrDcJVZiB+KGlekfboqQ01dV1TUgvAoYY18OgCk3c
|
||||
e5my7o6mVOMaf+jAO2Dz7E2otpTp7kMePeqt4gSq84wuluk9UEiwNygA8RuERwo0
|
||||
+a3kZns1WMkGue4xvQiOPNB7vvc/AMTqxrbzLHhXNzBnGLc4BXs=
|
||||
=E7yG
|
||||
-----END PGP SIGNATURE-----
|
||||
151
qpdf.changes
151
qpdf.changes
@@ -1,3 +1,154 @@
|
||||
-------------------------------------------------------------------
|
||||
Tue Sep 9 18:35:56 UTC 2025 - Enrico Belleri <kilgore.trout@idesmi.eu>
|
||||
|
||||
- Enable Zopfli compression:
|
||||
still needs the user to manually set QPDF_ZOPFLI
|
||||
- build: enable SHOW_FAILED_TEST_OUTPUT, WERROR
|
||||
- rename package htmldoc to doc and move in the PDF documentation
|
||||
- doc obsoletes htmldoc
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Sep 3 10:59:55 UTC 2025 - pgajdos@suse.com
|
||||
|
||||
- version update to 12.2.0
|
||||
12.2.0: May 4, 2025
|
||||
- Upcoming C++ Version Change
|
||||
- This is expected to be the last minor release of qpdf to work
|
||||
with C++-17. We will be switching to C++-20 for 12.3.0.
|
||||
- Bug fixes
|
||||
- In ``QPDF::getAllPages`` detect shared ``/Kids`` arrays to avoid stack
|
||||
overflows in (specially constructed) damaged input files.
|
||||
- Fix severe performance issues in ``QPDFFormFieldObjectHelper`` with some
|
||||
(specially constructed) damaged input files.
|
||||
- Add missing ``QPDFFormFieldObjectHelper::isChecked`` implementation.
|
||||
- Fix bug in ``QPDFNameTreeObjectHelper`` / ``QPDFNumberTreeObjectHelper``.
|
||||
Under certain conditions tree insertions resulted in a ``/Range`` entry
|
||||
being written to the tree root node, which is not permitted. One of the
|
||||
possible consequences is that some readers would not recognize
|
||||
embedded / attached files.
|
||||
- In ``QPDFFormFieldObjectHelper::getChoices`` return the display string
|
||||
if an ``/Opt`` entry is a pair of export value and display string rather
|
||||
than a single string representing both values. Previously no value was
|
||||
returned if the entry was not a single string.
|
||||
- Other enhancements
|
||||
- More sanity checks have been added when files with damaged xref tables
|
||||
are recovered in order to avoid long runtimes and large memory use.
|
||||
Objects with with very large arrays or dictionaries (more than 5000
|
||||
elements) and duplicate pages are ignored as they are almost certainly
|
||||
invalid.
|
||||
12.1.0: April 6, 2025
|
||||
- Bug fixes
|
||||
- In ``QPDF::isLinearized`` return false if the first object in the file is
|
||||
not a linearization parameter dictionary or its ``/L`` entry is not an
|
||||
integer object. Previously the method returned false if the first
|
||||
dictionary object was not a linearization parameter dictionary.
|
||||
- Fix parsing of object streams containing objects not separated by
|
||||
white-space. Pre-2020 editions of the PDF specification incorrectly
|
||||
stated that white-space was required between objects. qpdf relied on this
|
||||
when parsing object streams.
|
||||
- Fix two object stream error/warning messages that reported the wrong
|
||||
object id.
|
||||
- Accept an array for ``rotate`` in qpdf job JSON since it is a
|
||||
repeatable option.
|
||||
- When reading an encrypted PDF with cleartext metadata, only
|
||||
expect top-level /Metadata to be clear-text. When writing an
|
||||
encrypted PDF with cleartext metadata, only leave top-level
|
||||
unencrypted. qpdf has always incorrectly handled all
|
||||
``/Metadata`` streams as special with cleartext metadata.
|
||||
- Library Enhancements
|
||||
- Add function ``Pl_DCT::make_compress_config`` to return a
|
||||
``Pl_DCT::CompressConfig`` unique pointer to a
|
||||
``CompressConfig`` from a ``std::function`` for a more modern
|
||||
configuration option.
|
||||
- CLI Enhancements
|
||||
- New :qpdf:ref:`--remove-structure` option to exclude the document
|
||||
structure tree from the output PDF.
|
||||
- New :qpdf:ref:`--jpeg-quality` option to set jpeg quality used
|
||||
with :qpdf:ref:`--optimize-images`.
|
||||
- Other enhancements
|
||||
- There have been further enhancements to how files with damaged xref
|
||||
tables are recovered.
|
||||
- Other changes
|
||||
- The ``QPDF::optimize`` method is believed to be not in use and has been
|
||||
deprecated. If you are relying on it please open a ticket_.
|
||||
- The parsing of object streams including the creation of error/warning
|
||||
messages and object descriptions has been refactored with some
|
||||
improvement both in runtime and memory usage.
|
||||
- There has been some refactoring of QPDFWriter including how object
|
||||
streams are written with some performance improvement.
|
||||
12.0.0: March 9, 2025
|
||||
- API breaking changes
|
||||
- The header file ``qpdf/QPDFObject.hh`` now generates an error if
|
||||
included. This is to prevent code that includes it from
|
||||
accidentally working because an old version is installed
|
||||
somewhere on the system. Instead of including that header,
|
||||
include ``<qpdf/Constants.h>``, and replace ``QPDFObject::ot_``
|
||||
with ``::ot_`` in your code.
|
||||
- The deprecated ``QPDFObjectHandle::replaceOrRemoveKey`` method has been
|
||||
removed since it was identical to ``QPDFObjectHandle::replaceKey``.
|
||||
- The deprecated ``JSON::checkDictionaryKeySeen`` function has been removed.
|
||||
If ``JSON::parse`` encounters duplicate keys the last value is silently
|
||||
accepted instead of throwing a runtime error. This is consistent with the
|
||||
JSON specification.
|
||||
- The deprecated versionless overload of ``QPDFObjectHandle::getJSON`` has
|
||||
been removed.
|
||||
- The deprecated ``Buffer`` copy constructor and assignment operator have
|
||||
been removed. ``Buffer`` copy operations are expensive as they always
|
||||
involve copying the buffer content. Use ``buffer2 = buffer1.copy();`` or
|
||||
``Buffer buffer2{buffer1.copy()};`` to make it explicit that copying is
|
||||
intended.
|
||||
- ``QIntC.hh`` contained the typo ``substract`` in function names,
|
||||
which has been fixed to ``subtract``.
|
||||
- The protected ``QPDFObjectHelper::oh`` data member has been replaced with
|
||||
the new accessor method ``QPDFObjectHelper::oh()``.
|
||||
- Except for abstract classes and the exceptions listed below, sub-classing of
|
||||
qpdf classes is not supported. These classes were never designed to be used as a
|
||||
base class and will be made final in version 13. If you have a use case for
|
||||
extending one of these classes, please open a ticket_.
|
||||
Exceptions:
|
||||
- ``QPDFDocumentHelper``
|
||||
- ``QPDFObjectHelper``
|
||||
- Upcasting to ``QPDFObjectHelper`` and ``QPDFDocumentHelper`` is not supported. Their
|
||||
destructors will be made protected in version 13.
|
||||
- Catching of logic errors thrown as the result of using an uninitialized
|
||||
``QPDFObjectHandle`` is not supported. In version 13 uninitialized object handles
|
||||
will be treated as immutable `shared null`_ objects. Using them will no longer throw
|
||||
any logic errors, but may where appropriate generate type warnings or exceptions.
|
||||
- CLI breaking Changes
|
||||
- To support the future introduction of sub-commands, the use of filenames without
|
||||
extension and path element as the first argument is no longer supported, and the
|
||||
result may change in the future. For example, ``qpdf check out.pdf`` currently
|
||||
copies the file ``check`` to ``out.pdf`` but may in future check ``out.pdf``.
|
||||
Use ``qpdf ./check out.pdf`` or ``qpdf -- check out.pdf`` instead.
|
||||
- Bug fixes
|
||||
- In object streams, ignore objects with invalid offset. Report objects with invalid
|
||||
id or offset.
|
||||
- Library Enhancements
|
||||
- ``QPDFObjectHandle`` supports move construction/assignment.
|
||||
This change is invisible to most developers but may break
|
||||
your code if you rely on specific behavior around how many
|
||||
references to a QPDFObjectHandle's underlying object exist. You
|
||||
would have to write code specifically to do that, so if you're not
|
||||
sure, then you shouldn't have to worry.
|
||||
- Most ``QPDFObjectHandle`` accessor methods are now ``const`` qualified.
|
||||
- ``QPDFObjectHandle`` and all object helper classes are now explicitly convertible
|
||||
to ``QPDFObjGen``, and therefore can be passed as parameter where a ``QPDFObjGen``
|
||||
is required. Redundant overloaded methods have been removed.
|
||||
- All object helper classes are now explicitly convertible to ``QPDFObjectHandle``.
|
||||
- Other Changes
|
||||
- The internal implementation of objects has been extensively refactored, using
|
||||
``std::variant`` to eliminate one level of indirection. This has saved one shared pointer
|
||||
per object with some improvement both in runtime and memory usage. A new class
|
||||
``BaseHandle`` has been added as common base class of both ``QPDFObjectHandle``
|
||||
and ``QPDFObjectHelper`` to provide common functionality appropriate for all
|
||||
object-handle-like classes such as the operator to convert to ``QPDFObjGen``.
|
||||
``BaseHandle`` is an implementation detail and not directly usable by library users.
|
||||
- There has been significant refactoring of how qpdf internally iterates over
|
||||
arrays and dictionaries.
|
||||
- The internal mechanism used to check object sizes for binary
|
||||
compatibility between releases has been changed. As such, the
|
||||
``CHECK_SIZES`` maintainer-only build option has been removed.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Jun 25 11:27:11 UTC 2025 - pgajdos@suse.com
|
||||
|
||||
|
||||
40
qpdf.spec
40
qpdf.spec
@@ -1,7 +1,7 @@
|
||||
#
|
||||
# spec file for package qpdf
|
||||
#
|
||||
# Copyright (c) 2025 SUSE LLC
|
||||
# Copyright (c) 2025 SUSE LLC and contributors
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
@@ -16,18 +16,19 @@
|
||||
#
|
||||
|
||||
|
||||
%define so_version 29
|
||||
%define so_version 30
|
||||
%bcond_without zopfli
|
||||
Name: qpdf
|
||||
Version: 11.10.1
|
||||
Version: 12.2.0
|
||||
Release: 0
|
||||
Summary: Command-line tools and library for transforming PDF files
|
||||
License: Apache-2.0
|
||||
Group: Development/Libraries/C and C++
|
||||
URL: https://qpdf.sourceforge.io/
|
||||
URL: https://qpdf.sourceforge.io
|
||||
Source: https://github.com/qpdf/qpdf/releases/download/v%{version}/qpdf-%{version}.tar.gz
|
||||
Source1: https://github.com/qpdf/qpdf/releases/download/v%{version}/qpdf-%{version}.tar.gz.asc
|
||||
Source2: qpdf.keyring
|
||||
BuildRequires: cmake
|
||||
BuildRequires: cmake >= 3.16
|
||||
BuildRequires: fdupes
|
||||
BuildRequires: gcc-c++
|
||||
BuildRequires: pkgconfig
|
||||
@@ -39,6 +40,9 @@ BuildRequires: texlive-latexmk
|
||||
BuildRequires: pkgconfig(gnutls)
|
||||
BuildRequires: pkgconfig(libjpeg)
|
||||
BuildRequires: pkgconfig(zlib)
|
||||
%if %{with zopfli}
|
||||
BuildRequires: cmake(Zopfli)
|
||||
%endif
|
||||
|
||||
%description
|
||||
QPDF is a program that does structural, content-preserving
|
||||
@@ -54,12 +58,13 @@ only used to create PDF files with special characteristics starting
|
||||
from other PDF files or to inspect or extract information from
|
||||
existing PDF files.
|
||||
|
||||
%package htmldoc
|
||||
%package doc
|
||||
Summary: Documentation files for qpdf
|
||||
Group: Documentation/HTML
|
||||
BuildArch: noarch
|
||||
Obsoletes: %{name}-htmldoc
|
||||
|
||||
%description htmldoc
|
||||
%description doc
|
||||
This package contains the documentation for qpdf
|
||||
|
||||
%package devel
|
||||
@@ -87,11 +92,16 @@ package.
|
||||
%build
|
||||
%global optflags %{optflags} -fexcess-precision=fast
|
||||
%cmake \
|
||||
-DSHOW_FAILED_TEST_OUTPUT=ON \
|
||||
-DWERROR=ON \
|
||||
-DBUILD_DOC=ON \
|
||||
-DBUILD_DOC_DIST=ON \
|
||||
-DBUILD_DOC_HTML=ON \
|
||||
-DBUILD_DOC_PDF=ON \
|
||||
-DCMAKE_INSTALL_DOCDIR='${datarootdir}'share/doc/packages/%{name}
|
||||
%if %{with zopfli}
|
||||
-DZOPFLI=ON \
|
||||
%endif
|
||||
%{?nil}
|
||||
%cmake_build
|
||||
|
||||
%check
|
||||
@@ -99,7 +109,7 @@ package.
|
||||
rm qpdf/qtest/specific-bugs.test
|
||||
rm qpdf/qtest/inline-images.test
|
||||
%endif
|
||||
%make_build -C build test
|
||||
%ctest
|
||||
|
||||
%install
|
||||
%cmake_install
|
||||
@@ -118,21 +128,23 @@ popd
|
||||
|
||||
%files
|
||||
%doc ChangeLog README-doc.txt
|
||||
%doc qpdf-manual.pdf
|
||||
%license Artistic-2.0 LICENSE.txt
|
||||
%{_bindir}/*
|
||||
%{_mandir}/man1/*
|
||||
%{_bindir}/{fix-qdf,qpdf,zlib-flate}
|
||||
%{_mandir}/man1/{fix-qdf,qpdf,zlib-flate}.1%{?ext_man}
|
||||
|
||||
%files htmldoc
|
||||
%files doc
|
||||
%doc %{_docdir}/%{name}/html
|
||||
%doc %{_docdir}/%{name}/singlehtml
|
||||
%doc %{_docdir}/%{name}/qpdf-manual.pdf
|
||||
|
||||
%files -n libqpdf%{so_version}
|
||||
%license Artistic-2.0 LICENSE.txt
|
||||
%{_libdir}/libqpdf.so.%{so_version}*
|
||||
|
||||
%files devel
|
||||
%doc %{_docdir}/%{name}/examples
|
||||
%{_includedir}/*
|
||||
%license Artistic-2.0 LICENSE.txt
|
||||
%{_includedir}/%{name}/
|
||||
%{_libdir}/pkgconfig/libqpdf.pc
|
||||
%{_libdir}/libqpdf.so
|
||||
%{_libdir}/cmake/qpdf
|
||||
|
||||
Reference in New Issue
Block a user