-
Give objects descriptions and context so it is possible to issue warnings instead of fatal errors for attempts to access objects of the wrong type.
-
This is useful only for debugging the linearization code.
-
Add options to enable the raw encryption key to be directly shown or specified. Thanks to Didier Stevens <didier.stevens@gmail.com> for the idea and contribution of one implementation of this idea.
-
The Apache License version 2.0 is now the primary license for qpdf. However, users may, at their option, continue to use Artistic version 2.0.
-
Tweak the message so that we inform the user that we are mitigating data loss.
-
Replace the old msys, mingw-w64, ActiveState perl setup with MSYS2. This greatly simplifies the Windows build. This was facilitated by the need to incorporate JPEG.
-
Also update maintainer documentation on binary compatibility testing.
-
For non-encrypted files, determinstic ID generation uses file contents instead of timestamp and file name. At a small runtime cost, this enables generation of the same /ID if the same inputs are converted in the same way multiple times.
-
There have been a few enhancements requested that only affect the qpdf command line tool and that should be relatively quick to implement. Work out the details and acknowledge these publicly in the TODO file.
-
Pushing inherited objects to pages and getting all pages were both prone to stack overflow infinite loops if there were loops in the Pages dictionary. There is a general weakness in the code in that any part of the code that traverses the Pages structure would be prone to this and would have to implement its own loop detection. A more robust fix may provide some general method for handling the Pages structure, but it's probably not worth doing. Note: addition of *Internal2 private functions was done rather than changing signatures of existing methods to avoid breaking compatibility.
-
Also remove some trivial, non-functional code.
-
If not available, give an error. The user may also configure qpdf to use an insecure random number generator.
-
4.2.0 was binary incompatible in spite of there being no deletions or changes to any public methods. As such, we have to bump the ABI and are fixing some API breakage while we're at it. Previous 4.3.0 target is now 5.1.0.