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 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 6 * Figure out a way to update the C API with something that can
17 7 update dictionary keys at least with strings. Make sure it is
18 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 12 General
30 13 =======
... ... @@ -139,12 +122,14 @@ Index: QPDFWriter.cc
139 122 code to handle it properly. In QPDF_encryption.cc, search for
140 123 cf_file. Remove exception thrown if cf_file is different from
141 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 134 * The description of Crypt filters is unclear with respect to how to
150 135 use them to override /StmF for specific streams. I'm not sure
... ...
manual/qpdf-manual.xml
... ... @@ -2075,6 +2075,60 @@ print "\n";
2075 2075 </para>
2076 2076 <variablelist>
2077 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 2132 <term>2.2.4: June 25, 2011</term>
2079 2133 <listitem>
2080 2134 <itemizedlist>
... ...