mirror of
https://github.com/qpdf/qpdf.git
synced 2024-12-22 10:58:58 +00:00
Prepare 7.0.0 release
This commit is contained in:
parent
4c31d3b8af
commit
0f1ce8e646
@ -1,3 +1,7 @@
|
||||
2017-09-15 Jay Berkenbilt <ejb@ql.org>
|
||||
|
||||
* 7.0.0: release
|
||||
|
||||
2017-09-12 Jay Berkenbilt <ejb@ql.org>
|
||||
|
||||
* Relicense qpdf under version 2.0 of the Apache License rather
|
||||
|
@ -14,7 +14,7 @@
|
||||
--enable-werror --disable-shared
|
||||
```
|
||||
The test suite should run clean with this. This seems to be more reliable than valgrind.
|
||||
* Test with clang.
|
||||
* Test with clang. Pass `CC=clang CXX=clang++` to `./configure`.
|
||||
* Check all open issues in the sourceforge trackers and on github.
|
||||
* If any interfaces were added or changed, check C API to see whether changes are appropriate there as well. If necessary, review the casting policy in the manual, and ensure that integer types are properly handled.
|
||||
* Avoid atoi. Use QUtil::string_to_int instead. It does overflow/underflow checking.
|
||||
|
8
TODO
8
TODO
@ -1,11 +1,3 @@
|
||||
Before final 7.0.0
|
||||
==================
|
||||
|
||||
* Include information about relicensing prominently in release
|
||||
announcement for packagers.
|
||||
|
||||
* Create release notes
|
||||
|
||||
Soon
|
||||
====
|
||||
|
||||
|
@ -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],[7.0.b1])
|
||||
AC_INIT([qpdf],[7.0.0])
|
||||
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
AC_CONFIG_FILES([autoconf.mk])
|
||||
@ -29,9 +29,9 @@ LT_INIT([win32-dll])
|
||||
# * Otherwise, increment LT_REVISION
|
||||
|
||||
# LT = libtool
|
||||
LT_CURRENT=18
|
||||
LT_CURRENT=19
|
||||
LT_AGE=1
|
||||
LT_REVISION=0
|
||||
LT_AGE=0
|
||||
AC_SUBST(LT_CURRENT)
|
||||
AC_SUBST(LT_REVISION)
|
||||
AC_SUBST(LT_AGE)
|
||||
|
@ -19,7 +19,7 @@
|
||||
#include <qpdf/QPDF_Null.hh>
|
||||
#include <qpdf/QPDF_Dictionary.hh>
|
||||
|
||||
std::string QPDF::qpdf_version = "7.0.b1";
|
||||
std::string QPDF::qpdf_version = "7.0.0";
|
||||
|
||||
static char const* EMPTY_PDF =
|
||||
"%PDF-1.3\n"
|
||||
|
@ -5,8 +5,8 @@
|
||||
<!ENTITY mdash "—">
|
||||
<!ENTITY ndash "–">
|
||||
<!ENTITY nbsp " ">
|
||||
<!ENTITY swversion "7.0.b1">
|
||||
<!ENTITY lastreleased "August 22, 2017">
|
||||
<!ENTITY swversion "7.0.0">
|
||||
<!ENTITY lastreleased "September 15, 2017">
|
||||
]>
|
||||
<book>
|
||||
<bookinfo>
|
||||
@ -154,8 +154,8 @@
|
||||
<listitem>
|
||||
<para>
|
||||
A C++ compiler that works well with STL and has the <type>long
|
||||
long</type> type. Most modern C++ compilers should fit the
|
||||
bill fine. QPDF is tested with gcc and Microsoft Visual C++.
|
||||
long</type> type. Most modern C++ compilers should fit the bill
|
||||
fine. QPDF is tested with gcc, clang, and Microsoft Visual C++.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
@ -283,15 +283,17 @@ make
|
||||
treated as a command-line argument. The <option>@-</option> option
|
||||
allows arguments to be read from standard input. This allows qpdf
|
||||
to be invoked with an arbitrary number of arbitrarily long
|
||||
arguments.
|
||||
arguments. It is also very useful for avoiding having to pass
|
||||
passwords on the command line.
|
||||
</para>
|
||||
<para>
|
||||
<option>outfilename</option> does not have to be seekable, even
|
||||
when generating linearized files. Specifying
|
||||
“<option>--</option>” as <option>outfilename</option>
|
||||
“<option>-</option>” as <option>outfilename</option>
|
||||
means to write to standard output. However, you can't specify the
|
||||
same file as both the input and the output because qpdf reads data
|
||||
from the input file as it writes to the output file.
|
||||
from the input file as it writes to the output file. QPDF attempts
|
||||
to detect this case and fail without overwriting the output file.
|
||||
</para>
|
||||
<para>
|
||||
Most options require an output file, but some testing or
|
||||
@ -507,12 +509,11 @@ make
|
||||
encoded in ISO-8859-1 and your terminal is configured to use
|
||||
UTF-8, the password you supply may not work properly. There are
|
||||
various approaches to handling this. For example, if you are
|
||||
using Linux and have the iconv executable (part of the ICU
|
||||
package) installed, you could pass <option>--password=`echo
|
||||
<replaceable>password</replaceable> | iconv -t
|
||||
iso-8859-1`</option> to qpdf where
|
||||
using Linux and have the iconv executable installed, you could
|
||||
pass <option>--password=`echo <replaceable>password</replaceable>
|
||||
| iconv -t iso-8859-1`</option> to qpdf where
|
||||
<replaceable>password</replaceable> is a password specified in
|
||||
your terminal's locale. A detailed discussion of this is out of
|
||||
your terminal's locale. A detailed discussion of this is out of
|
||||
scope for this manual, but just be aware of this issue if you have
|
||||
trouble with a password that contains 8-bit characters.
|
||||
</para>
|
||||
@ -904,7 +905,10 @@ outfile.pdf</option>
|
||||
supported generalized filters: <option>/LZWDecode</option>,
|
||||
<option>/FlateDecode</option>,
|
||||
<option>/ASCII85Decode</option>, and
|
||||
<option>/ASCIIHexDecode</option>
|
||||
<option>/ASCIIHexDecode</option>. We define generalized
|
||||
filters as those to be used for general-purpose compression
|
||||
or encoding, as opposed to filters specifically designed
|
||||
for image data.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
@ -953,9 +957,9 @@ outfile.pdf</option>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<option>uncompress</option>: uncompress stream data when
|
||||
possible; equivalent to
|
||||
<option>--compress-streams=n</option>
|
||||
<option>uncompress</option>: uncompress stream data
|
||||
compressed with generalized filters when possible;
|
||||
equivalent to <option>--compress-streams=n</option>
|
||||
<option>--decode-level=generalized</option>
|
||||
</para>
|
||||
</listitem>
|
||||
@ -1130,18 +1134,6 @@ outfile.pdf</option>
|
||||
results in smaller files. This behavior may also be explicitly
|
||||
requested with <option>--stream-data=compress</option>.
|
||||
</para>
|
||||
<para>
|
||||
When <option>--stream-data=preserve</option> is specified, qpdf
|
||||
will never attempt to change the filtering of any stream data.
|
||||
</para>
|
||||
<para>
|
||||
When <option>--stream-data=uncompress</option> is specified, qpdf
|
||||
will attempt to remove any non-lossy filters that it supports.
|
||||
This includes <literal>/FlateDecode</literal>,
|
||||
<literal>/LZWDecode</literal>, <literal>/ASCII85Decode</literal>,
|
||||
and <literal>/ASCIIHexDecode</literal>. This can be very useful
|
||||
for inspecting the contents of various streams.
|
||||
</para>
|
||||
<para>
|
||||
When <option>--normalize-content=y</option> is specified, qpdf
|
||||
will attempt to normalize whitespace and newlines in page content
|
||||
@ -1386,7 +1378,14 @@ outfile.pdf</option>
|
||||
conditions that <option>--check</option> detects. These are
|
||||
issued as warnings instead of errors. If qpdf finds no errors
|
||||
but finds warnings, it will exit with a status of 3 (as of
|
||||
version 2.0.4).
|
||||
version 2.0.4). When <option>--check</option> is combined
|
||||
with other options, checks are always performed before any
|
||||
other options are processed. For erroneous files,
|
||||
<option>--check</option> will cause qpdf to attempt to
|
||||
recover, after which other options are effectively operating
|
||||
on the recovered file. Combining <option>--check</option> with
|
||||
other options in this way can be useful for manually
|
||||
recovering severely damaged files.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
@ -2924,6 +2923,237 @@ print "\n";
|
||||
For a detailed list of changes, please see the file
|
||||
<filename>ChangeLog</filename> in the source distribution.
|
||||
</para>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term>7.0.0: September 15, 2017</term>
|
||||
<listitem>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
Packaging and Distribution Changes
|
||||
</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
QPDF's primary license is now <ulink
|
||||
url="http://www.apache.org/licenses/LICENSE-2.0">version 2.0
|
||||
of the Apache License</ulink> rather than version 2.0 of the
|
||||
Artistic License. You may still, at your option, consider
|
||||
qpdf to be licensed with version 2.0 of the Artistic
|
||||
license.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
QPDF no longer has a dependency on the PCRE (Perl-Compatible
|
||||
Regular Expression) library. QPDF now has an added
|
||||
dependency on the JPEG library.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
Bug Fixes
|
||||
</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
This release contains many bug fixes for various infinite
|
||||
loops, memory leaks, and other memory errors that could be
|
||||
encountered with specially crafted or otherwise erroneous
|
||||
PDF files.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
New Features
|
||||
</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
QPDF now supports reading and writing streams encoded with
|
||||
JPEG or RunLength encoding. Library API enhancements and
|
||||
command-line options have been added to control this
|
||||
behavior. See command-line options
|
||||
<option>--compress-streams</option> and
|
||||
<option>--decode-level</option> and methods
|
||||
<function>QPDFWriter::setCompressStreams</function> and
|
||||
<function>QPDFWriter::setDecodeLevel</function>.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
QPDF is much better at recovering from broken files. In most
|
||||
cases, qpdf will skip invalid objects and will preserve
|
||||
broken stream data by not attempting to filter broken
|
||||
streams. QPDF is now able to recover or at least not crash
|
||||
on dozens of broken test files I have received over the past
|
||||
few years.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Page rotation is now supported and accessible from both the
|
||||
library and the command line.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<classname>QPDFWriter</classname> supports writing files in
|
||||
a way that preserves PCLm compliance in support of
|
||||
driverless printing. This is very specialized and is only
|
||||
useful to applications that already know how to create PCLm
|
||||
files.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
Enhancements to the <command>qpdf</command> Command-line Tool.
|
||||
All new options listed here are documented in more detail in
|
||||
<xref linkend="ref.using"/>.
|
||||
</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
Command-line arguments can now be read from files or
|
||||
standard input using <literal>@file</literal> or
|
||||
<literal>@-</literal> syntax. Please see <xref
|
||||
linkend="ref.invocation"/>.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<option>--rotate</option>: request page rotation
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<option>--newline-before-endstream</option>: ensure that a
|
||||
newline appears before every <literal>endstream</literal>
|
||||
keyword in the file; used to prevent qpdf from breaking
|
||||
PDF/A compliance on already compliant files.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<option>--preserve-unreferenced</option>: preserve
|
||||
unreferenced objects in the input PDF
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<option>--split-pages</option>: break output into chunks
|
||||
with fixed numbers of pages
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<option>--verbose</option>: print the name of each output
|
||||
file that is created
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<option>--compress-streams</option> and
|
||||
<option>--decode-level</option> replace
|
||||
<option>--stream-data</option> for improving granularity of
|
||||
controlling compression and decompression of stream data.
|
||||
The <option>--stream-data</option> option will remain
|
||||
available.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
When running <command>qpdf --check</command> with other
|
||||
options, checks are always run first. This enables qpdf to
|
||||
perform its full recovery logic before outputting other
|
||||
information. This can be especially useful when manually
|
||||
recovering broken files, looking at qpdf's regenerated cross
|
||||
reference table, or other similar operations.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Process <command>--pages</command> earlier so that other
|
||||
options like <option>--show-pages</option> or
|
||||
<option>--split-pages</option> can operate on the file after
|
||||
page splitting/merging has occurred.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
API Changes. All new API calls are documented in their
|
||||
respective classes' header files.
|
||||
</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
<function>QPDFObjectHandle::rotatePage</function>: apply
|
||||
rotation to a page object
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<function>QPDFWriter::setNewlineBeforeEndstream</function>:
|
||||
force newline to appear before <literal>endstream</literal>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<function>QPDFWriter::setPreserveUnreferencedObjects</function>:
|
||||
preserve unreferenced objects that appear in the input PDF.
|
||||
The default behavior is to discard them.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
New <classname>Pipeline</classname> types
|
||||
<classname>Pl_RunLength</classname> and
|
||||
<classname>Pl_DCT</classname> are available for developers
|
||||
who wish to produce or consume RunLength or DCT stream data
|
||||
directly. The <filename>examples/pdf-create.cc</filename>
|
||||
example illustrates their use.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<function>QPDFWriter::setCompressStreams</function> and
|
||||
<function>QPDFWriter::setDecodeLevel</function> methods
|
||||
control handling of different types of stream compression.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Add new C API functions
|
||||
<function>qpdf_set_compress_streams</function>,
|
||||
<function>qpdf_set_decode_level</function>,
|
||||
<function>qpdf_set_preserve_unreferenced_objects</function>,
|
||||
and <function>qpdf_set_newline_before_endstream</function>
|
||||
corresponding to the new <classname>QPDFWriter</classname>
|
||||
methods.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term>6.0.0: November 10, 2015</term>
|
||||
|
Loading…
Reference in New Issue
Block a user