- update to 10.5.0:
* Since qpdf version 8, using object accessor methods on an
instance of ``QPDFObjectHandle`` may create warnings if the
object is not of the expected type. These warnings now have an
error code of ``qpdf_e_object`` instead of
``qpdf_e_damaged_pdf``. Also, comments have been added to
:file:`QPDFObjectHandle.hh` to explain in more detail what the
behavior is. See :ref:`object-accessors` for a more in-depth
discussion.
* Add ``Pl_Buffer::getMallocBuffer()`` to initialize a buffer
allocated with ``malloc()`` for better cross-language
interoperability.
* Overhaul error handling for the object handle functions C API.
Some rare error conditions that would previously have caused a
crash are now trapped and reported, and the functions that
generate them return fallback values. See comments in the
``ERROR HANDLING`` section of :file:`include/qpdf/qpdf-c.h` for
details. In particular, exceptions thrown by the underlying C++
code when calling object accessors are caught and converted into
errors. The errors can be checked by calling ``qpdf_has_error``.
Use ``qpdf_silence_errors`` to prevent the error from being
written to stderr.
* Add ``qpdf_get_last_string_length`` to the C API to get the
length of the last string that was returned. This is needed to
handle strings that contain embedded null characters.
* Add ``qpdf_oh_is_initialized`` and
``qpdf_oh_new_uninitialized`` to the C API to make it possible
to work with uninitialized objects.
* Add ``qpdf_oh_new_object`` to the C API. This allows you to
clone an object handle.
OBS-URL: https://build.opensuse.org/request/show/943944
OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/qpdf?expand=0&rev=111
- update to 10.4.0:
* From the qpdf CLI, the --allow-weak-crypto is now required to suppress a
warning when explicitly creating PDF files using RC4 encryption. While qpdf
will always retain the ability to read and write such files, doing so will
require explicit acknowledgment moving forward. For qpdf 10.4, this change
only affects the command-line tool. Starting in qpdf 11, there will be
small API changes to require explicit acknowledgment in those cases as
well. For additional information, see Chapter 6, Weak Cryptography.
* Fix potential bounds error when handling shell completion that could occur
when given bogus input.
* Properly handle overlay/underlay on completely empty pages
* Fix crash that could occur under certain conditions when using --pages with
files that had form fields.
* Make QPDF::findPage functions public.
* Add methods to Pl_Flate to be able to receive warnings on certain recoverable
conditions.
* Add an extra check to the library to detect when foreign objects are inserted
directly (instead of using QPDF::copyForeignObject) at the time of insertion
rather than when the file is written. Catching the error sooner makes it much
easier to locate the incorrect code.
* Improve diagnostics around parsing --pages command-line options
OBS-URL: https://build.opensuse.org/request/show/934176
OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/qpdf?expand=0&rev=110
- Update to version 9.1.1
* fix-qdf is rewritten in C++
* Added options --is-encrypted and --requires-password for testing
whether a file is encrypted or requires a password other than
the supplied (or empty) password.
* Added encrypt key to JSON options. With the exception of the
reconstructed user password for older encryption formats,
this provides the same information as --show-encryption but in
a consistent, parseable format. See output of qpdf --json-help
for details.
* In QDF mode, be sure not to write more than one XRef stream to a
file, even when --preserve-unreferenced is used. fix-qdf
assumes that there is only one XRef stream, and that it appears
at the end of the file.
* When externalizing inline images, properly handle images whose
color space is a reference to an object in the page's resource
dictionary.
OBS-URL: https://build.opensuse.org/request/show/767599
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/qpdf?expand=0&rev=46
* fix-qdf is rewritten in C++
* Added options --is-encrypted and --requires-password for testing
whether a file is encrypted or requires a password other than
the supplied (or empty) password.
* Added encrypt key to JSON options. With the exception of the
reconstructed user password for older encryption formats,
this provides the same information as --show-encryption but in
a consistent, parseable format. See output of qpdf --json-help
for details.
* In QDF mode, be sure not to write more than one XRef stream to a
file, even when --preserve-unreferenced is used. fix-qdf
assumes that there is only one XRef stream, and that it appears
at the end of the file.
* When externalizing inline images, properly handle images whose
color space is a reference to an object in the page's resource
dictionary.
OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/qpdf?expand=0&rev=88
- Update to version 9.1.0
* Incorporate contribution from Masamichi Hosoda to properly handle
signature dictionaries by not including them in object streams,
formatting the Contents key has a hexadecimal string,
and excluding the /Contents key from encryption and decryption.
* Incorporate contribution from Masamichi Hosoda to provide new API
calls for getting file-level information about input and output files,
enabling certain operations on the files at the file level rather
than the object level. New methods include QPDF::getXRefTable(),
QPDFObjectHandle::getParsedOffset(),
QPDFWriter::getRenumberedObjGen(QPDFObjGen),
and QPDFWriter::getWrittenXRefTable().
* Support build-time and runtime selectable crypto providers.
This includes the addition of new classes QPDFCryptoProvider
and QPDFCryptoImpl and the recognition of the QPDF_CRYPTO_PROVIDER
environment variable. Crypto providers are described in depth
in Section 2.3, “Crypto Providers”.
* Addition of the --show-crypto option in support of selectable
crypto providers, as described in Section 2.3, “Crypto Providers”.
* Allow :even or :odd to be appended to numeric ranges for
specification of the even or odd pages from among the pages
specified in the range.
* Add BR on pkgconfig(gnutls) to add support for GnuTLS for encryption
operations.
OBS-URL: https://build.opensuse.org/request/show/749120
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/qpdf?expand=0&rev=45
* Incorporate contribution from Masamichi Hosoda to properly handle
signature dictionaries by not including them in object streams,
formatting the Contents key has a hexadecimal string,
and excluding the /Contents key from encryption and decryption.
* Incorporate contribution from Masamichi Hosoda to provide new API
calls for getting file-level information about input and output files,
enabling certain operations on the files at the file level rather
than the object level. New methods include QPDF::getXRefTable(),
QPDFObjectHandle::getParsedOffset(),
QPDFWriter::getRenumberedObjGen(QPDFObjGen),
and QPDFWriter::getWrittenXRefTable().
* Support build-time and runtime selectable crypto providers.
This includes the addition of new classes QPDFCryptoProvider
and QPDFCryptoImpl and the recognition of the QPDF_CRYPTO_PROVIDER
environment variable. Crypto providers are described in depth
in Section 2.3, “Crypto Providers”.
* Addition of the --show-crypto option in support of selectable
crypto providers, as described in Section 2.3, “Crypto Providers”.
* Allow :even or :odd to be appended to numeric ranges for
specification of the even or odd pages from among the pages
specified in the range.
* Add BR on pkgconfig(gnutls) to add support for GnuTLS for encryption
operations.
OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/qpdf?expand=0&rev=86
- Update to version 8.2.1
Command-line Enchancements
* Add --keep-files-open=[yn] to override default determination
of whether to keep files open when merging.
- Update to version 8.2.0
Command-line Enhancements
* Add --no-warn option to suppress issuing warning messages.
If there are any conditions that would have caused warnings
to be issued, the exit status is still 3.
Bug fixesd and Optimizations
* Performance fix: optimize page merging operation to avoid
unnecessary open/close calls on files being merged. This
solves a dramatic slow-down that was observed when merging
certain types of files.
* Optimize how memory was used for the TIFF predictor,
drastically improving performance and memory usage for files
containing high-resolution images compressed with Flate
using the TIFF predictor.
* Bug fix: end of line characters were not properly handled
inside strings in some cases.
* Bug fix: using --progress on very small files could cause
an infinite loop.
API enhancements
* Add new class QPDFSystemError, derived from std::runtime_error,
which is now thrown by QUtil::throw_system_error. This enables
the triggering errno value to be retrieved.
* Add ClosedFileInputSource::stayOpen method, enabling a
ClosedFileInputSource to stay open during manually indicated
periods of high activity, thus reducing the overhead of
frequent open/close operations.
OBS-URL: https://build.opensuse.org/request/show/630484
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/qpdf?expand=0&rev=37
Command-line Enchancements
* Add --keep-files-open=[yn] to override default determination
of whether to keep files open when merging.
- Update to version 8.2.0
Command-line Enhancements
* Add --no-warn option to suppress issuing warning messages.
If there are any conditions that would have caused warnings
to be issued, the exit status is still 3.
Bug fixesd and Optimizations
* Performance fix: optimize page merging operation to avoid
unnecessary open/close calls on files being merged. This
solves a dramatic slow-down that was observed when merging
certain types of files.
* Optimize how memory was used for the TIFF predictor,
drastically improving performance and memory usage for files
containing high-resolution images compressed with Flate
using the TIFF predictor.
* Bug fix: end of line characters were not properly handled
inside strings in some cases.
* Bug fix: using --progress on very small files could cause
an infinite loop.
API enhancements
* Add new class QPDFSystemError, derived from std::runtime_error,
which is now thrown by QUtil::throw_system_error. This enables
the triggering errno value to be retrieved.
* Add ClosedFileInputSource::stayOpen method, enabling a
ClosedFileInputSource to stay open during manually indicated
periods of high activity, thus reducing the overhead of
frequent open/close operations.
OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/qpdf?expand=0&rev=70
- Update to version 8.1.0
Usability improvements:
* When splitting files, qpdf detects fonts and images that the
document metadata claims are referenced from a page but are
not actually referenced and omits them from the output file.
* When merging multiple PDF files, qpdf no longer leaves all
the files open.
* The --rotate option's syntax has been extended to make the
page range optional. If you specify --rotate=angle without
specifying a page range, the rotation will be applied to
all pages.
* When merging multiple files, the --verbose option now prints
information about each file as it operates on that file.
* When the --progress option is specified, qpdf will print a
running indicator of its best guess at how far through the
writing process it is.
Bug fixes:
* Properly decrypt files that use revision 3 of the standard
security handler but use 40 bit keys
(even though revision 3 supports 128-bit keys).
* Limit depth of nested data structures to prevent crashes
from certain types of malformed (malicious) PDFs.
* In “newline before endstream” mode, insert the required
extra newline before the endstream at the end of object streams.
Please see included ChangeLog for complete changelog including
API changes.
OBS-URL: https://build.opensuse.org/request/show/619138
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/qpdf?expand=0&rev=36
Usability improvements:
* When splitting files, qpdf detects fonts and images that the
document metadata claims are referenced from a page but are
not actually referenced and omits them from the output file.
* When merging multiple PDF files, qpdf no longer leaves all
the files open.
* The --rotate option's syntax has been extended to make the
page range optional. If you specify --rotate=angle without
specifying a page range, the rotation will be applied to
all pages.
* When merging multiple files, the --verbose option now prints
information about each file as it operates on that file.
* When the --progress option is specified, qpdf will print a
running indicator of its best guess at how far through the
writing process it is.
Bug fixes:
* Properly decrypt files that use revision 3 of the standard
security handler but use 40 bit keys
(even though revision 3 supports 128-bit keys).
* Limit depth of nested data structures to prevent crashes
from certain types of malformed (malicious) PDFs.
* In “newline before endstream” mode, insert the required
extra newline before the endstream at the end of object streams.
Please see included ChangeLog for complete changelog including
API changes.
OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/qpdf?expand=0&rev=68