aboutsummaryrefslogtreecommitdiffstats
path: root/qpdf
AgeCommit message (Collapse)Author
2019-02-01Don't optimize non-8-bit imagesJay Berkenbilt
Also add test cases for additional coverage on image optimization.
2019-02-01Make inline image token exactly contain the image dataJay Berkenbilt
Do not include the trailing EI, and handle cases where EI is not preceded by a delimiter. Such cases have been seen in the wild.
2019-01-31Externalize inline images (fixes #278)Jay Berkenbilt
2019-01-31Remove acroread from testsJay Berkenbilt
This hasn't worked or been exercised in years since Adobe stopped releasing a Linux version of reader.
2019-01-31Exclude space after ID in image dataJay Berkenbilt
2019-01-31Improve locating inline image's EIJay Berkenbilt
We've actually seen a PDF file in the wild that contained EI surrounded by delimiters inside the image data, which confused qpdf's naive code. This significantly improves EI detection.
2019-01-31Refactor QPDFTokenizer's inline image handlingJay Berkenbilt
Add a version of expectInlineImage that takes an input source and searches for EI. This is in preparation for improving the way EI is found. This commit just refactors the code without changing the functionality and adds tests to make sure the old and new code behave identically.
2019-01-31Inline image token value ends with EI, not delimiterJay Berkenbilt
The inline image token erroneously included the delimiter that followed EI. The ObjectHandle created from it was correct.
2019-01-31Typo in messageJay Berkenbilt
2019-01-30Improve info message in optimize images (fixes #280)Jay Berkenbilt
When qpdf can't optimize an image because of an unsupported color space, state this specifically. Recognize that many valid colorspaces are not represented as name objects.
2019-01-29Handle direct page objects (fixes #164)Jay Berkenbilt
2019-01-29Fix logic for when to compress object and xref streams (fixes #271)Jay Berkenbilt
2019-01-29Resolve duplicated page objects (fixes #268)Jay Berkenbilt
When linearizing a file or getting the list of all pages in a file, detect if the pages tree contains a duplicated page object and, if so, shallow copy it. This makes it possible to have a one to one mapping of page positions to page objects.
2019-01-27Add --overlay and --underlay to qpdf CLI (fixes #207)Jay Berkenbilt
2019-01-27Add boundary condition test for getUniqueResourceNameJay Berkenbilt
2019-01-27Convert pages to form XObjectsJay Berkenbilt
Support conversion of pages to form XObjects and placement of form XObjects on pages.
2019-01-26Handle inheritable page attributesJay Berkenbilt
Add getAttribute for handling inheritable page attributes, and fix getPageImages and annotation flattening code to use it.
2019-01-21Handle fallback font size in text appearancesJay Berkenbilt
If we end up using our fallback font size when generating appearances for text fields, reflect that in the Tf operator used in the appearance stream.
2019-01-21Improve text objects used in text appearance streamsJay Berkenbilt
2019-01-21Fix omissions in text appearance generationJay Berkenbilt
When generating appearance streams for variable text annotations, properly handle the cases of there being no appearance dictionary, no appearance stream, or an appearance stream with no BMC..EMC marker.
2019-01-21When flattening, remove annotations with no appearance streamJay Berkenbilt
With the exception of form field annotations when /NeedAppearances is true, remove annotations that don't have appearance streams when flattening. There is no reason to keep these when flattening since they are invisible. This may include unchecked checkboxes, unshown popup windows, etc.
2019-01-19More testing for Unicode passwordsJay Berkenbilt
2019-01-19Implement password recovery suppression and password mode (fixes #215)Jay Berkenbilt
Allow fine control over how passwords are encoded for writing, and allow password for reading to be given as a hexademical encoded string. Allow suppression of password recovery as a means to ensure that the password you specify is actually the right one.
2019-01-19Try passwords with different string encodingsJay Berkenbilt
2019-01-19Refactor qpdf processingJay Berkenbilt
Push calls to processFile and processInputSource into separate functions in preparation for password recovery changes
2019-01-17Remove incorrect content code from test filesJay Berkenbilt
2019-01-17Update CLI and manual for new encryption granularity (fixes #214)Jay Berkenbilt
2019-01-17Modernize encryption API for more granularityJay Berkenbilt
Setting encryption permissions for R >= 3 set permission bits in groups corresponding to menu options in Acrobat 5. The new API allows the bits to be set individually.
2019-01-17Unicode main for Windows qpdf.ccJay Berkenbilt
2019-01-17Move remaining existing transcoding to QUtilJay Berkenbilt
2019-01-17Additional checks for unreferenced resourcesJay Berkenbilt
Explicitly abandon removal of unreferenced resources if there are any lexical errors in the page's contents. This case always generated a warning, but it now also prevents removal of unreferenced resources, this strongly decreasing the likelihood of data loss.
2019-01-17Add tests for shared font/xobjectJay Berkenbilt
The tests are in a separate commit so the bug-fix commit can be taken as a patch for older versions.
2019-01-12Allow adding the same page more than once in --pages (fixes #272)Jay Berkenbilt
2019-01-12Interpret . in --pages as a shortcut for the primary fileJay Berkenbilt
2019-01-11Add QPDF::setImmediateCopyFromJay Berkenbilt
2019-01-07Update copyrights for 2019Jay Berkenbilt
2019-01-07Don't keep QPDF objects for merging longer than neededJay Berkenbilt
2019-01-07Exercise out of scope original pdf for copyForeignObjectJay Berkenbilt
2019-01-07Mostly don't require original QPDF for copyForeignObject (fixes #219)Jay Berkenbilt
The original QPDF is only required now when the source QPDFObjectHandle is a stream that gets its stream data from a QPDFObjectHandle::StreamDataProvider.
2019-01-07Make a static version of QPDF::pipeStreamDataJay Berkenbilt
This is in preparation of being able to pipe a stream's data without keeping a copy of its containing qpdf object.
2019-01-06Honor other base encodings when generating appearancesJay Berkenbilt
2019-01-06Fix image optimization evaluationJay Berkenbilt
Don't attempt to pass data through a JPEG filter if we are unable to filter the data.
2019-01-05Update documentation for new featuresJay Berkenbilt
2019-01-05Split help stringJay Berkenbilt
It was too long for some compilers.
2019-01-05Spell checkJay Berkenbilt
2019-01-05Add CLI flags for image optimizationJay Berkenbilt
2019-01-05Fix image-streams.pdf in test suiteJay Berkenbilt
Some of the images were supposed to have no filter, but somewhere along the line, they ended up with /FlateDecode, most likely because qpdf rewrote the file without having --compress-streams=n specified. If this error is repeated, it will cause a test failure.
2019-01-04Support page collation with --collate (fixes #259)Jay Berkenbilt
2019-01-04Add QPDFWriter::getFinalVersion (fixes #266)Jay Berkenbilt
2019-01-04Fix dangling references (fixes #240)Jay Berkenbilt
On certain operations, such as iterating through all objects and adding new indirect objects, walk through the entire object structure and explicitly resolve any indirect references to non-existent objects. That prevents new objects from springing into existence and causing the previously dangling references to point to them.