summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2018-06-23 03:12:26 +0200
committerJay Berkenbilt <ejb@ql.org>2018-06-23 13:50:11 +0200
commit1bd2a2e79b9a0dbd42e812f3e0b0d85e26e99ec4 (patch)
treee3b4a37dcd374dce283002371bc0dbdb0889db73
parent92ca2a41bc4621d54217d8066d726f694c40e5eb (diff)
downloadqpdf-1bd2a2e79b9a0dbd42e812f3e0b0d85e26e99ec4.tar.zst
Prepare 8.1.0 releaserelease-qpdf-8.1.0
-rw-r--r--ChangeLog10
-rw-r--r--README-maintainer12
-rw-r--r--configure.ac2
-rw-r--r--libqpdf/QPDF.cc2
-rw-r--r--manual/qpdf-manual.xml187
5 files changed, 202 insertions, 11 deletions
diff --git a/ChangeLog b/ChangeLog
index e894ac7a..7eef99e4 100644
--- a/ChangeLog
+++ b/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>
+ * 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
merging files.
@@ -21,7 +29,7 @@
performance, this allows you to operate on many files without
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
dictionaries during page splitting operations.
diff --git a/README-maintainer b/README-maintainer
index ed4c7bc6..7bc7e7c2 100644
--- a/README-maintainer
+++ b/README-maintainer
@@ -88,7 +88,12 @@ RELEASE PREPARATION
* Check out the current version
* ./autogen.sh && ./configure --enable-werror && make -j$(nproc) build_libqpdf
* 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:
* configure.ac
@@ -96,11 +101,6 @@ RELEASE PREPARATION
* manual/qpdf-manual.xml
`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.
diff --git a/configure.ac b/configure.ac
index 4f875e95..423e2e2d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -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.
AC_PREREQ([2.68])
-AC_INIT([qpdf],[8.0.2])
+AC_INIT([qpdf],[8.1.0])
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_FILES([autoconf.mk])
diff --git a/libqpdf/QPDF.cc b/libqpdf/QPDF.cc
index 7d3c10e7..308b3dd2 100644
--- a/libqpdf/QPDF.cc
+++ b/libqpdf/QPDF.cc
@@ -19,7 +19,7 @@
#include <qpdf/QPDF_Null.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 =
"%PDF-1.3\n"
diff --git a/manual/qpdf-manual.xml b/manual/qpdf-manual.xml
index 49e5b838..848c340b 100644
--- a/manual/qpdf-manual.xml
+++ b/manual/qpdf-manual.xml
@@ -5,8 +5,8 @@
<!ENTITY mdash "&#x2014;">
<!ENTITY ndash "&#x2013;">
<!ENTITY nbsp "&#xA0;">
-<!ENTITY swversion "8.0.2">
-<!ENTITY lastreleased "March 6, 2018">
+<!ENTITY swversion "8.1.0">
+<!ENTITY lastreleased "June 22, 2018">
]>
<book>
<bookinfo>
@@ -3240,6 +3240,189 @@ print "\n";
</para>
<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 &ldquo;newline before endstream&rdquo; 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 &ldquo;helper&rdquo;
+ 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>
<term>8.0.2: March 6, 2018</term>
<listitem>
<itemizedlist>