Commit 1bd2a2e79b9a0dbd42e812f3e0b0d85e26e99ec4

Authored by Jay Berkenbilt
1 parent 92ca2a41

Prepare 8.1.0 release

ChangeLog
  1 +2018-06-23 Jay Berkenbilt <ejb@ql.org>
  2 +
  3 + * 8.1.0: release
  4 +
1 5 2018-06-22 Jay Berkenbilt <ejb@ql.org>
2 6  
  7 + * Bug fix: properly decrypt files with 40-bit keys that use
  8 + revision 3 of the security handler. Prior to this, qpdf was
  9 + reporting "invalid password" in this case. Fixes #212.
  10 +
3 11 * With --verbose, print information about each input file when
4 12 merging files.
5 13  
... ... @@ -21,7 +29,7 @@
21 29 performance, this allows you to operate on many files without
22 30 opening too many files at the operating system level.
23 31  
24   - * Add new option --preserved-unreferenced-resources, which
  32 + * Add new option --preserve-unreferenced-resources, which
25 33 suppresses removal of unreferenced objects from page resource
26 34 dictionaries during page splitting operations.
27 35  
... ...
README-maintainer
... ... @@ -88,7 +88,12 @@ RELEASE PREPARATION
88 88 * Check out the current version
89 89 * ./autogen.sh && ./configure --enable-werror && make -j$(nproc) build_libqpdf
90 90 * Checkout the last release
91   - * make check NO_REBUILD=1
  91 + * make -k check NO_REBUILD=1
  92 +
  93 +* Update release notes in manual. Look at diffs and ChangeLog. Update
  94 + release date in `manual/qpdf-manual.xml`. Remember to ensure that
  95 + the entities at the top of the document are consistent with the
  96 + release notes for both version and release date.
92 97  
93 98 * Make sure version numbers are consistent in the following locations:
94 99 * configure.ac
... ... @@ -96,11 +101,6 @@ RELEASE PREPARATION
96 101 * manual/qpdf-manual.xml
97 102 `make_dist` verifies this consistency.
98 103  
99   -* Update release notes in manual. Look at diffs and ChangeLog. Update
100   - release date in `manual/qpdf-manual.xml`. Remember to ensure that
101   - the entities at the top of the document are consistent with the
102   - release notes for both version and release date.
103   -
104 104 * Add a release entry to ChangeLog.
105 105  
106 106  
... ...
configure.ac
... ... @@ -2,7 +2,7 @@ dnl Process this file with autoconf to produce a configure script.
2 2 dnl This config.in requires autoconf 2.5 or greater.
3 3  
4 4 AC_PREREQ([2.68])
5   -AC_INIT([qpdf],[8.0.2])
  5 +AC_INIT([qpdf],[8.1.0])
6 6  
7 7 AC_CONFIG_MACRO_DIR([m4])
8 8 AC_CONFIG_FILES([autoconf.mk])
... ...
libqpdf/QPDF.cc
... ... @@ -19,7 +19,7 @@
19 19 #include <qpdf/QPDF_Null.hh>
20 20 #include <qpdf/QPDF_Dictionary.hh>
21 21  
22   -std::string QPDF::qpdf_version = "8.0.2";
  22 +std::string QPDF::qpdf_version = "8.1.0";
23 23  
24 24 static char const* EMPTY_PDF =
25 25 "%PDF-1.3\n"
... ...
manual/qpdf-manual.xml
... ... @@ -5,8 +5,8 @@
5 5 <!ENTITY mdash "&#x2014;">
6 6 <!ENTITY ndash "&#x2013;">
7 7 <!ENTITY nbsp "&#xA0;">
8   -<!ENTITY swversion "8.0.2">
9   -<!ENTITY lastreleased "March 6, 2018">
  8 +<!ENTITY swversion "8.1.0">
  9 +<!ENTITY lastreleased "June 22, 2018">
