Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
|
|
Instead of calling assert for problems found during checking
linearization data, throw an exception which is later caught and
issued as an error. Ideally we would handle errors more robustly, but
this is still a significant improvement.
|
|
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.
|
|
|
|
|
|
|
|
Also add some additional methods for detecting form field types to
assist in the json creation and for later use.
|
|
|
|
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.
|
|
Flatten annotations by integrating their appearance streams into the
content stream of the containing page. In the case of form fields,
only flatten if /NeedAppearance is false (or equivalently absent). If
flattening form fields, also remove /AcroForm from the document
catalog.
|
|
|
|
Generate page content fragment for rendering appearance streams
including all matrix calculation.
|
|
|
|
Unparse is admittedly strange, but I'd rather be strange and
consistent, and everything else in the qpdf library uses unparse to
serialize. (If you're reading this, the convention of using "unparse"
comes from the "clu" programming language.)
|
|
Also move tests to libtests.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Wrap an object in an array if it is not already an array.
|
|
|
|
|
|
|
|
CR, CRLF, and LF are all supposed to be treated as LF; only one EOL is
to be ignored after backslash.
|
|
A few public destructors were missing QPDF_DLL, which could cause some
Windows applications to fail to link.
|
|
During periods of intensive operation on a specific file, this method
can reduce the overhead of repeated open/close operations.
|
|
|
|
|
|
|
|
|
|
ClosedFileInputSource is an input source that keeps the file closed
when not reading it.
|
|
|
|
It's not really a shallow copy. It just doesn't cross indirect object
boundaries. The old implementation had a bug that would cause multiple
shallow copies of the same object to share memory, which was not the
intention.
|
|
|
|
|
|
|
|
|
|
This is the beginning of higher-level API support using helper
classes. The goal is to be able to add more helpers without continuing
to pollute QPDF's and QPDFObjectHandle's public interfaces.
|
|
Provide a convenient way of accessing rectangles.
|
|
Remove calls to assertPageObject(). All cases in the library that
called assertPageObject() work fine if you don't call
assertPageObject() because nothing assumes anything that was being
checked by that call. Removing the calls enables more files to be
successfully processed.
|
|
The QPDF_String::getUTF8Val() method was not treating strings that
weren't explicitly Unicode as PDF Doc Encoded. This only affects
characters in the range 0x80 through 0xa0.
|
|
|
|
Give objects descriptions and context so it is possible to issue
warnings instead of fatal errors for attempts to access objects of the
wrong type.
|
|
As in other cases, this is to enable adding new member variables in
the future without breaking ABI compatibility.
|