mirror of
https://github.com/qpdf/qpdf.git
synced 2025-01-05 08:02:11 +00:00
Prepare 8.1.0 release
This commit is contained in:
parent
92ca2a41bc
commit
1bd2a2e79b
10
ChangeLog
10
ChangeLog
@ -1,5 +1,13 @@
|
|||||||
|
2018-06-23 Jay Berkenbilt <ejb@ql.org>
|
||||||
|
|
||||||
|
* 8.1.0: release
|
||||||
|
|
||||||
2018-06-22 Jay Berkenbilt <ejb@ql.org>
|
2018-06-22 Jay Berkenbilt <ejb@ql.org>
|
||||||
|
|
||||||
|
* Bug fix: properly decrypt files with 40-bit keys that use
|
||||||
|
revision 3 of the security handler. Prior to this, qpdf was
|
||||||
|
reporting "invalid password" in this case. Fixes #212.
|
||||||
|
|
||||||
* With --verbose, print information about each input file when
|
* With --verbose, print information about each input file when
|
||||||
merging files.
|
merging files.
|
||||||
|
|
||||||
@ -21,7 +29,7 @@
|
|||||||
performance, this allows you to operate on many files without
|
performance, this allows you to operate on many files without
|
||||||
opening too many files at the operating system level.
|
opening too many files at the operating system level.
|
||||||
|
|
||||||
* Add new option --preserved-unreferenced-resources, which
|
* Add new option --preserve-unreferenced-resources, which
|
||||||
suppresses removal of unreferenced objects from page resource
|
suppresses removal of unreferenced objects from page resource
|
||||||
dictionaries during page splitting operations.
|
dictionaries during page splitting operations.
|
||||||
|
|
||||||
|
@ -88,7 +88,12 @@ RELEASE PREPARATION
|
|||||||
* Check out the current version
|
* Check out the current version
|
||||||
* ./autogen.sh && ./configure --enable-werror && make -j$(nproc) build_libqpdf
|
* ./autogen.sh && ./configure --enable-werror && make -j$(nproc) build_libqpdf
|
||||||
* Checkout the last release
|
* Checkout the last release
|
||||||
* make check NO_REBUILD=1
|
* make -k check NO_REBUILD=1
|
||||||
|
|
||||||
|
* Update release notes in manual. Look at diffs and ChangeLog. Update
|
||||||
|
release date in `manual/qpdf-manual.xml`. Remember to ensure that
|
||||||
|
the entities at the top of the document are consistent with the
|
||||||
|
release notes for both version and release date.
|
||||||
|
|
||||||
* Make sure version numbers are consistent in the following locations:
|
* Make sure version numbers are consistent in the following locations:
|
||||||
* configure.ac
|
* configure.ac
|
||||||
@ -96,11 +101,6 @@ RELEASE PREPARATION
|
|||||||
* manual/qpdf-manual.xml
|
* manual/qpdf-manual.xml
|
||||||
`make_dist` verifies this consistency.
|
`make_dist` verifies this consistency.
|
||||||
|
|
||||||
* Update release notes in manual. Look at diffs and ChangeLog. Update
|
|
||||||
release date in `manual/qpdf-manual.xml`. Remember to ensure that
|
|
||||||
the entities at the top of the document are consistent with the
|
|
||||||
release notes for both version and release date.
|
|
||||||
|
|
||||||
* Add a release entry to ChangeLog.
|
* Add a release entry to ChangeLog.
|
||||||
|
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@ dnl Process this file with autoconf to produce a configure script.
|
|||||||
dnl This config.in requires autoconf 2.5 or greater.
|
dnl This config.in requires autoconf 2.5 or greater.
|
||||||
|
|
||||||
AC_PREREQ([2.68])
|
AC_PREREQ([2.68])
|
||||||
AC_INIT([qpdf],[8.0.2])
|
AC_INIT([qpdf],[8.1.0])
|
||||||
|
|
||||||
AC_CONFIG_MACRO_DIR([m4])
|
AC_CONFIG_MACRO_DIR([m4])
|
||||||
AC_CONFIG_FILES([autoconf.mk])
|
AC_CONFIG_FILES([autoconf.mk])
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
#include <qpdf/QPDF_Null.hh>
|
#include <qpdf/QPDF_Null.hh>
|
||||||
#include <qpdf/QPDF_Dictionary.hh>
|
#include <qpdf/QPDF_Dictionary.hh>
|
||||||
|
|
||||||
std::string QPDF::qpdf_version = "8.0.2";
|
std::string QPDF::qpdf_version = "8.1.0";
|
||||||
|
|
||||||
static char const* EMPTY_PDF =
|
static char const* EMPTY_PDF =
|
||||||
"%PDF-1.3\n"
|
"%PDF-1.3\n"
|
||||||
|
@ -5,8 +5,8 @@
|
|||||||
<!ENTITY mdash "—">
|
<!ENTITY mdash "—">
|
||||||
<!ENTITY ndash "–">
|
<!ENTITY ndash "–">
|
||||||
<!ENTITY nbsp " ">
|
<!ENTITY nbsp " ">
|
||||||
<!ENTITY swversion "8.0.2">
|
<!ENTITY swversion "8.1.0">
|
||||||
<!ENTITY lastreleased "March 6, 2018">
|
<!ENTITY lastreleased "June 22, 2018">
|
||||||
]>
|
]>
|
||||||
<book>
|
<book>
|
||||||
<bookinfo>
|
<bookinfo>
|
||||||
@ -3239,6 +3239,189 @@ print "\n";
|
|||||||
<filename>ChangeLog</filename> in the source distribution.
|
<filename>ChangeLog</filename> in the source distribution.
|
||||||
</para>
|
</para>
|
||||||
<variablelist>
|
<variablelist>
|
||||||
|
<varlistentry>
|
||||||
|
<term>8.1.0: June 23, 2018</term>
|
||||||
|
<listitem>
|
||||||
|
<itemizedlist>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
Usability Improvements
|
||||||
|
</para>
|
||||||
|
<itemizedlist>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
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
|
||||||
|
<option>--preserve-unreferenced-resources</option>. For
|
||||||
|
additional details, please see <xref
|
||||||
|
linkend="ref.advanced-transformation"/>.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
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.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
The <option>--rotate</option> option's syntax has been
|
||||||
|
extended to make the page range optional. If you specify
|
||||||
|
<option>--rotate=<replaceable>angle</replaceable></option>
|
||||||
|
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.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
When merging multiple files, the <option>--verbose</option>
|
||||||
|
option now prints information about each file as it operates
|
||||||
|
on that file.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
When the <option>--progress</option> 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.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
</itemizedlist>
|
||||||
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
Bug Fixes
|
||||||
|
</para>
|
||||||
|
<itemizedlist>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
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).
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
Limit depth of nested data structures to prevent crashes
|
||||||
|
from certain types of malformed (malicious) PDFs.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
In “newline before endstream” mode, insert the
|
||||||
|
required extra newline before the
|
||||||
|
<literal>endstream</literal> at the end of object streams.
|
||||||
|
This one case was previously omitted.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
</itemizedlist>
|
||||||
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
API Enhancements
|
||||||
|
</para>
|
||||||
|
<itemizedlist>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
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
|
||||||
|
<classname>QPDFObjectHandle</classname> directly. For
|
||||||
|
details on helpers, see <xref
|
||||||
|
linkend="ref.helper-classes"/>. Specific additional
|
||||||
|
interfaces are described below.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
Add two new document helper classes:
|
||||||
|
<classname>QPDFPageDocumentHelper</classname> for working
|
||||||
|
with pages, and
|
||||||
|
<classname>QPDFAcroFormDocumentHelper</classname> for
|
||||||
|
working with interactive forms. No old methods have been
|
||||||
|
removed, but <classname>QPDFPageDocumentHelper</classname>
|
||||||
|
is now the preferred way to perform operations on pages
|
||||||
|
rather than calling the old methods in
|
||||||
|
<classname>QPDFObjectHandle</classname> and
|
||||||
|
<classname>QPDF</classname> directly. Comments in the header
|
||||||
|
files direct you to the new interfaces. Please see the
|
||||||
|
header files and <filename>ChangeLog</filename> for
|
||||||
|
additional details.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
Add three new object helper class:
|
||||||
|
<classname>QPDFPageObjectHelper</classname> for pages,
|
||||||
|
<classname>QPDFFormFieldObjectHelper</classname> for
|
||||||
|
interactive form fields, and
|
||||||
|
<classname>QPDFAnnotationObjectHelper</classname> for
|
||||||
|
annotations. All three classes are fairly sparse at the
|
||||||
|
moment, but they have some useful, basic functionality.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
A new example program
|
||||||
|
<filename>examples/pdf-set-form-values.cc</filename> has
|
||||||
|
been added that illustrates use of the new document and
|
||||||
|
object helpers.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
The method
|
||||||
|
<function>QPDFWriter::registerProgressReporter</function>
|
||||||
|
has been added. This method allows you to register a
|
||||||
|
function that is called by <classname>QPDFWriter</classname>
|
||||||
|
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
|
||||||
|
<command>qpdf</command> command line tool uses this to
|
||||||
|
implement its <option>--progress</option> option.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
New methods
|
||||||
|
<function>QPDFObjectHandle::newUnicodeString</function> and
|
||||||
|
<function>QPDFObject::unparseBinary</function> 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.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
A new class
|
||||||
|
<classname>QPDFObjectHandle::Rectangle</classname> has been
|
||||||
|
added to ease working with PDF rectangles, which are just
|
||||||
|
arrays of four numeric values.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
</itemizedlist>
|
||||||
|
</listitem>
|
||||||
|
</itemizedlist>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term>8.0.2: March 6, 2018</term>
|
<term>8.0.2: March 6, 2018</term>
|
||||||
<listitem>
|
<listitem>
|
||||||
|
Loading…
Reference in New Issue
Block a user