-
A bug was fixed between qpdf 8.4.2 and 9.0.0 regarding this type of file (see #305 and #311), but it was necessary to retest after some major refactoring work at the lexical and parsing layers. This lays the groundwork for including this in performance benchmarks and in the qpdf test suite rather than having to keep a large, non-redistributable file around. 20 arrays of 20K nulls is plenty for performance memory testing and doesn't take too long to run. Compared to qpdf 8.4.2, in qpdf 11.0.0, the file generated here uses 3% of the RAM and runs over 4 times faster.
-
This results in measurable performance improvements to packaged binary libqpdf distributions. QTC remains available for library users and is still selectively enabled in CI.
-
It turns out that QUtil::get_env is particularly expensive on Windows if there is a large environment. This may be true on other platforms as well.
-
Now --json-output just changes defaults. Allow output file with --json.
-
from "qpdf-v2" to "qpdf": [..., ...]
-
Add additional parameters that will be needed to call QPDF::writeJSON in partial mode.
-
When the schema wants a variable-length array, allow a single item as well as allowing an array.
-
Remove any ambiguity around whether old or new value is being returned.
-
We need to know whether pushInheritedAttributesToPage or getAllPages have been called when generating JSON output. When reading the JSON back in, we have to call the same methods so that object numbers will line up properly.
-
When there is no context for writing output or error messages, use the default logger.
-
This includes the output PDF, streams from --show-object and attachments from --save-attachment. This also enables --verbose and --progress to work with saving to stdout.