I am happy to announce the release of qpdf 11.0.0. This is the most significant release for qpdf in a long time. The list of changes is too large to include here, so please the release notes at https://qpdf.readthedocs.io/en/stable/release-notes.html for a full list. Downloads are available at https://github.com/qpdf/qpdf/releases/tag/v11.0.0.
Here are some highlights:
* qpdf JSON v2 -- a complete, unambiguous representation of PDF file contents using JSON with bidirectional conversion between PDF and JSON.
* A new build with cmake replaces the autoconf + home-grown Makefile-based build.
* All shared pointers are now standard library shared pointers instead of qpdf's own (now deprecated) PointerHolder. A backward-compatible PointerHolder is provided along with detailed information about migrating your code.
* Significant performance improvements mostly thanks to major refactoring work done by M. Holger. The QPDF lexical and parsing layers have been largely rewritten. There has also be a major refactoring of the internal QPDF Object representation which contributes not only to increased performance but has also made it possible to detect when a QPDFObjectHandle is associated with a QPDF object that has been destroyed.
* A new logging facility makes it possible for library users to have better control over where messages go. There should be no more cases of error or warning messages or other types of output sneaking past attempts to redirect or capture output.
This list doesn't even mention some of the changes, so be sure to check out the release notes. |