aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf
AgeCommit message (Collapse)Author
2019-01-03Switch annotation flattening to use the form xobjectsJay Berkenbilt
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.
2019-01-01Annotation flattening including form fieldsJay Berkenbilt
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.
2019-01-01Add QPDFObjectHandle::mergeDictionary()Jay Berkenbilt
2019-01-01Add matrix and annotation appearance stream handlingJay Berkenbilt
Generate page content fragment for rendering appearance streams including all matrix calculation.
2019-01-01Add Matrix class under QPDFObjectHandleJay Berkenbilt
2019-01-01Transformation matrixJay Berkenbilt
2018-12-25JSON::serialize -> unparseJay Berkenbilt
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.)
2018-12-22Move numrange code from qpdf.cc to QUtil.ccJay Berkenbilt
Also move tests to libtests.
2018-12-22Add document and object helpers for outlines (bookmarks)Jay Berkenbilt
2018-12-22Add QPDFObjectHandle::getJSON()Jay Berkenbilt
2018-12-22Add simple JSON serializerJay Berkenbilt
2018-12-22Add QPDFNameTreeObjectHelperJay Berkenbilt
2018-12-21Minor cleanupJay Berkenbilt
2018-12-18Add QPDFPageLabelDocumentHelperJay Berkenbilt
2018-12-18Add QPDFNumberTreeObjectHelperJay Berkenbilt
2018-12-18Add QPDFObjectHandle::wrapInArray()Jay Berkenbilt
Wrap an object in an array if it is not already an array.
2018-10-11Commit automatically generated filesJay Berkenbilt
2018-08-18Prepare 8.2.1 releaserelease-qpdf-8.2.1Jay Berkenbilt
2018-08-16Prepare 8.2.0 releaserelease-qpdf-8.2.0Jay Berkenbilt
2018-08-16Missing header for std::maxJay Berkenbilt
2018-08-14Fix error in QPDFSystemError.ccJay Berkenbilt
2018-08-14New exception class QPDFSystemError (fixes #221)Jay Berkenbilt
2018-08-13Fix fallback logic for encryption (fixes #229)Jay Berkenbilt
2018-08-13Fix one more identifier (fixes #236)Jay Berkenbilt
2018-08-13Catch exceptions as const references (fixes #236)Jay Berkenbilt
This fix allows qpdf to compile/test cleanly with gcc 8.
2018-08-12Pl_Buffer: reduce memory growth (fixes #228)Jay Berkenbilt
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.
2018-08-12Protect headers with compliant identifiers (fixes #233)Jay Berkenbilt
2018-08-12Fix memory access errorJay Berkenbilt
A previous fix introduced a potentially memory overrun under certain rare conditions. The test suite now once again passes with address sanitizer.
2018-08-12Remove some extraneous null pointer checks (fixes #234)Jay Berkenbilt
There were a few places in the code that were checking that a pointer wasn't null before deleting it, even though C++ has always allowed delete 0. Most of the code did not perform these checks.
2018-08-06Fix EOL handling inside strings (fixes #226)Jay Berkenbilt
CR, CRLF, and LF are all supposed to be treated as LF; only one EOL is to be ignored after backslash.
2018-08-05Return correct method for string encryption (fixes #227)Jay Berkenbilt
2018-08-05Fix infinite loop on small files with progress reporting (fixes #230)Jay Berkenbilt
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?
2018-08-05ClosedFileInputSource: add method to keep file openJay Berkenbilt
During periods of intensive operation on a specific file, this method can reduce the overhead of repeated open/close operations.
2018-06-23Prepare 8.1.0 releaserelease-qpdf-8.1.0Jay Berkenbilt
2018-06-23Bug fix: honor encryption key length with R=3 (fixes #212)Jay Berkenbilt
2018-06-22Add progress reporting for QPDFWriter (fixes #200)Jay Berkenbilt
2018-06-22Add method to get count of objects in QPDFJay Berkenbilt
2018-06-22Correct incorrect commentJay Berkenbilt
2018-06-22Add ClosedFileInputSourceJay Berkenbilt
ClosedFileInputSource is an input source that keeps the file closed when not reading it.
2018-06-22Don't prune resource dictionaries on errors or by requestJay Berkenbilt
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.
2018-06-22Treat content stream parsing errors as an error, not a warningJay Berkenbilt
If parsing content streams is treated as a warning, there is no way for a caller to know if a parsing operation has failed. This is very dangerous and will likely result in data loss when token filters are parser callbacks are in use.
2018-06-22When splitting files, remove unreferenced objects (fixes #203)Jay Berkenbilt
2018-06-22Fix QPDFObjectHandle::shallowCopyJay Berkenbilt
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.
2018-06-21Allow setting a form field's valueJay Berkenbilt
2018-06-21Better support for creating Unicode stringsJay Berkenbilt
2018-06-21QUtil::toUTF16Jay Berkenbilt
2018-06-21Implement helper class for interactive formsJay Berkenbilt
2018-06-21Add QPDFPageDocumentHelper and QPDFPageObjectHelperJay Berkenbilt
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.
2018-06-21Add QPDFObjectHandle::Rectangle typeJay Berkenbilt
Provide a convenient way of accessing rectangles.
2018-05-12newline before endstream fix for object streams (fixes #205)Jay Berkenbilt