Opened 6 years ago
Closed 6 years ago
#14465 closed enhancement (fixed)
qpdf-10.1.0
| Reported by: | Bruce Dubbs | Owned by: | Douglas R. Reno |
|---|---|---|---|
| Priority: | normal | Milestone: | 10.1 |
| Component: | BOOK | Version: | SVN |
| Severity: | medium | Keywords: | |
| Cc: |
Description
New minor version.
Change History (3)
comment:1 by , 6 years ago
| Owner: | changed from to |
|---|---|
| Status: | new → assigned |
comment:2 by , 6 years ago
Note:
See TracTickets
for help on using tickets.

10.1.0: January 5, 2021 CLI Enhancements 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. Library Enhancements 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. Performance Enhancements 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. Bug Fixes 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.