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.
|