Commit cb0c8ca2feaaca105cf2d9cf2489b49f028ae3d4

Authored by Jay Berkenbilt
1 parent 9a1fad40

update release notes and TODO for changes made so far

Showing 2 changed files with 64 additions and 25 deletions
1 2.3 1 2.3
2 === 2 ===
3 3
4 - * Add ability to delete, replace, and swap objects using indirect  
5 - object references. This, along with the existing ability to  
6 - install new indirect objects, significantly increases range of  
7 - possible modifications.  
8 -  
9 - * QPDFWriter: be able to save to a memory buffer  
10 -  
11 - * Provide an API for returning the keys of a dictionary as a  
12 - std::map. Do the corresponding thing for an array. Provide an  
13 - example program that does dictionary and array copies perhaps as  
14 - part of the replace, swap, delete example. 4 + * Provide an example of using replace and swap. Maybe.
15 5
16 * Figure out a way to update the C API with something that can 6 * Figure out a way to update the C API with something that can
17 update dictionary keys at least with strings. Make sure it is 7 update dictionary keys at least with strings. Make sure it is
18 possible to implement something akin to pdf-mod-info in C. 8 possible to implement something akin to pdf-mod-info in C.
19 9
20 - * Fix bug: this->encrypt_metadata is not set when  
21 - copyEncryptionParameters is used.  
22 -  
23 - * If possible implement the other encrypted file types as reported in  
24 - bug 3173659. See ../misc/encrypted-3173659/details.txt for a  
25 - detailed description of the problems and an extraction of all the  
26 - test files.  
27 - 10 + * Add C API for writing to memory if possible
28 11
29 General 12 General
30 ======= 13 =======
@@ -139,12 +122,14 @@ Index: QPDFWriter.cc @@ -139,12 +122,14 @@ Index: QPDFWriter.cc
139 code to handle it properly. In QPDF_encryption.cc, search for 122 code to handle it properly. In QPDF_encryption.cc, search for
140 cf_file. Remove exception thrown if cf_file is different from 123 cf_file. Remove exception thrown if cf_file is different from
141 cf_stream, and write code in the stream decryption section to use 124 cf_stream, and write code in the stream decryption section to use
142 - cf_file instead of cf_stream. In general, add interfaces to  
143 - get the list of embedded files and to extract them. To handle  
144 - general embedded files associated with the whole document, follow  
145 - root -> /Names -> /EmbeddedFiles -> /Names to get to the file  
146 - specification dictionaries. Then, in each file specification  
147 - dictionary, follow /EF -> /F to the actual stream. 125 + cf_file instead of cf_stream. In general, add interfaces to get
  126 + the list of embedded files and to extract them. To handle general
  127 + embedded files associated with the whole document, follow root ->
  128 + /Names -> /EmbeddedFiles -> /Names to get to the file specification
  129 + dictionaries. Then, in each file specification dictionary, follow
  130 + /EF -> /F to the actual stream. There may be other places file
  131 + specification dictionaries may appear, and there are also /RF keys
  132 + with related files, so reread section 3.10 carefully.
148 133
149 * The description of Crypt filters is unclear with respect to how to 134 * The description of Crypt filters is unclear with respect to how to
150 use them to override /StmF for specific streams. I'm not sure 135 use them to override /StmF for specific streams. I'm not sure
manual/qpdf-manual.xml
@@ -2075,6 +2075,60 @@ print "\n"; @@ -2075,6 +2075,60 @@ print "\n";
2075 </para> 2075 </para>
2076 <variablelist> 2076 <variablelist>
2077 <varlistentry> 2077 <varlistentry>
  2078 + <term>2.3.0: August 11, 2011</term>
  2079 + <listitem>
  2080 + <itemizedlist>
  2081 + <listitem>
  2082 + <para>
  2083 + Bug fix: when preserving existing encryption on encrypted
  2084 + files with cleartext metadata, older qpdf versions would
  2085 + generate password-protected files with no valid password.
  2086 + This operation now works. This bug only affected files
  2087 + created by copying existing encryption parameters; explicit
  2088 + encryption with specification of cleartext metadata worked
  2089 + before and continues to work.
  2090 + </para>
  2091 + </listitem>
  2092 + <listitem>
  2093 + <para>
  2094 + Enhance <classname>QPDFWriter</classname> with a new
  2095 + constructor that allows you to delay the specification of the
  2096 + output file. When using this constructor, you may now call
  2097 + <function>QPDFWriter::setOutputFilename</function> to specify
  2098 + the output file, or you may use
  2099 + <function>QPDFWriter::setOutputMemory</function> to cause
  2100 + <classname>QPDFWriter</classname> to write the resulting PDF
  2101 + file to a memory buffer. You may then use
  2102 + <function>QPDFWriter::getBuffer</function> to retrieve the
  2103 + memory buffer.
  2104 + </para>
  2105 + </listitem>
  2106 + <listitem>
  2107 + <para>
  2108 + Add new API call <function>QPDF::replaceObject</function> for
  2109 + replacing objects by object ID
  2110 + </para>
  2111 + </listitem>
  2112 + <listitem>
  2113 + <para>
  2114 + Add new API call <function>QPDF::swapObjects</function> for
  2115 + swapping two objects by object ID
  2116 + </para>
  2117 + </listitem>
  2118 + <listitem>
  2119 + <para>
  2120 + Add <function>QPDFObjectHandle::getDictAsMap</function> and
  2121 + <function>QPDFObjectHandle::getArrayAsVector</function> to
  2122 + allow retrieval of dictionary objects as maps and array
  2123 + objects as vectors.
  2124 + </para>
  2125 + </listitem>
  2126 + </itemizedlist>
  2127 + </listitem>
  2128 + </varlistentry>
  2129 + </variablelist>
  2130 + <variablelist>
  2131 + <varlistentry>
2078 <term>2.2.4: June 25, 2011</term> 2132 <term>2.2.4: June 25, 2011</term>
2079 <listitem> 2133 <listitem>
2080 <itemizedlist> 2134 <itemizedlist>