Commit ddd889af9d21c4cb6b3cf74ec750a3340217567c
1 parent
4325e6e4
Fix release notes and ChangeLog for 11.2
Showing
3 changed files
with
49 additions
and
15 deletions
ChangeLog
| 1 | +2022-11-20 Jay Berkenbilt <ejb@ql.org> | ||
| 2 | + | ||
| 3 | + * Add a few convenience methods to QPDFTokenizer::Token for | ||
| 4 | + checking token types. thanks to M. Holger for the contribution. | ||
| 5 | + | ||
| 6 | + * Add stream creation methods to the QPDF class as a better | ||
| 7 | + alternative to the ones in the QPDFObjectHandle class. Thanks to | ||
| 8 | + M. Holger for the contribution. | ||
| 9 | + | ||
| 1 | 2022-11-19 Jay Berkenbilt <ejb@ql.org> | 10 | 2022-11-19 Jay Berkenbilt <ejb@ql.org> |
| 2 | 11 | ||
| 3 | * Bug fix: handle special case of an earlier xref stream object's | 12 | * Bug fix: handle special case of an earlier xref stream object's |
| @@ -18,6 +27,8 @@ | @@ -18,6 +27,8 @@ | ||
| 18 | 27 | ||
| 19 | * Change minimum required C++ version from C++-14 to C++-17. | 28 | * Change minimum required C++ version from C++-14 to C++-17. |
| 20 | 29 | ||
| 30 | + * Fix another symbol export issue with the MinGW build. | ||
| 31 | + | ||
| 21 | 2022-10-01 Jay Berkenbilt <ejb@ql.org> | 32 | 2022-10-01 Jay Berkenbilt <ejb@ql.org> |
| 22 | 33 | ||
| 23 | * 11.1.1: release | 34 | * 11.1.1: release |
include/qpdf/QPDFObjectHandle.hh
| @@ -616,34 +616,41 @@ class QPDFObjectHandle | @@ -616,34 +616,41 @@ class QPDFObjectHandle | ||
| 616 | QPDF_DLL | 616 | QPDF_DLL |
| 617 | static QPDFObjectHandle newFromMatrix(QPDFMatrix const&); | 617 | static QPDFObjectHandle newFromMatrix(QPDFMatrix const&); |
| 618 | 618 | ||
| 619 | + // Note: new stream creation methods have were added to the QPDF | ||
| 620 | + // class starting with version 11.2.0. The ones in this class are | ||
| 621 | + // here for backward compatibility. | ||
| 622 | + | ||
| 619 | // Create a new stream and associate it with the given qpdf | 623 | // Create a new stream and associate it with the given qpdf |
| 620 | - // object. A subsequent call must be made to replaceStreamData() | ||
| 621 | - // to provide data for the stream. The stream's dictionary may be | 624 | + // object. A subsequent call must be made to replaceStreamData() |
| 625 | + // to provide data for the stream. The stream's dictionary may be | ||
| 622 | // retrieved by calling getDict(), and the resulting dictionary | 626 | // retrieved by calling getDict(), and the resulting dictionary |
| 623 | - // may be modified. Alternatively, you can create a new | ||
| 624 | - // dictionary and call replaceDict to install it. | 627 | + // may be modified. Alternatively, you can create a new dictionary |
| 628 | + // and call replaceDict to install it. From QPDF 11.2, you can | ||
| 629 | + // call QPDF::newStream() instead. | ||
| 625 | QPDF_DLL | 630 | QPDF_DLL |
| 626 | static QPDFObjectHandle newStream(QPDF* qpdf); | 631 | static QPDFObjectHandle newStream(QPDF* qpdf); |
| 627 | 632 | ||
| 628 | // Create a new stream and associate it with the given qpdf | 633 | // Create a new stream and associate it with the given qpdf |
| 629 | - // object. Use the given buffer as the stream data. The stream | 634 | + // object. Use the given buffer as the stream data. The stream |
| 630 | // dictionary's /Length key will automatically be set to the size | 635 | // dictionary's /Length key will automatically be set to the size |
| 631 | - // of the data buffer. If additional keys are required, the | 636 | + // of the data buffer. If additional keys are required, the |
| 632 | // stream's dictionary may be retrieved by calling getDict(), and | 637 | // stream's dictionary may be retrieved by calling getDict(), and |
| 633 | - // the resulting dictionary may be modified. This method is just | ||
| 634 | - // a convenient wrapper around the newStream() and | ||
| 635 | - // replaceStreamData(). It is a convenience methods for streams | ||
| 636 | - // that require no parameters beyond the stream length. Note that | 638 | + // the resulting dictionary may be modified. This method is just a |
| 639 | + // convenient wrapper around the newStream() and | ||
| 640 | + // replaceStreamData(). It is a convenience methods for streams | ||
| 641 | + // that require no parameters beyond the stream length. Note that | ||
| 637 | // you don't have to deal with compression yourself if you use | 642 | // you don't have to deal with compression yourself if you use |
| 638 | - // QPDFWriter. By default, QPDFWriter will automatically compress | ||
| 639 | - // uncompressed stream data. Example programs are provided that | ||
| 640 | - // illustrate this. | 643 | + // QPDFWriter. By default, QPDFWriter will automatically compress |
| 644 | + // uncompressed stream data. Example programs are provided that | ||
| 645 | + // illustrate this. From QPDF 11.2, you can call QPDF::newStream() | ||
| 646 | + // instead. | ||
| 641 | QPDF_DLL | 647 | QPDF_DLL |
| 642 | static QPDFObjectHandle newStream(QPDF* qpdf, std::shared_ptr<Buffer> data); | 648 | static QPDFObjectHandle newStream(QPDF* qpdf, std::shared_ptr<Buffer> data); |
| 643 | 649 | ||
| 644 | - // Create new stream with data from string. This method will | 650 | + // Create new stream with data from string. This method will |
| 645 | // create a copy of the data rather than using the user-provided | 651 | // create a copy of the data rather than using the user-provided |
| 646 | // buffer as in the std::shared_ptr<Buffer> version of newStream. | 652 | // buffer as in the std::shared_ptr<Buffer> version of newStream. |
| 653 | + // From QPDF 11.2, you can call QPDF::newStream() instead. | ||
| 647 | QPDF_DLL | 654 | QPDF_DLL |
| 648 | static QPDFObjectHandle newStream(QPDF* qpdf, std::string const& data); | 655 | static QPDFObjectHandle newStream(QPDF* qpdf, std::string const& data); |
| 649 | 656 |
manual/release-notes.rst
| @@ -8,18 +8,34 @@ For a detailed list of changes, please see the file | @@ -8,18 +8,34 @@ For a detailed list of changes, please see the file | ||
| 8 | 8 | ||
| 9 | .. x.y.z: not yet released | 9 | .. x.y.z: not yet released |
| 10 | 10 | ||
| 11 | -11.2.0: not yet released | 11 | +11.2.0: November 20, 2022 |
| 12 | - Build changes | 12 | - Build changes |
| 13 | 13 | ||
| 14 | - A C++-17 compiler is now required. | 14 | - A C++-17 compiler is now required. |
| 15 | 15 | ||
| 16 | + - Library enhancements | ||
| 17 | + | ||
| 18 | + - Move stream creation functions in the ``QPDF`` object where they | ||
| 19 | + belong. The ones in ``QPDFObjectHandle`` are not deprecated and | ||
| 20 | + will stick around. | ||
| 21 | + | ||
| 22 | + - Add some convenience methods to ``QPDFTokenizer::Token`` for | ||
| 23 | + testing token types. This is part of qpdf's lexical layer and | ||
| 24 | + will not be needed by most developers. | ||
| 25 | + | ||
| 16 | - Bug fixes | 26 | - Bug fixes |
| 17 | 27 | ||
| 28 | + - Fix issue with missing symbols in the mingw build. | ||
| 29 | + | ||
| 18 | - Fix major performance bug with the OpenSSL crypto provider. This | 30 | - Fix major performance bug with the OpenSSL crypto provider. This |
| 19 | bug was causing a 6x to 12x slowdown for encrypted files when | 31 | bug was causing a 6x to 12x slowdown for encrypted files when |
| 20 | OpenSSL 3 was in use. This includes the default Windows builds | 32 | OpenSSL 3 was in use. This includes the default Windows builds |
| 21 | distributed with the qpdf release. | 33 | distributed with the qpdf release. |
| 22 | 34 | ||
| 35 | + - Fix obscure bug involving appended files that reuse an object | ||
| 36 | + number that was used as a cross reference stream in an earlier | ||
| 37 | + stage of the file. | ||
| 38 | + | ||
| 23 | 11.1.1: October 1, 2022 | 39 | 11.1.1: October 1, 2022 |
| 24 | - Bug fixes | 40 | - Bug fixes |
| 25 | 41 |