Opened 2 years ago

Closed 23 months ago

#14465 closed enhancement (fixed)


Reported by: Bruce Dubbs Owned by: Douglas R. Reno
Priority: normal Milestone: 10.1
Component: BOOK Version: SVN
Severity: normal Keywords:


New minor version.

Change History (3)

comment:1 by Douglas R. Reno, 2 years ago

Owner: changed from blfs-book to Douglas R. Reno
Status: newassigned

comment:2 by Douglas R. Reno, 23 months ago

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/ 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. 

comment:3 by Douglas R. Reno, 23 months ago

Resolution: fixed
Status: assignedclosed

Fixed at r24093

Note: See TracTickets for help on using tickets.