Age | Commit message (Collapse) | Author |
|
Avoid representing as PDF Doc encoding any string whose PDF Doc
encoding representation starts with a UTF-16 or UTF-8 marker.
|
|
Make sure that our attempt to test both signed and unsigned char is
actually right.
|
|
|
|
An indirect object reference to 0, 0 is invalid. If it appears in the
file or is parsed from a string, the parser catches it. This check
would only be useful for someone explicitly calling getObject with 0,
0, and that would trigger an error during resolve().
|
|
This was broken for cross-compilation and has probably been
unnecessary for several years now.
Also fix extraneous whitespace in related some tests.
|
|
Replace operator== and operator!=, which were testing for the same
underlying object, with isSameObjectAs. This change was motivated by
the fact that pikepdf internally had its own operator== method for
QPDFObjectHandle that did structural comparison. I backed out qpdf's
operator== as a courtesy to pikepdf (in my own testing) but also
because I think people might naturally assume that operator== does a
structural comparison, and isSameObjectAs is clearer in its intent.
|
|
Expose functions to the C API to create new loggers and to setLogger
and getLogger for QPDF and QPDFJob.
|
|
GNU grep 3.8 started to emit warnings when invoking egrep.
Convert all calls to grep -E.
|
|
|
|
I decided that it's actually fine to copy a direct object to another
QPDF. Even if we eventually prevent a QPDFObject from having multiple
parents, this could happen if an object is moved.
|
|
When a QPDF is destroyed, changing indirect objects to direct nulls
makes them effectively disappear silently when they sneak into other
places. Instead, we should treat this as an error. Adding a destroyed
object type makes this possible.
|
|
|
|
Also, since it's just there for compatibility, we don't need to add
new object types to it.
|
|
The qpdf member was already sufficient. Removing this actually fixed a
few pre-existing issues around detecting foreign ownership and
allowing certain conditions to be warnings rather than exceptions.
|
|
|
|
Add copy_if_fallback and explain how it differs from copy_if_shared.
|
|
|
|
|
|
* Just removing a header file would cause build errors with no hint as
to what happened. This way, people get a warning rather than error
for the life of qpdf 11, and the warning tells them what to do.
* This avoids build surprises resulting from having two versions of
QPDF headers installed at once. If you were building code out of a
checkout of qpdf but had an older version installed on your system,
if your code included <qpdf/QPDFObject.hh>, everything would work,
but then your code would break without QPDFObject.hh later.
|
|
|
|
|
|
|
|
This required moving some newly inlined functions back to the cc file,
but that seems to have had no measurable performance impact.
|
|
|
|
A bug was fixed between qpdf 8.4.2 and 9.0.0 regarding this type of
file (see #305 and #311), but it was necessary to retest after some
major refactoring work at the lexical and parsing layers. This lays
the groundwork for including this in performance benchmarks and in the
qpdf test suite rather than having to keep a large,
non-redistributable file around.
20 arrays of 20K nulls is plenty for performance memory testing and
doesn't take too long to run. Compared to qpdf 8.4.2, in qpdf 11.0.0,
the file generated here uses 3% of the RAM and runs over 4 times
faster.
|
|
Tidy QPDF::getAllPagesInternal and QPDF::pushInheritedAttributesToPageInternal
|
|
destroyed
|
|
Modify QPDFParser::parse to call QPDF::getObject instead.
|
|
|
|
Part of #729
|
|
|
|
|
|
|
|
Avoid calling getAllPagesInternal for each /Page object.
|
|
|
|
|
|
|
|
from "qpdf-v2" to "qpdf": [..., ...]
|
|
Remove any ambiguity around whether old or new value is being
returned.
|
|
Use 'QPDFObjGen const&' instead of 'int, int' in signature.
|
|
Move responsibility for creating shared pointers to objects and cloning from QPDFObjectHandle to QPDFObject.
|
|
We need to know whether pushInheritedAttributesToPage or getAllPages
have been called when generating JSON output. When reading the JSON
back in, we have to call the same methods so that object numbers will
line up properly.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
When there is no context for writing output or error messages, use the
default logger.
|
|
This includes the output PDF, streams from --show-object and
attachments from --save-attachment. This also enables --verbose and
--progress to work with saving to stdout.
|