2
1
mirror of https://github.com/qpdf/qpdf.git synced 2024-12-22 19:08:59 +00:00

update release notes and TODO for changes made so far

This commit is contained in:
Jay Berkenbilt 2011-08-11 08:17:39 -04:00
parent 9a1fad4077
commit cb0c8ca2fe
2 changed files with 64 additions and 25 deletions

35
TODO
View File

@ -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

View File

@ -2073,6 +2073,60 @@ print "\n";
For a detailed list of changes, please see the file
<filename>ChangeLog</filename> in the source distribution.
</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>