10 10 ]>
11 11 <book>
12 12 <bookinfo>
... ... @@ -3240,6 +3240,189 @@ print &quot;\n&quot;;
3240 3240 </para>
3241 3241 <variablelist>
3242 3242 <varlistentry>
  3243 + <term>8.1.0: June 23, 2018</term>
  3244 + <listitem>
  3245 + <itemizedlist>
  3246 + <listitem>
  3247 + <para>
  3248 + Usability Improvements
  3249 + </para>
  3250 + <itemizedlist>
  3251 + <listitem>
  3252 + <para>
  3253 + When splitting files, qpdf detects fonts and images that the
  3254 + document metadata claims are referenced from a page but are
  3255 + not actually referenced and omits them from the output file.
  3256 + This change can cause a significant reduction in the size of
  3257 + split PDF files for files created by some software packages.
  3258 + Prior versions of qpdf would believe the document metadata
  3259 + and sometimes include all the images from all the other
  3260 + pages even though the pages were no longer present. In the
  3261 + unlikely event that the old behavior should be desired, it
  3262 + can be enabled by specifying
  3263 + <option>--preserve-unreferenced-resources</option>. For
  3264 + additional details, please see <xref
  3265 + linkend="ref.advanced-transformation"/>.
  3266 + </para>
  3267 + </listitem>
  3268 + <listitem>
  3269 + <para>
  3270 + When merging multiple PDF files, qpdf no longer leaves all
  3271 + the files open. This makes it possible to merge numbers of
  3272 + files that may exceed the operating system's limit for the
  3273 + maximum number of open files.
  3274 + </para>
  3275 + </listitem>
  3276 + <listitem>
  3277 + <para>
  3278 + The <option>--rotate</option> option's syntax has been
  3279 + extended to make the page range optional. If you specify
  3280 + <option>--rotate=<replaceable>angle</replaceable></option>
  3281 + without specifying a page range, the rotation will be
  3282 + applied to all pages. This can be especially useful for
  3283 + adjusting a PDF created from a multi-page document that
  3284 + was scanned upside down.
  3285 + </para>
  3286 + </listitem>
  3287 + <listitem>
  3288 + <para>
  3289 + When merging multiple files, the <option>--verbose</option>
  3290 + option now prints information about each file as it operates
  3291 + on that file.
  3292 + </para>
  3293 + </listitem>
  3294 + <listitem>
  3295 + <para>
  3296 + When the <option>--progress</option> option is specified,
  3297 + qpdf will print a running indicator of its best guess at how
  3298 + far through the writing process it is. Note that, as with
  3299 + all progress meters, it's an approximation. This option is
  3300 + implemented in a way that makes it useful for software that
  3301 + uses the qpdf library; see API Enhancements below.
  3302 + </para>
  3303 + </listitem>
  3304 + </itemizedlist>
  3305 + </listitem>
  3306 + <listitem>
  3307 + <para>
  3308 + Bug Fixes
  3309 + </para>
  3310 + <itemizedlist>
  3311 + <listitem>
  3312 + <para>
  3313 + Properly decrypt files that use revision 3 of the standard
  3314 + security handler but use 40 bit keys (even though revision 3
  3315 + supports 128-bit keys).
  3316 + </para>
  3317 + </listitem>
  3318 + <listitem>
  3319 + <para>
  3320 + Limit depth of nested data structures to prevent crashes
  3321 + from certain types of malformed (malicious) PDFs.
  3322 + </para>
  3323 + </listitem>
  3324 + <listitem>
  3325 + <para>
  3326 + In &ldquo;newline before endstream&rdquo; mode, insert the
  3327 + required extra newline before the
  3328 + <literal>endstream</literal> at the end of object streams.
  3329 + This one case was previously omitted.
  3330 + </para>
  3331 + </listitem>
  3332 + </itemizedlist>
  3333 + </listitem>
  3334 + <listitem>
  3335 + <para>
  3336 + API Enhancements
  3337 + </para>
  3338 + <itemizedlist>
  3339 + <listitem>
  3340 + <para>
  3341 + The first round of higher level &ldquo;helper&rdquo;
  3342 + interfaces has been introduced. These are designed to
  3343 + provide a more convenient way of interacting with certain
  3344 + document features than using
  3345 + <classname>QPDFObjectHandle</classname> directly. For
  3346 + details on helpers, see <xref
  3347 + linkend="ref.helper-classes"/>. Specific additional
  3348 + interfaces are described below.
  3349 + </para>
  3350 + </listitem>
  3351 + <listitem>
  3352 + <para>
  3353 + Add two new document helper classes:
  3354 + <classname>QPDFPageDocumentHelper</classname> for working
  3355 + with pages, and
  3356 + <classname>QPDFAcroFormDocumentHelper</classname> for
  3357 + working with interactive forms. No old methods have been
  3358 + removed, but <classname>QPDFPageDocumentHelper</classname>
  3359 + is now the preferred way to perform operations on pages
  3360 + rather than calling the old methods in
  3361 + <classname>QPDFObjectHandle</classname> and
  3362 + <classname>QPDF</classname> directly. Comments in the header
  3363 + files direct you to the new interfaces. Please see the
  3364 + header files and <filename>ChangeLog</filename> for
  3365 + additional details.
  3366 + </para>
  3367 + </listitem>
  3368 + <listitem>
  3369 + <para>
  3370 + Add three new object helper class:
  3371 + <classname>QPDFPageObjectHelper</classname> for pages,
  3372 + <classname>QPDFFormFieldObjectHelper</classname> for
  3373 + interactive form fields, and
  3374 + <classname>QPDFAnnotationObjectHelper</classname> for
  3375 + annotations. All three classes are fairly sparse at the
  3376 + moment, but they have some useful, basic functionality.
  3377 + </para>
  3378 + </listitem>
  3379 + <listitem>
  3380 + <para>
  3381 + A new example program
  3382 + <filename>examples/pdf-set-form-values.cc</filename> has
  3383 + been added that illustrates use of the new document and
  3384 + object helpers.
  3385 + </para>
  3386 + </listitem>
  3387 + <listitem>
  3388 + <para>
  3389 + The method
  3390 + <function>QPDFWriter::registerProgressReporter</function>
  3391 + has been added. This method allows you to register a
  3392 + function that is called by <classname>QPDFWriter</classname>
  3393 + to update your idea of the percentage it thinks it is
  3394 + through writing its output. Client programs can use this to
  3395 + implement reasonably accurate progress meters. The
  3396 + <command>qpdf</command> command line tool uses this to
  3397 + implement its <option>--progress</option> option.
  3398 + </para>
  3399 + </listitem>
  3400 + <listitem>
  3401 + <para>
  3402 + New methods
  3403 + <function>QPDFObjectHandle::newUnicodeString</function> and
  3404 + <function>QPDFObject::unparseBinary</function> have been
  3405 + added to allow for more convenient creation of strings that
  3406 + are explicitly encoded using big-endian UTF-16. This is
  3407 + useful for creating strings that appear outside of content
  3408 + streams, such as labels, form fields, outlines, document
  3409 + metadata, etc.
  3410 + </para>
  3411 + </listitem>
  3412 + <listitem>
  3413 + <para>
  3414 + A new class
  3415 + <classname>QPDFObjectHandle::Rectangle</classname> has been
  3416 + added to ease working with PDF rectangles, which are just
  3417 + arrays of four numeric values.
  3418 + </para>
  3419 + </listitem>
  3420 + </itemizedlist>
  3421 + </listitem>
  3422 + </itemizedlist>
  3423 + </listitem>
  3424 + </varlistentry>
  3425 + <varlistentry>
3243 3426 <term>8.0.2: March 6, 2018</term>
3244 3427 <listitem>
3245 3428 <itemizedlist>
... ...