Path to this page:
Subject: CVS commit: pkgsrc/print/qpdf
From: Ryo ONODERA
Date: 2018-07-16 01:37:37
Message id: 20180715233737.AC776FBEC@cvs.NetBSD.org
Log Message:
Update to 8.1.0
Changelog:
8.1.0: June 23, 2018
Usability Improvements
When splitting files, qpdf detects fonts and images that the \
document metadata claims are referenced from a page but are not actually \
referenced and omits them from the output file. This change can cause a \
significant reduction in the size of split PDF files for files created by some \
software packages. Prior versions of qpdf would believe the document metadata \
and sometimes include all the images from all the other pages even though the \
pages were no longer present. In the unlikely event that the old behavior should \
be desired, it can be enabled by specifying --preserve-unreferenced-resources. \
For additional details, please see Section 3.6, “Advanced Transformation \
Options”.
When merging multiple PDF files, qpdf no longer leaves all the files \
open. This makes it possible to merge numbers of files that may exceed the \
operating system's limit for the maximum number of open files.
The --rotate option's syntax has been extended to make the page \
range optional. If you specify --rotate=angle without specifying a page range, \
the rotation will be applied to all pages. This can be especially useful for \
adjusting a PDF created from a multi-page document that was scanned upside down.
When merging multiple files, the --verbose option now prints \
information about each file as it operates on that file.
When the --progress option is specified, qpdf will print a running \
indicator of its best guess at how far through the writing process it is. Note \
that, as with all progress meters, it's an approximation. This option is \
implemented in a way that makes it useful for software that uses the qpdf \
library; see API Enhancements below.
Bug Fixes
Properly decrypt files that use revision 3 of the standard security \
handler but use 40 bit keys (even though revision 3 supports 128-bit keys).
Limit depth of nested data structures to prevent crashes from \
certain types of malformed (malicious) PDFs.
In “newline before endstream” mode, insert the required extra \
newline before the endstream at the end of object streams. This one case was \
previously omitted.
API Enhancements
The first round of higher level “helper” interfaces has been \
introduced. These are designed to provide a more convenient way of interacting \
with certain document features than using QPDFObjectHandle directly. For details \
on helpers, see Section 6.3, “Helper Classes”. Specific additional \
interfaces are described below.
Add two new document helper classes: QPDFPageDocumentHelper for \
working with pages, and QPDFAcroFormDocumentHelper for working with interactive \
forms. No old methods have been removed, but QPDFPageDocumentHelper is now the \
preferred way to perform operations on pages rather than calling the old methods \
in QPDFObjectHandle and QPDF directly. Comments in the header files direct you \
to the new interfaces. Please see the header files and ChangeLog for additional \
details.
Add three new object helper class: QPDFPageObjectHelper for pages, \
QPDFFormFieldObjectHelper for interactive form fields, and \
QPDFAnnotationObjectHelper for annotations. All three classes are fairly sparse \
at the moment, but they have some useful, basic functionality.
A new example program examples/pdf-set-form-values.cc has been added \
that illustrates use of the new document and object helpers.
The method QPDFWriter::registerProgressReporter has been added. This \
method allows you to register a function that is called by QPDFWriter to update \
your idea of the percentage it thinks it is through writing its output. Client \
programs can use this to implement reasonably accurate progress meters. The qpdf \
command line tool uses this to implement its --progress option.
New methods QPDFObjectHandle::newUnicodeString and \
QPDFObject::unparseBinary have been added to allow for more convenient creation \
of strings that are explicitly encoded using big-endian UTF-16. This is useful \
for creating strings that appear outside of content streams, such as labels, \
form fields, outlines, document metadata, etc.
A new class QPDFObjectHandle::Rectangle has been added to ease \
working with PDF rectangles, which are just arrays of four numeric values.
Files: