Commit cb0c8ca2feaaca105cf2d9cf2489b49f028ae3d4
1 parent
9a1fad40
update release notes and TODO for changes made so far
Showing
2 changed files
with
64 additions
and
25 deletions
TODO
| 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> | ... | ... |