Jay Berkenbilt
1c62c2a342
C API: expose functions for indirect objects ( fixes #588 )
2021-12-10 14:57:35 -05:00
Jay Berkenbilt
72c10d8617
C API: overhaul error handling
...
* Handle error conditions that occur when using the object handle
interfaces. In the past, some exceptions were not correctly
converted to errors or warnings.
* Add more detailed information to qpdf-c.h
* Make it possible to work more explicitly with uninitialized objects
2021-12-10 12:16:02 -05:00
Jay Berkenbilt
3340dbe976
Use a specific error code for type warnings and clarify docs
2021-12-10 11:15:49 -05:00
Jay Berkenbilt
a144363653
Add changelog and release note for #587
2021-12-09 10:33:31 -05:00
Jay Berkenbilt
e3cc171d02
C API: qpdf_oh_is_initialized
2021-12-09 10:33:31 -05:00
Jay Berkenbilt
bef2c2222a
C API: qpdf_get_last_string_length
2021-12-09 10:33:31 -05:00
m-holger
0c705a882b
Minor documentation updates
2021-12-09 10:24:14 -05:00
Jay Berkenbilt
ce7db05d22
Prepare 10.4.0 release
2021-11-16 15:44:09 -05:00
Jay Berkenbilt
750aca5b94
First increment of improving handling of weak crypto ( fixes #358 )
2021-11-11 12:24:15 -05:00
Sven Neuhaus
37916f3925
Fix typo in manual
...
Fix typo in --rotate example
2021-11-08 10:28:14 -05:00
Jay Berkenbilt
8c32f91149
Mention OpenSSL 3 for Windows
2021-11-05 12:58:57 -04:00
Jay Berkenbilt
ecfb3a8606
Fix typo in documentation ( fixes #572 )
...
Thanks @neuhaus!
2021-11-05 11:22:25 -04:00
Jay Berkenbilt
4a648b9a00
Fix bug in merging resources /DR from foreign AcroForm ( fixes #548 )
...
When making resources indirect in from_dr, the code was using the
wrong owning QPDF, forgetting that from_dr had already been copied
using CopyForeignObject.
2021-11-04 12:29:42 -04:00
Jay Berkenbilt
9b28933647
Check object ownership when adding
...
When adding a QPDFObjectHandle to an array or dictionary, if possible,
check if the new object belongs to the same QPDF. This makes it much
easier to find incorrect code than waiting for the situation to be
detected when the file is written.
2021-11-04 12:29:42 -04:00
Jay Berkenbilt
73752683c9
Fix overlay/underlay on page with no resources ( fixes #527 )
2021-11-03 16:00:05 -04:00
Jay Berkenbilt
a3a3203f41
Start release notes for 10.4.0
2021-11-03 09:43:17 -04:00
Jay Berkenbilt
42ca1f007a
Document that --check > /dev/null is safe ( fixes #522 )
2021-11-03 09:43:17 -04:00
Jay Berkenbilt
f545f8b076
Add a basic description of QPDF in README.md ( fixes #552 )
...
Also switch URLs for the qpdf and qtest websites to sourceforge.io
(https) instead of sourceforge.net (http).
2021-11-02 15:41:01 -04:00
Jay Berkenbilt
1b59872b36
Switch spelling checker to cspell
2021-09-13 11:10:09 -04:00
Jay Berkenbilt
193739494d
Add missing release note
2021-05-08 10:04:33 -04:00
Jay Berkenbilt
30ac51bc78
Exclude unreferenced objects in object streams ( fixes #520 )
2021-05-08 09:42:09 -04:00
Jay Berkenbilt
3f05429cc5
Prepare 10.3.1 release
2021-03-11 12:59:41 -05:00
Jay Berkenbilt
85884c363c
Allow /DR to be direct in /AcroForm
...
Also handle direct annotation, though this is much less likely.
2021-03-11 11:43:38 -05:00
Jay Berkenbilt
dc65b88457
Prepare 10.3.0 release
2021-03-05 06:15:48 -05:00
Jay Berkenbilt
0b77f2cf26
Revert non-binary-compatible handleWarning change -- see TODO (ABI)
2021-03-04 15:59:46 -05:00
Jay Berkenbilt
9fb174b9e9
Major rework of handling form fields when copying pages ( fixes #509 )
2021-03-04 15:08:37 -05:00
Jay Berkenbilt
fa2516df71
Fix behavior for finding /Q, /DA, and /DR for form fields
...
If not found in the field hierarchy, /Q and /DA are supposed to be
looked up in the document-level form dictionary. /DR is supposed to
only come from the document dictionary.
2021-03-03 17:05:19 -05:00
Jay Berkenbilt
a4d6589ff2
Have QPDFObjectHandle notice when replaceObject was called
...
This results in a performance penalty of 1% to 2% when replaceObject
and swapObjects are never called and a somewhat larger penalty if they
are called, but it's worth it to avoid very confusing behavior as
discussed in depth in qpdf#507.
2021-02-25 07:32:46 -05:00
Jay Berkenbilt
b5e937397c
Prepare 10.2.0 release
2021-02-23 10:41:58 -05:00
Jay Berkenbilt
fb86d2819e
Clean up 10.2 release notes
2021-02-23 10:41:58 -05:00
Jay Berkenbilt
f02aa74bf5
Update pdf-overlay-page example to copy annotations
2021-02-22 18:42:06 -05:00
Jay Berkenbilt
61d41e2e88
Add copyAnnotations, use with overlay/underlay ( fixes #395 )
2021-02-22 18:42:06 -05:00
Jay Berkenbilt
7b3cbacf5d
Change from QPDF{Array,Dict}Items to aitems() and ditems()
2021-02-22 11:05:39 -05:00
Jay Berkenbilt
a9ae8cadc6
Add transformAnnotations and fix flattenRotations to use it
2021-02-21 17:13:09 -05:00
Jay Berkenbilt
92fbc6fdf5
QPDFObjectHandle::copyStream
2021-02-21 06:36:30 -05:00
Jay Berkenbilt
35dd11f356
Allow --rotate=0
2021-02-20 16:29:34 -05:00
Jay Berkenbilt
de8929a41c
Add QPDFAcroFormDocumentHelper::addFormField
2021-02-18 12:25:48 -05:00
Jay Berkenbilt
5cec6b4c3d
Add QPDFPageObjectHelper::getMatrixForFormXObjectPlacement
2021-02-18 12:25:48 -05:00
Jay Berkenbilt
0b1623d07d
Add QUtil::path_basename
2021-02-18 09:59:03 -05:00
Jay Berkenbilt
f21e4f264a
Add file attachment example
2021-02-18 09:59:03 -05:00
Jay Berkenbilt
dfce581754
Add numeric argument to --collate
...
This takes pages from the file in groups of n with default = 1. This
partially fixes the enhancement in issue #505 but doesn't implement
the entire suggestion.
2021-02-17 20:07:45 -05:00
Jay Berkenbilt
a773f4c71d
Add QPDFObjectHandle::parse for strings with context
2021-02-15 11:33:03 -05:00
Jay Berkenbilt
efbb21673c
Add functional versions of QPDFObjectHandle::replaceStreamData
...
Also fix a bug in checking consistency of length for stream data
providers. Length should not be checked or recorded if the provider
says it failed to generate the data.
2021-02-14 14:42:24 -05:00
Jay Berkenbilt
e2593e2efe
Move QPDFMatrix into the public API
2021-02-13 02:30:00 -05:00
Jay Berkenbilt
07f40bd254
QUtil::double_to_string: trim trailing zeroes with option to disable
2021-02-13 02:30:00 -05:00
Jay Berkenbilt
1b3f84f967
Require C++14 instead of C++11
2021-02-10 16:27:58 -05:00
Jay Berkenbilt
accb891b4f
Add attachment information to the json output
2021-02-10 15:46:18 -05:00
Jay Berkenbilt
832d792e4e
Add CLI support for working with attachments
2021-02-10 10:03:27 -05:00
Jay Berkenbilt
ad34b9c278
Implement helpers for file attachments
2021-02-10 06:57:37 -05:00
Jay Berkenbilt
bf0e6eb302
Add QUtil methods for dealing with PDF timestamp strings
2021-02-09 17:50:24 -05:00
Jay Berkenbilt
553ac7f353
Add QUtil::pipe_file and QUtil::file_provider
2021-02-07 19:41:34 -05:00
Jay Berkenbilt
3de67173de
Better fix to insecure password check ( fixes #501 )
2021-02-04 20:44:05 -05:00
Jay Berkenbilt
63158cf546
Add --password-file=filename option ( fixes #499 )
2021-02-04 16:48:53 -05:00
Jay Berkenbilt
21b0f4acfc
Require --allow-insecure to create certain encrypted files ( fixes #501 )
...
For now, --allow-insecure allows creation of files with the owner
passwords empty or matching the user password.
2021-02-04 15:57:13 -05:00
Jay Berkenbilt
faa2e3ddfd
Handle older PDFs whose form XObjects inherit resources ( fixes #494 )
...
When removing unreferenced resources, notice if a page (recursively)
contains a form XObject with unreferenced resources, and count any
such resources as referenced by the page.
2021-02-02 18:06:05 -05:00
Jay Berkenbilt
2046f6536d
Add release note for previous fix
2021-02-02 18:06:05 -05:00
Jay Berkenbilt
1fec40454e
Add example of name/number trees and dictionary/array iteration
2021-01-30 15:52:16 -05:00
Jay Berkenbilt
de0b11fc47
Add C++ iterator API around array and dictionary objects
2021-01-30 15:15:23 -05:00
Jay Berkenbilt
35e7859bc7
Make QPDFObjectHandle::is* return false for uninitialized objects
2021-01-29 15:46:54 -05:00
Jay Berkenbilt
e7e20772ed
name/number trees: remove
2021-01-26 09:12:23 -05:00
Jay Berkenbilt
b5614f611d
Implement repair and insert for name/number trees
2021-01-24 19:31:45 -05:00
Jay Berkenbilt
04edfe9fad
QPDFObjectHandle::newUnicodeString to uses UTF-16 only when needed
...
Use the first of ASCII, PDFDocEncoding, or UTF-16 that is capable of
encoding the string.
2021-01-24 03:27:28 -05:00
Jay Berkenbilt
ba814703fb
Use QPDFNameTreeObjectHelper's iterator directly
2021-01-24 03:25:11 -05:00
Jay Berkenbilt
6226b69dba
Add warn() to QPDF's public API
2021-01-16 18:41:53 -05:00
Jay Berkenbilt
0fed040392
Prepare version 10.1.0
2021-01-04 16:59:55 -05:00
Jay Berkenbilt
891751f618
Remove unreferenced resources only from relevant pages
2021-01-04 15:17:35 -05:00
Jay Berkenbilt
a9bdeeb0e0
Fix zsh completion arguments ( fixes #473 )
2021-01-04 15:17:35 -05:00
Jay Berkenbilt
3be58f49e5
Make more QPDFPageObjectHelper methods work with form XObject
2021-01-02 14:08:53 -05:00
Jay Berkenbilt
98da4fd835
Externalize inline images now includes form XObjects
2021-01-02 14:08:17 -05:00
Jay Berkenbilt
a139d2b36d
Add several methods for working with form XObjects ( fixes #436 )
...
Make some more methods in QPDFPageObjectHelper work with form
XObjects, provide forEach methods to walk through nested form
XObjects, possibly recursively. This should make it easier to work
with form XObjects from user code.
2021-01-02 12:29:31 -05:00
Jay Berkenbilt
c97bd6323e
Add release notes for changes from 10.0.4 so far
2020-12-30 16:45:50 -05:00
Jay Berkenbilt
c9271335fa
Add QPDFPageObjectHelper::flattenRotation and --flatten-rotation
2020-12-30 13:03:55 -05:00
Jay Berkenbilt
78b9d6bfd4
Prepare 10.0.4 release
2020-11-21 13:50:02 -05:00
Jay Berkenbilt
fbe40b800d
Prepare 10.0.3 release
2020-10-31 13:47:03 -04:00
Jay Berkenbilt
bcea54fcaa
Revert removal of unreadCh change for performance
...
Turns out unreadCh is much more efficient than seek(-1, SEEK_CUR).
Update comments and code to reflect this.
2020-10-27 11:57:48 -04:00
Jay Berkenbilt
db08974e88
Release notes for 10.0.2
2020-10-26 19:39:36 -04:00
Jay Berkenbilt
b30deaeeab
Avoid merging adjacent tokens when concatenating contents ( fixes #444 )
2020-10-23 08:00:04 -04:00
Jay Berkenbilt
758e3e38f5
Add option --warning-exit-0 to exit 0 instead of 3 with warnings
2020-10-20 18:02:39 -04:00
Jay Berkenbilt
bbd45cd01c
Clarify qpdf's exit statuses in the documentation
2020-10-15 15:03:14 -04:00
Jay Berkenbilt
8f1db4dcf2
Fix doc typo (--encryption-file-password) ( fixes #468 )
2020-10-15 14:54:34 -04:00
Jay Berkenbilt
a1994a5343
Fix/clarify documentation on --rotate option ( fixes #470 )
...
Make clear that you almost always want + or - before an angle when
specifying rotation.
2020-10-15 14:53:06 -04:00
Jay Berkenbilt
821a701851
Prepare 10.0.1 release
2020-04-09 11:48:26 -04:00
Jay Berkenbilt
1e629c278a
Prepare 10.0.0 release
2020-04-06 11:30:15 -04:00
Jay Berkenbilt
77198d5310
Delegate random number generation to crypto provider ( fixes #418 )
2020-04-06 11:23:02 -04:00
Jay Berkenbilt
619d294e9d
Remove QUtil::srandom
2020-04-06 09:49:02 -04:00
Jay Berkenbilt
1360b530ec
Update ChangeLog and manual for openssl crypto provider
2020-04-06 09:24:12 -04:00
Jay Berkenbilt
3d0de5b924
Fixes to ChangeLog and manual for 10.0.0 changes
2020-04-06 09:02:58 -04:00
Jay Berkenbilt
0837932164
Update documentation and test suite to lock in hard page copy
...
Issue #399 mentioned a use case for which qpdf has support, but the
fact that it is supported was not documented or in the test suite,
making it vulerable to accidental breakage.
2020-04-05 20:07:13 -04:00
Jay Berkenbilt
7246404177
JSON: implement pattern keys in schema
2020-04-04 18:06:32 -04:00
Jay Berkenbilt
2100b4ce15
Allow qpdf to be built on systems without wchar_t ( fixes #406 )
2020-04-03 21:39:44 -04:00
Jay Berkenbilt
b03e6bd65d
Use QPDF_EXECUTABLE as a hint for completion
2020-03-31 17:39:20 -04:00
Jay Berkenbilt
52a2e95dd5
Prepare 9.1.1 release
2020-01-26 18:49:04 -05:00
Jay Berkenbilt
1b37e33df5
Add bug fixes to release notes
2020-01-26 18:46:00 -05:00
Jay Berkenbilt
676cdcff1a
Spell check
2020-01-26 18:32:35 -05:00
Jay Berkenbilt
e5cc065598
Update copyright to 2020
2020-01-26 16:57:27 -05:00
Jay Berkenbilt
12777a04ca
Add encrypt key to json
2020-01-26 14:44:03 -05:00
Jay Berkenbilt
731c4f711b
Add --is-encrypted and --requires-password ( fixes #390 )
...
Allow exit status-based checking of whether a file is encrypted or
requires a password without necessarily supplying the correct
password. Useful for scripting.
2020-01-26 11:26:53 -05:00
Jay Berkenbilt
73a0e3a932
Begin release notes for 9.1.1
2020-01-14 11:53:37 -05:00
Jay Berkenbilt
388990f7bc
Rewrite fix-qdf in C++
2020-01-14 11:53:19 -05:00
Jay Berkenbilt
9b0c6022d7
Prepare 9.1.0 release
2019-11-16 22:29:54 -05:00
Jay Berkenbilt
b9f06fedf1
Fix error in manual
2019-11-15 10:29:11 -05:00
Jay Berkenbilt
b76af9242f
Clean up documentation around gnutls and C++-11
2019-11-11 14:14:31 -05:00
Jay Berkenbilt
0e94aa6919
Fix up documentation around Windows wildcard fix
2019-11-10 20:19:38 -05:00
Jay Berkenbilt
5e6dfc938e
Prepare 9.1.rc1 release
2019-11-09 22:00:53 -05:00
Jay Berkenbilt
021d71454a
Spell check
2019-11-09 19:03:56 -05:00
Jay Berkenbilt
07da0039d3
Link with setargv or wsetargv with MSVC ( fixes #224 )
...
For wildcard expansion to work properly with the msvc binary, it is
necessary to link with setargv.obj or wsetargv.obj, depending on
whether wmain is in use.
2019-11-09 18:50:42 -05:00
Jay Berkenbilt
c4478e5249
Allow odd/even modifiers in numeric range ( fixes #364 )
2019-11-09 13:23:12 -05:00
Jay Berkenbilt
c9cc83621b
Add the word "slow" to preserved unreferenced resources docs ( fixes #380 )
...
This makes it more likely for someone who notices a big slow-down in
page splitting to discover the option.
2019-11-09 12:33:15 -05:00
Jay Berkenbilt
e5cec314bc
Update release notes for crypto providers
2019-11-09 12:33:15 -05:00
Jay Berkenbilt
1ee45458fc
Update docs for crypto providers
2019-11-09 09:53:42 -05:00
Jay Berkenbilt
9b76ec154d
Add ChangeLog and documentation for signature dict enhancements
2019-10-22 16:44:27 -04:00
Jay Berkenbilt
3094955dee
Prepare 9.0.2 release
2019-10-12 19:37:40 -04:00
Jay Berkenbilt
e188d0fffa
Make --replace-input work with / in path ( fixes #365 )
2019-10-12 19:27:50 -04:00
Jay Berkenbilt
4ea940b03c
Prepare 9.0.1 release
2019-09-20 07:38:18 -04:00
Jay Berkenbilt
db2e095a42
Update release notes for upcoming 9.0.1 release
2019-09-19 21:25:34 -04:00
Jay Berkenbilt
8c34d67b88
Fix duplicated release notes entries
2019-08-31 22:11:28 -04:00
Jay Berkenbilt
5462dfce31
Prepare 9.0.0 release
2019-08-31 20:07:36 -04:00
Jay Berkenbilt
d492bb0a90
Add --replace-input option ( fixes #321 )
2019-08-31 15:51:21 -04:00
Jay Berkenbilt
babd12c9b2
Add methods QPDF::anyWarnings and QPDF::closeInputSource
2019-08-31 15:51:20 -04:00
Jay Berkenbilt
b3c91f64bb
Change release notes order
2019-08-31 15:51:06 -04:00
Jay Berkenbilt
5da146c8b5
Track separately whether password was user/owner ( fixes #159 )
2019-08-24 11:01:19 -04:00
Jay Berkenbilt
53930d96d0
Add some clarification to encryption in the manual
...
Per user suggestion in issue 351.
2019-08-23 21:27:41 -04:00
Jay Berkenbilt
2794bfb1a6
Add flags to control zlib compression level ( fixes #113 )
2019-08-23 20:34:21 -04:00
Jay Berkenbilt
3f1ab64066
Pass offset and length to ParserCallbacks::handleObject
2019-08-22 22:54:29 -04:00
Jay Berkenbilt
42d396f1dd
Handle invalid name tokens symmetrically for PDF < 1.2 ( fixes #332 )
2019-08-19 19:48:27 -04:00
Jay Berkenbilt
d9dd99eca3
Attempt to repair /Type key in pages nodes ( fixes #349 )
2019-08-18 18:54:37 -04:00
Jay Berkenbilt
89dacd8eba
Array optimization fixes performance issues ( fixes #305 , #311 )
2019-08-18 09:00:55 -04:00
Thorsten Schöning
8f06da7534
Change list to vector for outline helpers ( fixes #297 )
...
This change works around STL problems with Embarcadero C++ Builder
version 10.2, but std::vector is more common than std::list in qpdf,
and this is a relatively new API, so an API change is tolerable.
Thanks to Thorsten Schöning <6223655+ams-tschoening@users.noreply.github.com>
for the fix.
2019-07-03 20:08:47 -04:00
Jay Berkenbilt
04f45cf652
Treat all linearization errors as warnings
...
This also reverts the addition of a new checkLinearization that
distinguishes errors from warnings. There's no practical distinction
between what was considered an error and what was considered a
warning.
2019-06-23 13:45:45 -04:00
Jay Berkenbilt
c4e286ac79
Fix typo in manual
2019-06-22 20:57:33 -04:00
Jay Berkenbilt
c5ed1b8075
Handle invalid encryption Length ( fixes #333 )
2019-06-22 20:57:33 -04:00
Jay Berkenbilt
551dfbf697
Allow set*EncryptionParameters before filename iset ( fixes #336 )
2019-06-22 20:57:33 -04:00
Jay Berkenbilt
ed62be888c
Fix --completion-* args to work from AppImage ( fixes #285 )
2019-06-22 17:12:01 -04:00
Jay Berkenbilt
1240047528
Try to use pkg-config to find external dependencies ( fixes #324 )
2019-06-22 16:57:52 -04:00
Jay Berkenbilt
f2ef161261
Override umask on install ( fixes #326 )
2019-06-22 16:57:52 -04:00
Jay Berkenbilt
85a3f95a89
qpdf: exit 3 for linearization warnings without errors ( fixes #50 )
2019-06-22 16:57:51 -04:00
Jay Berkenbilt
557bd3c261
Start 9.0.0 release notes
2019-06-22 16:57:51 -04:00
Jay Berkenbilt
6fca27995e
Update casting policy in the documentation
2019-06-21 13:17:45 -04:00
Jay Berkenbilt
b1a78be1a8
Prepare 8.4.2 release
2019-05-18 08:56:37 -04:00
Jay Berkenbilt
a323f6f49f
Prepare 8.4.1 release
2019-04-27 20:44:20 -04:00
Jay Berkenbilt
03e27709f3
Improve Unicode filename testing
...
Remove dependency on the behavior of perl for reliable creation of
Unicode file names on Windows.
2019-04-27 20:37:33 -04:00
Jay Berkenbilt
2b011f9d81
Add --remove-page-labels option ( fixes #317 )
2019-04-20 21:00:43 -04:00
Jay Berkenbilt
e50d5201df
Add --keep-files-open-threshold ( fixes #288 )
2019-04-20 21:00:43 -04:00
Jay Berkenbilt
131a21d36f
Document that linearize disables qdf ( fixes #312 )
2019-04-20 21:00:43 -04:00
Jay Berkenbilt
03074ca5a0
Prepare 8.4.0 release
2019-02-01 22:25:25 -05:00
Jay Berkenbilt
fec5bb124c
Spell check
2019-01-31 21:41:29 -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
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
2712869cf9
Fix logic for when to compress object and xref streams ( fixes #271 )
2019-01-28 21:43:06 -05:00