Opened 7 months ago
Closed 7 months ago
New minor version.
10.1.0: January 5, 2021
Add --flatten-rotation command-line option, which causes all pages that are rotated using parameters in the page's dictionary to instead be identically rotated in the page's contents. The change is not user-visible for compliant PDF readers but can be used to work around broken PDF applications that don't properly handle page rotation.
Support for user-provided (pluggable, modular) stream filters. It is now possible to derive a class from QPDFStreamFilter and register it with QPDF so that regular library methods, including those used by QPDFWriter, can decode streams with filters not directly supported by the library. The example examples/pdf-custom-filter.cc illustrates how to use this capability.
Add methods to QPDFPageObjectHelper to iterate through XObjects on a page or form XObjects, possibly recursing into nested form XObjects: forEachXObject, ForEachImage, forEachFormXObject.
Enhance several methods in QPDFPageObjectHelper to work with form XObjects as well as pages, as noted in comments. See ChangeLog for a full list.
Rename some functions in QPDFPageObjectHelper, while keeping old names for compatibility:
getPageImages to getImages
filterPageContents to filterContents
pipePageContents to pipeContents
parsePageContents to parseContents
Add method QPDFPageObjectHelper::getFormXObjects to return a map of form XObjects directly on a page or form XObject
Add new helper methods to QPDFObjectHandle: isFormXObject, isImage
Add the optional allow_streams parameter QPDFObjectHandle::makeDirect. When QPDFObjectHandle::makeDirect is called in this way, it preserves references to streams rather than throwing an exception.
Add QPDFObjectHandle::setFilterOnWrite method. Calling this on a stream prevents QPDFWriter from attempting to uncompress, recompress, or otherwise filter a stream even if it could. Developers can use this to protect streams that are optimized should be protected from QPDFWriter's default behavior for any other reason.
Add ostream << operator for QPDFObjGen. This is useful to have for debugging.
Add method QPDFPageObjectHelper::flattenRotation, which replaces a page's /Rotate keyword by rotating the page within the content stream and altering the page's bounding boxes so the rendering is the same. This can be used to work around buggy PDF readers that can't properly handle page rotation.
C API Enhancements
Add several new functions to the C API for working with objects. These are wrappers around many of the methods in QPDFObjectHandle. Their inclusion adds considerable new capability to the C API.
Add qpdf_register_progress_reporter to the C API, corresponding to QPDFWriter::registerProgressReporter.
Improve steps QPDFWriter takes to prepare a QPDF object for writing, resulting in about an 8% improvement in write performance while allowing indirect objects to appear in /DecodeParms.
When extracting pages, the qpdf CLI only removes unreferenced resources from the pages that are being kept, resulting in a significant performance improvement when extracting small numbers of pages from large, complex documents.
QPDFPageObjectHelper::externalizeInlineImages was not externalizing images referenced from form XObjects that appeared on the page.
QPDFObjectHandle::filterPageContents was broken for pages with multiple content streams.
Tweak zsh completion code to behave a little better with respect to path completion.
Fixed at r24093
Powered by Trac 1.5.3.dev0
By Edgewall Software
© 1998-2021 Gerard Beekmans.