Age | Commit message (Collapse) | Author |
|
|
|
Detect a missing page range and assume 1-z.
|
|
Space rather than newline after xref, missing /ID in trailer for
encrypted file. This enables qpdf to handle some files that xpdf can
handle. Adobe reader can't necessarily handle them.
|
|
Even though this case is not valid according to the spec, it has been
seen, and caused an internal error.
|
|
|
|
Rework QPDFWriter to always track old object IDs and QPDFObjGen
instead of int, thus not discarding the generation number. Switch to
QPDF::getCompressibleObjGen() to properly handle the case of an old
object eligible for compression that has a generation of other than
zero.
|
|
This is safer than getObjectID() and getGeneration() for many uses.
|
|
|
|
|
|
|
|
When copying dlls, make sure to only consider DLLs whose type matches
the type of what is loading them.
|
|
|
|
|
|
Make remaining calls to fopen and strerror use strerror_s and fopen_s
on MSVC.
|
|
fopen was previuosly called wrapped by QUtil::fopen_wrapper, but
QUtil::safe_fopen does this itself, which is less cumbersome.
|
|
|
|
Make them safer by avoiding any internal limits and replacing sprintf
with std::ostringstream.
|
|
Make --enable-werror work properly on msvc, handle extra warnings
flags for msvc in configure.ac instead of hardcoding into
make/msvc.mk, separate warnings flags into WFLAGS in autoconf.mk to
avoid duplication and to make it easier to override.
|
|
Add QUtil::hex_encode to encode binary data has a hexadecimal string,
and use it in place of sprintf where possible.
|
|
When caching objects in an object stream, only cache objects that
still resolve to that stream. See Changelog mod from this commit for
details.
|
|
Some distributions (like debian) don't want .la files to be installed,
but the responsibility for doing this should like in the packaging,
not in qpdf itself.
|
|
Fix exit status for case of errors without warnings, continue after
errors when possible, add test case for parsing a file with content
stream errors on some but not all pages.
|
|
Also move writing to null and parsing of content streams out of the
wrong if block.
|
|
Change object type Keyword to Operator, and place the order of the
object types in object_type_e in the same order as they are mentioned
in the PDF specification.
Note that this change only breaks backward compatibility with code
that has not yet been released.
|
|
Add virtual methods to QPDFObject, wrappers to QPDFObjectHandle, and
implementations to all the QPDF_Object types.
|
|
This method allows parsing of the PDF objects in a content stream or
array of content streams.
|
|
These object types are to facilitate content stream parsing.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Allowing users to subclass InputSource and Pipeline to read and write
from/to arbitrary sources provides the maximum flexibility for users
who want to read and write from other than files or memory.
|
|
|
|
|
|
This makes it possible to use two different writers to write
linearized files from the same QPDF object.
|
|
|
|
|
|
Previously only whitespace and comments did it. This fix is needed
for object streams whose last object is a literal (name, integer,
real, string) not terminated by space or newline.
|
|
|
|
|
|
Previous commit lost coverage case for buffer-based replaceStreamData.
|
|
|
|
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.
|
|
|