-
Wrap an object in an array if it is not already an array.
-
Use free Azure Pipelines to do Linux, Windows, and Mac build and test and to generate Windows binary distributions.
-
Rather than keeping a list of buffers for every write, accumulate bytes in a single buffer, doubling the size of the buffer when needed to accommodate new data. This is not the best possible implementation, but the change was implemented in this way to avoid changing the shape of Pl_Buffer and thus breaking backward compatibility.
-
CR, CRLF, and LF are all supposed to be treated as LF; only one EOL is to be ignored after backslash.
-
Turns out you can keep adding zero to a number over and over again and it just doesn't get any bigger. Who would have known?
-
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.
-
If we are unable to filter a page's content streams, don't attempt to remove objects from the page's resource dictionary. Also provide a command line option to suppress resource removal in case we ever need this as a workaround for some bug or broken PDF files.
-
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.
-
This fixes CVE-2018-9918.
-
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.
-
Prior to this fix, if there was a loop detected in following /Prev pointers in xref streams/tables, it would cause qpdf to lose data. Note that this condition causes many PDF readers to hang or fail.