Age | Commit message (Collapse) | Author |
|
Also update maintainer documentation on binary compatibility testing.
|
|
|
|
For non-encrypted files, determinstic ID generation uses file contents
instead of timestamp and file name. At a small runtime cost, this
enables generation of the same /ID if the same inputs are converted in
the same way multiple times.
|
|
There have been a few enhancements requested that only affect the qpdf
command line tool and that should be relatively quick to implement.
Work out the details and acknowledge these publicly in the TODO file.
|
|
Pushing inherited objects to pages and getting all pages were both
prone to stack overflow infinite loops if there were loops in the
Pages dictionary. There is a general weakness in the code in that any
part of the code that traverses the Pages structure would be prone to
this and would have to implement its own loop detection. A more robust
fix may provide some general method for handling the Pages structure,
but it's probably not worth doing.
Note: addition of *Internal2 private functions was done rather than
changing signatures of existing methods to avoid breaking
compatibility.
|
|
|
|
Also remove some trivial, non-functional code.
|
|
|
|
If not available, give an error. The user may also configure qpdf to
use an insecure random number generator.
|
|
|
|
4.2.0 was binary incompatible in spite of there being no deletions or
changes to any public methods. As such, we have to bump the ABI and
are fixing some API breakage while we're at it.
Previous 4.3.0 target is now 5.1.0.
|
|
|
|
|
|
|
|
Bug fixes for 4.2.0 force additional interfaces, so move most of the
4.2.0 items to 4.3.0.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
When copying dlls, make sure to only consider DLLs whose type matches
the type of what is loading them.
|
|
|
|
Prepare update for TODO for publication since there is useful
information there for people looking at the repository.
|
|
These object types are to facilitate content stream parsing.
|
|
|
|
|
|
Read and write support is implemented for /V=5 with /R=5 as well as
/R=6. /R=5 is the deprecated encryption method used by Acrobat IX.
/R=6 is the encryption method used by PDF 2.0 from ISO 32000-2.
|
|
Test cases added in a future commit since they depend on /R=6 support.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
This replaces a PDF from the wild that I didn't want to include in the
test suite but used to verify the original fix.
|
|
|
|
|
|
|
|
3.0.rc1
|
|
Implement --pages ... -- option for qpdf. Update TODO with remaining
things to document.
|
|
|
|
|
|
Move object parsing code from QPDF to QPDFObjectHandle and
parameterize the parts of it that are specific to a QPDF object.
Provide a version that can't handle indirect objects and that can be
called on an arbitrary string.
A side effect of this change is that the offset used when reporting
invalid stream length has changed, but since the new value seems like
a better value than the old one, the test suite has been updated
rather than making the code backward compatible. This only effects
the offset reported for invalid streams that lack /Length or have an
invalid /Length key.
Updated some test code and exmaples to use QPDFObjectHandle::parse.
Supporting changes include adding a BufferInputSource constructor that
takes a string.
|
|
|
|
Add --copy-encryption and --encryption-file-password options to qpdf.
Also strengthen test suite for copying encryption. The strengthened
test suite would have caught the failure to preserve AES and the
failure to update the file version, which was invalidating the
encrypted data.
|
|
Method to copy encryption parameters from another file. Adapted from
existing code to copy encryption parameters from the original file.
|