From ddd889af9d21c4cb6b3cf74ec750a3340217567c Mon Sep 17 00:00:00 2001 From: Jay Berkenbilt Date: Sun, 20 Nov 2022 15:33:13 -0500 Subject: Fix release notes and ChangeLog for 11.2 --- ChangeLog | 11 +++++++++++ include/qpdf/QPDFObjectHandle.hh | 35 +++++++++++++++++++++-------------- manual/release-notes.rst | 18 +++++++++++++++++- 3 files changed, 49 insertions(+), 15 deletions(-) diff --git a/ChangeLog b/ChangeLog index bb2293ae..a1f7ef96 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2022-11-20 Jay Berkenbilt + + * Add a few convenience methods to QPDFTokenizer::Token for + checking token types. thanks to M. Holger for the contribution. + + * Add stream creation methods to the QPDF class as a better + alternative to the ones in the QPDFObjectHandle class. Thanks to + M. Holger for the contribution. + 2022-11-19 Jay Berkenbilt * Bug fix: handle special case of an earlier xref stream object's @@ -18,6 +27,8 @@ * Change minimum required C++ version from C++-14 to C++-17. + * Fix another symbol export issue with the MinGW build. + 2022-10-01 Jay Berkenbilt * 11.1.1: release diff --git a/include/qpdf/QPDFObjectHandle.hh b/include/qpdf/QPDFObjectHandle.hh index f8bcb055..bf0da746 100644 --- a/include/qpdf/QPDFObjectHandle.hh +++ b/include/qpdf/QPDFObjectHandle.hh @@ -616,34 +616,41 @@ class QPDFObjectHandle QPDF_DLL static QPDFObjectHandle newFromMatrix(QPDFMatrix const&); + // Note: new stream creation methods have were added to the QPDF + // class starting with version 11.2.0. The ones in this class are + // here for backward compatibility. + // Create a new stream and associate it with the given qpdf - // object. A subsequent call must be made to replaceStreamData() - // to provide data for the stream. The stream's dictionary may be + // object. A subsequent call must be made to replaceStreamData() + // to provide data for the stream. The stream's dictionary may be // retrieved by calling getDict(), and the resulting dictionary - // may be modified. Alternatively, you can create a new - // dictionary and call replaceDict to install it. + // may be modified. Alternatively, you can create a new dictionary + // and call replaceDict to install it. From QPDF 11.2, you can + // call QPDF::newStream() instead. QPDF_DLL static QPDFObjectHandle newStream(QPDF* qpdf); // Create a new stream and associate it with the given qpdf - // object. Use the given buffer as the stream data. The stream + // object. Use the given buffer as the stream data. The stream // dictionary's /Length key will automatically be set to the size - // of the data buffer. If additional keys are required, the + // of the data buffer. If additional keys are required, the // stream's dictionary may be retrieved by calling getDict(), and - // the resulting dictionary may be modified. This method is just - // a convenient wrapper around the newStream() and - // replaceStreamData(). It is a convenience methods for streams - // that require no parameters beyond the stream length. Note that + // the resulting dictionary may be modified. This method is just a + // convenient wrapper around the newStream() and + // replaceStreamData(). It is a convenience methods for streams + // that require no parameters beyond the stream length. Note that // you don't have to deal with compression yourself if you use - // QPDFWriter. By default, QPDFWriter will automatically compress - // uncompressed stream data. Example programs are provided that - // illustrate this. + // QPDFWriter. By default, QPDFWriter will automatically compress + // uncompressed stream data. Example programs are provided that + // illustrate this. From QPDF 11.2, you can call QPDF::newStream() + // instead. QPDF_DLL static QPDFObjectHandle newStream(QPDF* qpdf, std::shared_ptr data); - // Create new stream with data from string. This method will + // Create new stream with data from string. This method will // create a copy of the data rather than using the user-provided // buffer as in the std::shared_ptr version of newStream. + // From QPDF 11.2, you can call QPDF::newStream() instead. QPDF_DLL static QPDFObjectHandle newStream(QPDF* qpdf, std::string const& data); diff --git a/manual/release-notes.rst b/manual/release-notes.rst index d946dd37..aaf78f3d 100644 --- a/manual/release-notes.rst +++ b/manual/release-notes.rst @@ -8,18 +8,34 @@ For a detailed list of changes, please see the file .. x.y.z: not yet released -11.2.0: not yet released +11.2.0: November 20, 2022 - Build changes - A C++-17 compiler is now required. + - Library enhancements + + - Move stream creation functions in the ``QPDF`` object where they + belong. The ones in ``QPDFObjectHandle`` are not deprecated and + will stick around. + + - Add some convenience methods to ``QPDFTokenizer::Token`` for + testing token types. This is part of qpdf's lexical layer and + will not be needed by most developers. + - Bug fixes + - Fix issue with missing symbols in the mingw build. + - Fix major performance bug with the OpenSSL crypto provider. This bug was causing a 6x to 12x slowdown for encrypted files when OpenSSL 3 was in use. This includes the default Windows builds distributed with the qpdf release. + - Fix obscure bug involving appended files that reuse an object + number that was used as a cross reference stream in an earlier + stage of the file. + 11.1.1: October 1, 2022 - Bug fixes -- cgit v1.2.3-54-g00ecf