From ace2a031b5c1580ea9a69f116e6a8c9393860267 Mon Sep 17 00:00:00 2001 From: Jay Berkenbilt Date: Sat, 24 Oct 2009 04:47:17 +0000 Subject: prepare 2.1.rc1 for release git-svn-id: svn+q:///qpdf/trunk@901 71b93d88-0707-0410-a8cf-f5a4172ac649 --- manual/qpdf-manual.xml | 334 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 330 insertions(+), 4 deletions(-) (limited to 'manual/qpdf-manual.xml') diff --git a/manual/qpdf-manual.xml b/manual/qpdf-manual.xml index 411a7669..8edf19fe 100644 --- a/manual/qpdf-manual.xml +++ b/manual/qpdf-manual.xml @@ -5,8 +5,8 @@ - - + + ]> @@ -218,7 +218,9 @@ make does not have to be seekable, even when generating linearized files. Specifying “” as - means to write to standard output. + 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. Most options require an output file, but some testing or @@ -399,7 +401,8 @@ make Controls modify access. may be - one of the following: + one of the following, each of which implies all the options + that follow it: @@ -430,6 +433,40 @@ make + + + + + If specified, any metadata stream in the document will be left + unencrypted even if the rest of the document is encrypted. + This also forces the PDF version to be at least 1.5. + + + + + + + + If is specified, AES encryption + will be used instead of RC4 encryption. This forces the PDF + version to be at least 1.6. + + + + + + + + Use of this option forces the /V and + /R parameters in the document's encryption + dictionary to be set to the value 4. As + qpdf will automatically do this when required, there is no + reason to ever use this option. It exists primarily for use + in testing qpdf itself. This option also forces the PDF + version to be at least 1.5. + + + The default for each permission option is to be fully permissive. @@ -533,6 +570,50 @@ make + + + + + Forces the PDF version of the output file to be at least + version. In other words, if the + input file has a lower version than the specified version, the + specified version will be used. If the input file has a + higher version, the input file's original version will be + used. It is seldom necessary to use this option since qpdf + will automatically increase the version as needed when adding + features that require newer PDF readers. + + + + + + + + This option forces the PDF version to be the exact version + specified even when the file may have content that + is not supported in that version. In some cases, + forcing the output file's PDF version to be lower than that of + the input file will cause qpdf to disable certain features of + the document. Specifically, AES encryption is disabled if the + version is less than 1.6, cleartext metadata and object + streams are disabled if less than 1.5, 128-bit encryption keys + are disabled if less than 1.4, and all encryption is disabled + if less than 1.3. Even with these precautions, qpdf won't be + able to do things like eliminate use of newer image + compression schemes, transparency groups, or other features + that may have been added in more recent versions of PDF. + + + As a general rule, with the exception of big structural things + like the use of object streams or AES encryption, PDF viewers + are supposed to ignore features in files that they don't + support from newer versions. This means that forcing the + version to a lower version may make it possible to open your + PDF file with an older version, though bear in mind that some + of the original document's functionality may be lost. + + + @@ -1985,7 +2066,169 @@ print "\n"; Release Notes + + For a detailed list of changes, please see the file + ChangeLog in the source distribution. + + + 2.1.rc1: October 25, 2009 + + + + + This is the first version of qpdf to include Windows support. + On Windows, it is possible to build a DLL. Additionally, a + partial C-language API has been introduced, which makes it + possible to call qpdf functions from non-C++ environments. I + am very grateful to Zarko Gagic (http://delphi.about.com/) + for tirelessly testing numerous pre-release versions of this + DLL and providing many excellent suggestions on improving the + interface. + + + For programming to the C interface, please see the header file + qpdf/qpdf-c.h and the example + examples/pdf-linearize.c. + + + + + Zarko Gajic has written a Delphi wrapper for qpdf, which can + be downloaded from qpdf's download side. Zarko's Delphi + wrapper is released with the same licensing terms as qpdf + itself and comes with this disclaimer: “Delphi wrapper + unit qpdf.pas created by Zarko Gajic + (http://delphi.about.com/). + Use at your own risk and for whatever purpose you want. No + support is provided. Sample code is provided.” + + + + + Support has been added for AES encryption and crypt filters. + Although qpdf does not presently support files that use + PKI-based encryption, with the addition of AES and crypt + filters, qpdf is now be able to open most encrypted files + created with newer versions of Acrobat or other PDF creation + software. Note that I have not been able to get very many + files encrypted in this way, so it's possible there could + still be some cases that qpdf can't handle. Please report + them if you find them. + + + + + Many error messages have been improved to include more + information in hopes of making qpdf a more useful tool for PDF + experts to use in manually recovering damaged PDF files. + + + + + Attempt to avoid compressing metadata streams if possible. + This is consistent with other PDF creation applications. + + + + + Provide new command-line options for AES encrypt, cleartext + metadata, and setting the minimum and forced PDF versions of + output files. + + + + + Add additional methods to the QPDF + object for querying the document's permissions. Although qpdf + does not enforce these permissions, it does make them + available so that applications that use qpdf can enforce + permissions. + + + + + The option to qpdf + has been extended to include some additional information. + + + + + There have been a handful of non-compatible API changes. For + details, see . + + + + + + + 2.0.6: May 3, 2009 + + + + + Do not attempt to uncompress streams that have decode + parameters we don't recognize. Earlier versions of qpdf would + have rejected files with such streams. + + + + + + + 2.0.5: March 10, 2009 + + + + + Improve error handling in the LZW decoder, and fix a small + error introduced in the previous version with regard to + handling full tables. The LZW decoder has been more strongly + verified in this release. + + + + + + + 2.0.4: February 21, 2009 + + + + + Include proper support for LZW streams encoded without the + “early code change” flag. Special thanks to Atom + Smasher who reported the problem and provided an input file + compressed in this way, which I did not previously have. + + + + + Implement some improvements to file recovery logic. + + + + + + + 2.0.3: February 15, 2009 + + + + + Compile cleanly with gcc 4.4. + + + + + Handle strings encoded as UTF-16BE properly. + + + + + 2.0.2: June 30, 2008 @@ -2031,4 +2274,87 @@ print "\n"; + + Upgrading from 2.0 to 2.1 + + Although, as a general rule, we like to avoid introducing + source-level incompatibilities in qpdf's interface, there were a + few non-compatible changes made in this version. A considerable + amount of source code that uses qpdf will probably compile without + any changes, but in some cases, you may have to update your code. + The changes are enumerated here. There are also some new + interfaces; for those, please refer to the header files. + + + + + QPDF's exception handling mechanism now uses + std::logic_error for internal errors and + std::runtime_error for runtime errors in + favor of the now removed QEXC classes used + in previous versions. The QEXC exception + classes predated the addition of the + <stdexcept> header file to the C++ + standard library. Most of the exceptions thrown by the qpdf + library itself are still of type QPDFExc + which is now derived from + std::runtime_error. Programs that caught + an instance of std::exception and + displayed it by calling the what() method + will not need to be changed. + + + + + The QPDFExc class now internally + represents various fields of the error condition and provides + interfaces for querying them. Among the fields is a numeric + error code that can help applications act differently on (a small + number of) different error conditions. See + QPDFExc.hh for details. + + + + + Warnings can be retrieved from qpdf as instances of + QPDFExc instead of strings. + + + + + The nested QPDF::EncryptionData class's + constructor takes an additional argument. This class is + primarily intended to be used by + QPDFWriter. There's not really anything + useful an end-user application could do with it. It probably + shouldn't really be part of the public interface to begin with. + Likewise, some of the methods for computing internal encryption + dictionary parameters have changed to support + /R=4 encryption. + + + + + The method QPDF::getUserPassword has been + removed since it didn't do what people would think it did. There + are now two new methods: + QPDF::getPaddedUserPassword and + QPDF::getTrimmedUserPassword. The first one + does what the old QPDF::getUserPassword + method used to do, which is to return the password with possible + binary padding as specified by the PDF specification. The second + one returns a human-readable password string. + + + + + The enumerated types that used to be nested in + QPDFWriter have moved to top-level + enumerated types and are now defined in the file + qpdf/Constants.h. This enables them to be + shared by both the C and C++ interfaces. + + + + -- cgit v1.2.3-54-g00ecf