m-holger
902fd6df71
Change Pl_TIFFPredictor::cur_row to std::vector<unsigned char>
2024-01-26 20:20:16 +00:00
Jay Berkenbilt
4660e23262
Merge pull request #1128 from m-holger/reconstruct
...
Tighten checks for invalid indirect references during xref reconstru…
2024-01-20 12:43:07 -05:00
m-holger
b6a2b5d3c1
Handle default-constructed JSON objects
2024-01-18 10:06:43 +00:00
m-holger
f0343565ed
Tighten checks for invalid indirect references during xref reconstruction
2024-01-17 14:11:57 +00:00
m-holger
ed43691bf3
Tighten checks for invalid indirect references in QPDFParser
2024-01-17 13:15:13 +00:00
m-holger
6e3b7982db
Fix incorrect handling of invalid negative object ids
...
Fix two errors introduced in #1110 and #1112 . Since
#1110 , encountering the invalid indirect reference #1110
-2147483648 n R produces an integer underflow which, if
undetected, immediately trigger a logic error. Since
#1112 , object -1 0 R may be incorrectly identified as
an earlier generation of itself and deleted,
invalidating a live iterator.
2024-01-17 10:39:06 +00:00
Jay Berkenbilt
37cf128501
Remove extraneous blank lines
2024-01-15 11:07:49 -05:00
m-holger
dca5927ba0
Tweak Handlers::json_handlers
...
Use std::vector instead of list and move shared pointers
2024-01-15 15:18:55 +00:00
m-holger
b85a590bc5
Tweak Handlers::beginUnderOverlay and beginPages
2024-01-15 15:03:33 +00:00
m-holger
a41b789995
Add new method JSON::getDictItem
2024-01-15 15:02:52 +00:00
Jay Berkenbilt
ebb10f3256
Fix null pointer issue on array copy
2024-01-12 08:05:22 -05:00
Jay Berkenbilt
90a97bf4ef
Include filename in verbose output for overlay/underlay
2024-01-11 06:13:57 -05:00
Jay Berkenbilt
5b2e543089
Honor repeated overlay/underlay
2024-01-11 06:13:57 -05:00
Jay Berkenbilt
6cf04b0a88
Allow repetition of overlay/underlay
...
This is just QPDFJob wiring.
2024-01-11 06:13:57 -05:00
Jay Berkenbilt
0161f62e38
QPDFJob JSON: allow single item in place of array
2024-01-11 06:13:57 -05:00
Jay Berkenbilt
7de0b3f3c0
JSONHandler: add fallback handler support
2024-01-11 06:13:57 -05:00
Jay Berkenbilt
12f7a4461b
Handle pages/under/overlay JSON file in begin
...
...since they have to be handled before other options. It was working
because, in both cases, `file` was alphabetically before the other
keys, but this implementation gives a stronger guarantee.
2024-01-10 16:45:14 -05:00
Jay Berkenbilt
9c723aeb56
Allow --file with --overlay and --underlay
2024-01-10 16:44:46 -05:00
Jay Berkenbilt
34f013c1be
Allow --file and --range with --pages
...
Accept --file and --range as named parameters in additional to
allowing positional arguments. This is in preparation for adding
additional flags.
2024-01-10 16:44:17 -05:00
Jay Berkenbilt
20a134826c
Fix arg parsing check with --collate
...
The check for the number of items was in the wrong place.
2024-01-10 06:49:31 -05:00
m-holger
5e9de5cd50
Tune handling of sparse arrays in QPDF_Array
...
Sparse arrays are rare. Dynamically create the variables needed to manage
them only when needed.
2024-01-10 09:36:18 +00:00
m-holger
e28625144d
Tweak QPDF::getCompressibleObjGens
2024-01-08 10:55:51 -05:00
Jay Berkenbilt
adb866efd3
Fix error from older gcc versions
2024-01-08 10:55:51 -05:00
m-holger
8715d6a693
Tweak QPDF::replaceObject
2024-01-08 11:54:33 +00:00
m-holger
5641832e54
Tweak QPDF::read_xref
2024-01-08 11:43:57 +00:00
Jay Berkenbilt
07f6c635a9
Bug fix: treat old generations of reused objects as null
2024-01-07 17:16:14 -05:00
Jay Berkenbilt
df61f3a6c6
Improve getCompressibleObjGens fix to handle gen > 0
2024-01-07 15:22:04 -05:00
m-holger
ba477e0b33
Tune QPDF::getCompressibleObjGens
...
Change set visited to std::vector<bool>
2024-01-07 17:39:40 +00:00
m-holger
6195499598
Tune QPDF::getCompressibleObjGens
...
Swap front and back, and change queue from list to vector
2024-01-07 16:39:03 +00:00
Jay Berkenbilt
55b0024899
Format code
2024-01-06 17:23:45 -05:00
Jay Berkenbilt
e50ff67d00
Remove explicit type from PageLabel dictionary
...
The old code didn't put one there, and it's not really useful. It just
makes the file (trivially) larger.
2024-01-06 17:20:55 -05:00
Jay Berkenbilt
7b3fff15a9
QPDF.cc: remove unused includes
2024-01-06 17:19:16 -05:00
Jay Berkenbilt
2994f9cf4c
Attempt to find xref streams during recovery ( fixes #1103 )
2024-01-06 16:51:03 -05:00
Jay Berkenbilt
7cac433e2d
Implement --set-page-labels and supporting API ( fixes #939 )
2024-01-05 17:12:12 -05:00
Jay Berkenbilt
08e3050d5f
Automated changes for --set-page-labels
...
This commit contains the changes from generate_auto_job based on
manual changes from the previous commit.
2024-01-05 17:10:45 -05:00
Jay Berkenbilt
a0e70b370a
Wiring for --set-page-labels: manual (non-bisectable commit)
...
This commit contains only the manual changes. It is separated for
clarity. This commit would not pass CI because it lacks the automated
changes, which appear in the next commit.
2024-01-05 17:10:32 -05:00
Jay Berkenbilt
bfc5fc51f2
Remove unused argument in private setWriterOptions method
2024-01-04 07:31:00 -05:00
Jay Berkenbilt
d8d70ecca2
Support comma-separated numeric values with --collate ( fixes #505 )
2024-01-01 18:57:32 -05:00
Jay Berkenbilt
9db5d75b2b
Update copyright to 2024
2024-01-01 10:56:06 -05:00
Jay Berkenbilt
070ee710eb
Support excluding values from numeric ranges ( fixes #564 , #790 )
2024-01-01 10:48:14 -05:00
Jay Berkenbilt
708ea4ef43
Completely rewrite QUtil::parse_numrange
2024-01-01 10:32:33 -05:00
Jay Berkenbilt
78a7193fe2
Preserve annotations that inherently lack appearance ( fixes #1039 )
...
...when flattening annotations. This includes /Link, /Popup,
and /Projection.
2023-12-29 13:40:08 -05:00
Jay Berkenbilt
1ad6451e8c
Fix comment formatting and update notes
2023-12-29 13:16:01 -05:00
Jay Berkenbilt
a3b939ce58
Tweak utf8 checks
2023-12-27 10:48:54 -05:00
Jay Berkenbilt
6d4115b7c5
Detect overlong UTF-8 strings
2023-12-25 11:17:17 -05:00
Jay Berkenbilt
4ca185fd96
Remove --disable-signatures; incorporate into --remove-restrictions
...
Rather than adding yet another flag that is almost never useful on its
own, just have --remove-restrictions disable digital signatures. The
operations are still separate in the API.
2023-12-24 07:36:07 -05:00
Jay Berkenbilt
6b8aa1db6f
Spell check
2023-12-23 10:00:03 -05:00
Jay Berkenbilt
909a0b3f3a
Implement --disable-signatures ( fixes #1015 )
2023-12-23 08:50:42 -05:00
Jay Berkenbilt
3d33a3a1e3
Add QPDFAcroFormDocumentHelper::disableDigitalSignatures
2023-12-23 08:44:47 -05:00
Jay Berkenbilt
7c0fdf8510
Format code, bump clang-format version to 18
2023-12-22 21:45:10 -05:00
Jay Berkenbilt
c0c7cef16c
Generate a UNIX man page ( fixes #874 )
2023-12-22 21:22:34 -05:00
Jay Berkenbilt
1f45686843
Handle --encrypt -- without crashing
2023-12-22 20:10:21 -05:00
Jay Berkenbilt
7d7e2234a5
Implement new --encrypt args and completion ( fixes #784 )
...
Positional arguments are supported in a backward-compatible way, but
completion no longer guides users to it.
2023-12-22 20:10:18 -05:00
Jay Berkenbilt
1173a0bdfc
Add --user-password, --owner-password, --bits to --encrypt
...
Add the command-line arguments. They don't do anything yet.
2023-12-22 18:13:05 -05:00
Jay Berkenbilt
17703a8dcd
Remove unused includes
2023-12-22 17:30:28 -05:00
Jay Berkenbilt
86ea2012bd
Allow other than /Yes and /Off in a check box ( fixes #1056 )
2023-12-22 14:42:16 -05:00
Jay Berkenbilt
b670565abc
Convert scientific notation in JSON to fixed point ( fixes #1079 )
...
JSON accepts scientific notation, but PDF doesn't.
2023-12-21 17:56:30 -05:00
Jay Berkenbilt
4400ce84ee
Add "n:/pdf-name" to qpdf JSON for binary names ( fixes #1072 )
2023-12-21 17:43:29 -05:00
Jay Berkenbilt
bb12a7ff8d
Tweak comment in QPDFParser refactor
2023-12-21 15:45:34 -05:00
Jay Berkenbilt
b8fd18ae56
Merge branch 'parse_ref' into work
2023-12-21 15:43:50 -05:00
Jay Berkenbilt
d61612a2e5
Bug fix: don't compress hint streams when --compress-streams=n
2023-12-20 15:46:20 -05:00
Jay Berkenbilt
c5f622a09e
Bug fix: don't compress object/xref streams with --compress-streams=n
2023-12-20 15:46:20 -05:00
Jay Berkenbilt
290742b069
Merge pull request #1070 from m-holger/flate
...
Change default for SF_FlateLzwDecode::columns to 1
2023-12-16 11:50:17 -05:00
Jay Berkenbilt
b0b6d9f21f
Merge pull request #1067 from m-holger/pl_buff
...
Reduce copying of Buffer contents
2023-12-16 11:31:11 -05:00
Jay Berkenbilt
d7a364b882
Allow regular C++ functions to interoperate with the C API
2023-12-16 10:06:34 -05:00
Jay Berkenbilt
414c83f767
Install cmake files with dev component
2023-12-09 06:28:13 -05:00
m-holger
368666899f
Refactor InlineImageTracker::handleToken
2023-11-26 13:08:55 +00:00
m-holger
ddad5ad53e
In QPDF::pipeStreamData use unique_ptr as heap
2023-11-26 13:06:12 +00:00
m-holger
0dee397075
In QPDF::pipeStreamData read buffer in a single read
2023-11-26 12:26:57 +00:00
m-holger
9f7f9496ed
Add Buffer constructors taking std::string parameters
2023-11-26 12:26:44 +00:00
m-holger
4c71c8680a
Refactor QPDF_Stream::getStreamJSON
2023-11-26 12:22:36 +00:00
m-holger
9146f1f0fd
Change default for SF_FlateLzwDecode::columns to 1
2023-11-23 01:51:38 +00:00
m-holger
3237ef70fb
Add new method Pl_Buffer::getString
2023-11-18 16:34:17 +00:00
m-holger
d11622b6fd
Change Pl_Buffer to use std::string for storage
2023-11-17 15:55:11 +00:00
m-holger
1285f9767a
Add new method QPDFParser::fixMissingKeys
2023-11-03 11:22:21 +00:00
m-holger
605b1429e8
In QPDFParser::parse create dictionaries on the fly
...
Also, don't search for /Contents name unless the result is used.
2023-11-03 11:09:58 +00:00
m-holger
0328d87237
In QPDFParser::parse refactor parsing of indirect references
2023-11-03 01:34:16 +00:00
m-holger
1548b8d8be
In QPDFParser::parseRemainder eliminate most temporary variables
2023-11-03 01:34:10 +00:00
m-holger
4c8836d520
In QPDFParser::parse eliminate most temporary variables
2023-11-03 01:33:59 +00:00
m-holger
c912af7384
In QPDFParser remove state st_top
2023-11-03 01:32:04 +00:00
m-holger
172cc61305
Remove redundant code in QPDFParser::parse and parseRemainder
...
Also, fix test cases.
2023-11-03 01:26:34 +00:00
m-holger
5a1bf035f9
Add new method QPDFParser::parseRemainder
...
The new method is temporarily an (almost) complete copy of parse, which is
temporarily (almost) unchanged.
2023-11-03 01:26:12 +00:00
m-holger
db6ab9cbfa
In QPDFParser::parse merge state and object stacks
2023-11-01 15:45:17 +00:00
m-holger
d904eab84c
In QPDFParser::parse refactor handling of array_open and dict_open tokens
2023-11-01 15:38:01 +00:00
m-holger
90829228b8
In QPDFParser::parse refactor handling of dict_close tokens
2023-11-01 15:27:52 +00:00
m-holger
12837f14b6
In QPDFParser::parse refactor handling of array_close tokens
2023-11-01 15:26:04 +00:00
m-holger
26e0bf4610
In QPDFParser::parse refactor eof handling
2023-11-01 15:23:30 +00:00
m-holger
37f7a73488
In QPDFParser::parse refactor handling of bad tokens
2023-11-01 15:21:08 +00:00
m-holger
29cd8f4f53
Avoid unnecessary string copies in QPDFParser::parse
...
Fixes #864 . QPDFTokenizer::getValue originally had a std::string_view
return type, which was changed to std::string without removing some
unnecessary string creation.
2023-10-27 14:16:51 +01:00
Jay Berkenbilt
71566a2761
Write offsets as unsigned in linearization hint tables ( fixes #1023 )
2023-10-14 18:04:13 -04:00
Jay Berkenbilt
1ecc6bb29e
Don't lose character after \d or \dd parsing string ( fixes #1050 )
2023-10-14 17:12:56 -04:00
Jay Berkenbilt
8854143c7b
Spell check
2023-10-07 17:52:35 -04:00
Jay Berkenbilt
98014ec98a
Fix error with stream recovery ( fixes #1042 )
2023-10-07 13:29:10 -04:00
m-holger
fb504ce913
Fix #1028
2023-09-05 17:22:34 +01:00
Jay Berkenbilt
bfbd97b938
Spell check
2023-09-03 14:07:30 -04:00
Jay Berkenbilt
806922f643
ascii85: ignore whitespace between ~ and > ( fixes #973 )
2023-09-03 13:56:34 -04:00
Jay Berkenbilt
3372615e5b
Quote program name in completion output ( fixes #1021 )
2023-09-03 10:13:17 -04:00
Jay Berkenbilt
87765bace9
Move random number device check to runtime ( fixes #1022 )
...
Having it at compile time breaks cross-compilation and isn't really
right anyway.
2023-09-03 09:36:13 -04:00
Jay Berkenbilt
2b4dcb33aa
Merge pull request #1014 from m-holger/i1011
...
Change QPDF::copyForeignObject to return a null object when called wi…
2023-09-03 08:54:12 -04:00
m-holger
b0c3ea2bb6
Refactor test for /Pages object in QPDF::copyForeignObject
...
Test for missing object before accessing obj_copier.object_map.
2023-09-03 13:41:11 +01:00
Jay Berkenbilt
fec75b44b4
Merge pull request #1030 from m-holger/exit
...
Fix exit code when an input other than the primary input generates wa…
2023-09-03 08:37:14 -04:00
Jay Berkenbilt
c6a3d83fb5
Revert "Check for warnings in files used by --pages"
...
m-holger's fix is better
This reverts commit fa3cdaf1b4
.
2023-09-03 08:12:31 -04:00
Jay Berkenbilt
fa3cdaf1b4
Check for warnings in files used by --pages
2023-09-03 08:07:07 -04:00
Jay Berkenbilt
dedf9a06df
Fix a few things found by CLion
2023-09-03 08:07:07 -04:00
m-holger
94e6323206
Fix exit code when an input other than the primary input generates warnings
2023-09-03 12:27:23 +01:00
Jay Berkenbilt
fb704143cd
Merge pull request #1013 from m-holger/po
...
Simplify QPDFObjectHandle::isPageObject
2023-09-02 15:37:06 -04:00
Jay Berkenbilt
e640dd30be
Merge pull request #1016 from m-holger/i1010
...
Change QUtil::read_file_into_string to work with pipes (fixes #1010 )
2023-09-02 15:21:04 -04:00
Jay Berkenbilt
c51bdeb19c
Merge pull request #1017 from m-holger/mbox
...
Check for missing mediaboxes
2023-09-02 15:03:03 -04:00
Jay Berkenbilt
ec6784411d
Merge pull request #1028 from m-holger/i1003
...
Maintain links to foreign pages when copying foreign objects (fixes #1003 )
2023-09-02 14:59:16 -04:00
m-holger
ac32dbc313
Reserve foreign /Page objects in QPDF::copyForeignObject
...
Ensure that links to foreign pages are not broken provided that the page is
subsequently copied.
2023-08-25 14:06:42 +01:00
m-holger
ad73bbcd90
Change QPDF::reserveObjects to reserve indirect nulls to reserve foreign objects
2023-08-25 13:30:55 +01:00
m-holger
52539544c4
Modify QPDF::replaceReserved to allow replacing indirect nulls
2023-08-25 12:37:24 +01:00
m-holger
6574dc5c03
Store indirect nulls in QPDF_Dictionary
2023-08-25 12:25:06 +01:00
m-holger
34491c612d
Store indirect nulls in QPDF_Dictionary
2023-08-25 12:21:25 +01:00
m-holger
fedd42191f
Change QPDF::copyForeignObject to return a null object when called with a /Pages object ( fixes #1011 )
2023-08-25 12:10:51 +01:00
Zoe Clifford
cbae2f916b
Remove use of non-standard char_traits<unsigned char>
from Pl_Buffer
...
`basic_string<unsigned char>` implies use of
`char_traits<unsigned char>`.
This char_traits specialization is not standard C++, and will be
removed from LibC++ as of LLVM 18. To ensure continued LibC++
compatibility it needs to be removed.
There are two possible replacements here: `std::string` (e.g.
`std::basic_string<char>`), or `std::vector<unsigned char>`.
I have opted for vector since this code is dealing with a binary
buffer; though probably either way is fine (why does C++ even have
strings anyway??).
https://github.com/qpdf/qpdf/issues/1024
2023-08-22 13:44:58 -07:00
m-holger
d7efc661ec
Change QUtil::read_file_into_string to work with pipes ( fixes #1010 )
2023-08-07 12:40:34 +01:00
m-holger
9a69cbba5b
Check for missing mediaboxes
2023-07-29 13:16:40 +01:00
m-holger
b683e65cca
Simplify QPDFObjectHandle::isPageObject
2023-07-25 12:43:19 +01:00
m-holger
d531309cf9
Fix QPDFObjectHandle::disconnect (partially fixes #1011 )
2023-07-24 18:51:30 +01:00
Jay Berkenbilt
3f9b5053ba
Format code
2023-07-09 09:59:55 -04:00
m-holger
ba3953f1bf
Tune QPDF::readObject
2023-07-08 16:32:07 +01:00
m-holger
5754ab8b39
Tune QPDF::readObjectInStream
2023-07-08 16:32:00 +01:00
m-holger
aabd3f6f9b
Add private method QPDF::validateStreamLineEnd
2023-07-08 16:31:57 +01:00
m-holger
ef866d68cd
In QPDF::readStream remove variable done
2023-07-08 16:31:50 +01:00
m-holger
c422b918b1
Add new private method QPDF::readStream
2023-07-08 16:31:44 +01:00
m-holger
2643ed4dd9
Add new private method QPDF::readTrailer()
2023-07-08 01:28:15 +01:00
m-holger
bee726609c
Remove redundant parameters from QPDF::readObject
2023-07-07 20:37:13 +01:00
m-holger
2bf7359e35
Add new private method QPDF::readObjectInStream
2023-07-07 20:14:59 +01:00
m-holger
098b98c889
Tidy QPDF::read_xrefTable(qpdf_offset_t xref_offset)
2023-07-04 19:59:09 +01:00
m-holger
8e6974710c
Add private method QPDF::insertFreeXrefEntry
2023-07-04 19:59:09 +01:00
m-holger
250a736482
Remove parameter overwrite from QPDF::processXRefStream
2023-07-04 19:59:09 +01:00
m-holger
769a4915e8
Add new private method QPDF::insertReconstructedXrefEntry
2023-07-04 19:59:09 +01:00
Jay Berkenbilt
2ff7ac8a58
Merge pull request #990 from m-holger/issue600
...
Ensure copied annotations are fixed (fixes #600 )
2023-06-17 17:54:27 -04:00
Jay Berkenbilt
328a2d083e
Merge pull request #983 from m-holger/buffer
...
Add new Buffer method copy and deprecate copy constructor / assignment operator
2023-06-17 14:04:06 -04:00
m-holger
0f2ef5e85b
Add new Buffer method copy and deprecate copy constructor / assignment operator
...
Also fix accidental Buffer copy in Pl_LZWDecoder::addToTable.
2023-06-17 17:18:31 +01:00
Jay Berkenbilt
071fe4a0e5
Merge pull request #985 from m-holger/members
...
Change JSONHandler::m to std::unique_ptr and declare Members in implementation file
2023-06-17 11:57:02 -04:00
Jay Berkenbilt
0b538ec877
Merge pull request #982 from m-holger/cltidy
...
Apply various Clang-Tidy rules
2023-06-17 11:29:21 -04:00
Jay Berkenbilt
21612165c6
Merge pull request #981 from m-holger/writer
...
Remove redundant loop in QPDFWriter::prepareFileForWrite
2023-06-17 10:57:56 -04:00
Jay Berkenbilt
d3c444a7fb
Merge pull request #980 from m-holger/readobject
...
Avoid unnecessary copying of stream dictionary in QPDF::readObject
2023-06-17 10:54:45 -04:00
m-holger
8cb89529bd
Use early returns in JSONHandler::handle
2023-06-17 14:38:20 +01:00
m-holger
75e74679c5
Move struct JSONHandler::Handlers to implementation file
2023-06-17 14:38:20 +01:00
m-holger
62f00b6d9c
Change JSONHandler::m to std::unique_ptr and declare Members in implementation file
2023-06-17 14:38:20 +01:00
m-holger
8b05c550b3
Fix doc typos
2023-06-17 14:38:20 +01:00
m-holger
ae19d703f4
Ensure copied annotations are fixed ( fixes #600 )
...
Case where pages from a main input without /AcroForm key were duplicated
was omitted
2023-06-15 15:49:50 +01:00
m-holger
d784e8033c
Code tidy - Clang-Tidy rule performance-for-range-copy
2023-06-09 15:55:49 +01:00
m-holger
0ac005f0d9
Code tidy - Clang-Tidy rule modernize-use-override
2023-06-09 15:52:56 +01:00
m-holger
ae3642ce42
Code tidy - Clang-Tidy rule modernize-use-equals-default
2023-06-09 15:45:14 +01:00
m-holger
5906dd5c1f
Code tidy - Clang-Tidy rule modernize-use-default-member-init
2023-06-09 15:43:21 +01:00
m-holger
7bc0f1d828
Code tidy - Clang-Tidy rule modernize-use-emplace
2023-06-09 15:42:11 +01:00