summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2011-08-11 14:17:39 +0200
committerJay Berkenbilt <ejb@ql.org>2011-08-11 14:17:39 +0200
commitcb0c8ca2feaaca105cf2d9cf2489b49f028ae3d4 (patch)
tree288f73b93c4e6de0c04dc6184f4ec7b226e51a99
parent9a1fad40773439a104c25606869e47011351fd90 (diff)
downloadqpdf-cb0c8ca2feaaca105cf2d9cf2489b49f028ae3d4.tar.zst
update release notes and TODO for changes made so far
-rw-r--r--TODO35
-rw-r--r--manual/qpdf-manual.xml54
2 files changed, 64 insertions, 25 deletions
diff --git a/TODO b/TODO
index 957c34d2..59864149 100644
--- a/TODO
+++ b/TODO
@@ -1,30 +1,13 @@
2.3
===
- * Add ability to delete, replace, and swap objects using indirect
- object references. This, along with the existing ability to
- install new indirect objects, significantly increases range of
- possible modifications.
-
- * QPDFWriter: be able to save to a memory buffer
-
- * Provide an API for returning the keys of a dictionary as a
- std::map. Do the corresponding thing for an array. Provide an
- example program that does dictionary and array copies perhaps as
- part of the replace, swap, delete example.
+ * Provide an example of using replace and swap. Maybe.
* Figure out a way to update the C API with something that can
update dictionary keys at least with strings. Make sure it is
possible to implement something akin to pdf-mod-info in C.
- * Fix bug: this->encrypt_metadata is not set when
- copyEncryptionParameters is used.
-
- * If possible implement the other encrypted file types as reported in
- bug 3173659. See ../misc/encrypted-3173659/details.txt for a
- detailed description of the problems and an extraction of all the
- test files.
-
+ * Add C API for writing to memory if possible
General
=======
@@ -139,12 +122,14 @@ Index: QPDFWriter.cc
code to handle it properly. In QPDF_encryption.cc, search for
cf_file. Remove exception thrown if cf_file is different from
cf_stream, and write code in the stream decryption section to use
- cf_file instead of cf_stream. In general, add interfaces to
- get the list of embedded files and to extract them. To handle
- general embedded files associated with the whole document, follow
- root -> /Names -> /EmbeddedFiles -> /Names to get to the file
- specification dictionaries. Then, in each file specification
- dictionary, follow /EF -> /F to the actual stream.
+ cf_file instead of cf_stream. In general, add interfaces to get
+ the list of embedded files and to extract them. To handle general
+ embedded files associated with the whole document, follow root ->
+ /Names -> /EmbeddedFiles -> /Names to get to the file specification
+ dictionaries. Then, in each file specification dictionary, follow
+ /EF -> /F to the actual stream. There may be other places file
+ specification dictionaries may appear, and there are also /RF keys
+ with related files, so reread section 3.10 carefully.
* The description of Crypt filters is unclear with respect to how to
use them to override /StmF for specific streams. I'm not sure
diff --git a/manual/qpdf-manual.xml b/manual/qpdf-manual.xml
index 3bac351a..15130567 100644
--- a/manual/qpdf-manual.xml
+++ b/manual/qpdf-manual.xml
@@ -2075,6 +2075,60 @@ print "\n";
</para>
<variablelist>
<varlistentry>
+ <term>2.3.0: August 11, 2011</term>
+ <listitem>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Bug fix: when preserving existing encryption on encrypted
+ files with cleartext metadata, older qpdf versions would
+ generate password-protected files with no valid password.
+ This operation now works. This bug only affected files
+ created by copying existing encryption parameters; explicit
+ encryption with specification of cleartext metadata worked
+ before and continues to work.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Enhance <classname>QPDFWriter</classname> with a new
+ constructor that allows you to delay the specification of the
+ output file. When using this constructor, you may now call
+ <function>QPDFWriter::setOutputFilename</function> to specify
+ the output file, or you may use
+ <function>QPDFWriter::setOutputMemory</function> to cause
+ <classname>QPDFWriter</classname> to write the resulting PDF
+ file to a memory buffer. You may then use
+ <function>QPDFWriter::getBuffer</function> to retrieve the
+ memory buffer.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Add new API call <function>QPDF::replaceObject</function> for
+ replacing objects by object ID
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Add new API call <function>QPDF::swapObjects</function> for
+ swapping two objects by object ID
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Add <function>QPDFObjectHandle::getDictAsMap</function> and
+ <function>QPDFObjectHandle::getArrayAsVector</function> to
+ allow retrieval of dictionary objects as maps and array
+ objects as vectors.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <variablelist>
+ <varlistentry>
<term>2.2.4: June 25, 2011</term>
<listitem>
<itemizedlist>