Jay Berkenbilt
03074ca5a0
Prepare 8.4.0 release
2019-02-01 22:25:25 -05:00
Jay Berkenbilt
38a6cf8866
Update binary compatibility test instructions
...
Since autogenerated files are now committed, we no longer need to
rerun ./autogen.sh and actually shouldn't because it could mask
errors.
2019-02-01 22:25:25 -05:00
Jay Berkenbilt
8acf636b4e
Incorporate improved Windows fragility workaround from qtest
2019-02-01 22:25:25 -05:00
Jay Berkenbilt
d491ed8753
TODO
2019-01-31 22:02:26 -05:00
Jay Berkenbilt
fec5bb124c
Spell check
2019-01-31 21:41:29 -05:00
Jay Berkenbilt
1fba24aada
Add another test case for weird page trees
2019-01-31 21:29:28 -05:00
Jay Berkenbilt
0a470d2daf
Don't optimize non-8-bit images
...
Also add test cases for additional coverage on image optimization.
2019-01-31 21:29:28 -05:00
Jay Berkenbilt
eb49e07c0a
Make inline image token exactly contain the image data
...
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-31 20:28:44 -05:00
Jay Berkenbilt
5211bcb5ea
Externalize inline images ( fixes #278 )
2019-01-31 10:38:13 -05:00
Jay Berkenbilt
22bcdbe786
Remove acroread from tests
...
This hasn't worked or been exercised in years since Adobe stopped
releasing a Linux version of reader.
2019-01-31 10:38:13 -05:00
Jay Berkenbilt
1eb35a355f
Exclude space after ID in image data
2019-01-31 10:38:10 -05:00
Jay Berkenbilt
2b6c79bcae
Improve locating inline image's EI
...
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-31 09:26:37 -05:00
Jay Berkenbilt
ec9e310c9e
Refactor QPDFTokenizer's inline image handling
...
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-31 09:26:37 -05:00
Jay Berkenbilt
31372edce0
Inline image token value ends with EI, not delimiter
...
The inline image token erroneously included the delimiter that
followed EI. The ObjectHandle created from it was correct.
2019-01-31 09:26:37 -05:00
Jay Berkenbilt
c136356378
Typo in message
2019-01-31 09:26:37 -05:00
Jay Berkenbilt
b776dcd2d3
Clean up some private functions
2019-01-29 22:14:20 -05:00
Jay Berkenbilt
8d229e078f
Improve info message in optimize images ( fixes #280 )
...
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-29 18:16:02 -05:00
Jay Berkenbilt
8a9cfd2605
Handle direct page objects ( fixes #164 )
2019-01-29 17:01:36 -05:00
Jay Berkenbilt
2d0885bc11
Clarify documentation for copyForeignObject regarding pages
...
Make explicit that copyForeignObject can be used on page objects and
will copy them properly but not update the pages tree.
2019-01-28 21:53:55 -05:00
Jay Berkenbilt
2712869cf9
Fix logic for when to compress object and xref streams ( fixes #271 )
2019-01-28 21:43:06 -05:00
Jay Berkenbilt
52f9d326a5
Resolve duplicated page objects ( fixes #268 )
...
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-28 20:29:58 -05:00
Jay Berkenbilt
9e01c8bd99
TODO
2019-01-28 20:12:43 -05:00
Jay Berkenbilt
4d0cb21ffa
Fix typo in documentation
2019-01-28 11:15:27 -05:00
Jay Berkenbilt
60f1f4537f
Download external libraries from github
...
Download external libraries from an isolated branch in github to avoid
dependencies on external download locations, which cause sporadic CI
build failures.
2019-01-27 19:56:20 -05:00
Jay Berkenbilt
54bd37e881
TODO
2019-01-27 09:30:40 -05:00
Jay Berkenbilt
426434c772
Add --overlay and --underlay to qpdf CLI ( fixes #207 )
2019-01-27 09:30:13 -05:00
Jay Berkenbilt
c2ae35540e
Add boundary condition test for getUniqueResourceName
2019-01-27 09:26:33 -05:00
Jay Berkenbilt
2d1db06042
Example of form XObject, page overlay
2019-01-27 07:50:30 -05:00
Jay Berkenbilt
623f5b664e
Convert pages to form XObjects
...
Support conversion of pages to form XObjects and placement of form
XObjects on pages.
2019-01-27 07:50:30 -05:00
Jay Berkenbilt
68ccd87c9e
Move rectangle transformation into QPDFMatrix
2019-01-27 07:50:30 -05:00
Jay Berkenbilt
8cb245739c
Add QPDFObjectHandle::getUniqueResourceName
2019-01-27 07:50:30 -05:00
Jay Berkenbilt
009767d97a
Handle inheritable page attributes
...
Add getAttribute for handling inheritable page attributes, and fix
getPageImages and annotation flattening code to use it.
2019-01-25 22:30:05 -05:00
Jay Berkenbilt
2d32f4db8f
Handle fallback font size in text appearances
...
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-21 07:38:21 -05:00
Jay Berkenbilt
9cb599875b
Improve text objects used in text appearance streams
2019-01-20 23:05:58 -05:00
Jay Berkenbilt
930eade6d3
Fix omissions in text appearance generation
...
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-20 23:05:58 -05:00
Jay Berkenbilt
65ef0bf313
When flattening, remove annotations with no appearance stream
...
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-20 23:05:58 -05:00
Jay Berkenbilt
85f70cae23
TODO
2019-01-20 23:05:58 -05:00
Jay Berkenbilt
9315aa4bb0
TODO
2019-01-19 16:00:26 -05:00
Jay Berkenbilt
e1271361c5
Add documentation for features since 8.3.0
2019-01-19 15:58:51 -05:00
Jay Berkenbilt
0a3057dc0a
More testing for Unicode passwords
2019-01-19 14:16:03 -05:00
Jay Berkenbilt
edc3b309bc
TODO
2019-01-19 10:25:19 -05:00
Jay Berkenbilt
c18ee440a3
mingw workaround for QPDFExc destructor
...
mingw doesn't like it when you don't inline empty virtual destructors.
2019-01-19 10:14:07 -05:00
Jay Berkenbilt
c2030d1f33
Implement password recovery suppression and password mode ( fixes #215 )
...
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-19 10:14:07 -05:00
Jay Berkenbilt
392f2ece51
Try passwords with different string encodings
2019-01-19 10:10:58 -05:00
Jay Berkenbilt
e4fa5a3c2a
Refactor qpdf processing
...
Push calls to processFile and processInputSource into separate
functions in preparation for password recovery changes
2019-01-19 10:10:58 -05:00
Jay Berkenbilt
e87d149918
Add QUtil::possible_repaired_encodings
2019-01-17 11:43:56 -05:00
Jay Berkenbilt
997f4ab6cb
Remove incorrect content code from test files
2019-01-17 11:43:56 -05:00
Jay Berkenbilt
966429e718
Update CLI and manual for new encryption granularity ( fixes #214 )
2019-01-17 11:43:56 -05:00
Jay Berkenbilt
6ec22f117d
Modernize encryption API for more granularity
...
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-17 11:43:56 -05:00
Jay Berkenbilt
4630377731
Add status-reporting transcoders to QUtil
2019-01-17 11:43:56 -05:00