Age | Commit message (Collapse) | Author |
|
When qpdf can't optimize an image because of an unsupported color
space, state this specifically. Recognize that many valid colorspaces
are not represented as name objects.
|
|
|
|
|
|
When linearizing a file or getting the list of all pages in a file,
detect if the pages tree contains a duplicated page object and, if so,
shallow copy it. This makes it possible to have a one to one mapping
of page positions to page objects.
|
|
|
|
|
|
Support conversion of pages to form XObjects and placement of form
XObjects on pages.
|
|
Add getAttribute for handling inheritable page attributes, and fix
getPageImages and annotation flattening code to use it.
|
|
If we end up using our fallback font size when generating appearances
for text fields, reflect that in the Tf operator used in the
appearance stream.
|
|
|
|
When generating appearance streams for variable text annotations,
properly handle the cases of there being no appearance dictionary, no
appearance stream, or an appearance stream with no BMC..EMC marker.
|
|
With the exception of form field annotations when /NeedAppearances is
true, remove annotations that don't have appearance streams when
flattening. There is no reason to keep these when flattening since
they are invisible. This may include unchecked checkboxes, unshown
popup windows, etc.
|
|
|
|
Allow fine control over how passwords are encoded for writing, and
allow password for reading to be given as a hexademical encoded
string. Allow suppression of password recovery as a means to ensure
that the password you specify is actually the right one.
|
|
|
|
Push calls to processFile and processInputSource into separate
functions in preparation for password recovery changes
|
|
|
|
|
|
Setting encryption permissions for R >= 3 set permission bits in
groups corresponding to menu options in Acrobat 5. The new API allows
the bits to be set individually.
|
|
|
|
|
|
Explicitly abandon removal of unreferenced resources if there are any
lexical errors in the page's contents. This case always generated a
warning, but it now also prevents removal of unreferenced resources,
this strongly decreasing the likelihood of data loss.
|
|
The tests are in a separate commit so the bug-fix commit can be taken
as a patch for older versions.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The original QPDF is only required now when the source
QPDFObjectHandle is a stream that gets its stream data from a
QPDFObjectHandle::StreamDataProvider.
|
|
This is in preparation of being able to pipe a stream's data without
keeping a copy of its containing qpdf object.
|
|
|
|
Don't attempt to pass data through a JPEG filter if we are unable to
filter the data.
|
|
|
|
It was too long for some compilers.
|
|
|
|
|
|
Some of the images were supposed to have no filter, but somewhere
along the line, they ended up with /FlateDecode, most likely because
qpdf rewrote the file without having --compress-streams=n specified.
If this error is repeated, it will cause a test failure.
|
|
|
|
|
|
On certain operations, such as iterating through all objects and
adding new indirect objects, walk through the entire object structure
and explicitly resolve any indirect references to non-existent
objects. That prevents new objects from springing into existence and
causing the previously dangling references to point to them.
|
|
|
|
|
|
Create a new need-appearances.pdf based on newer test files with more
modified fields.
|
|
Also add some additional methods for detecting form field types to
assist in the json creation and for later use.
|
|
|
|
|
|
|
|
Thanks to @p-cher for supplying a patch.
|
|
Instead of directly putting the contents of the annotation appearance
streams into the page's content stream, add commands to render the
form xobjects directly. This is a more robust way to do it than the
original solution as it works properly with patterns and avoids
problems with resource name clashes between the pages and the form
xobjects.
|