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
m-holger
22c6b8ccbc
Code tidy QPDFObjectHandle::newArray
2023-06-09 15:39:19 +01:00
m-holger
320bbb9854
Code tidy - Clang-Tidy rule modernize-return-braced-init-list
2023-06-09 15:35:56 +01:00
m-holger
d8e078fbb7
Remove redundant loop in QPDFWriter::prepareFileForWrite
2023-06-09 15:29:16 +01:00
m-holger
4490d4c35e
Avoid unnecessary copying of stream dictionary in QPDF::readObject
2023-06-05 21:22:40 +01:00
m-holger
acd0acf169
Fix doc typos
2023-06-02 19:24:12 +01:00
m-holger
3c5700c255
Code tidy - reflow comments and strings
2023-06-02 16:00:40 +01:00
m-holger
db6c09b625
Fix doc typos
2023-05-27 11:06:37 +01:00
m-holger
698a70e6a8
Code tidy - reflow comments and strings
2023-05-27 10:54:19 +01:00
Jay Berkenbilt
a90787c5e1
Spell check
2023-05-21 14:25:31 -04:00
Jay Berkenbilt
5bbce89e6a
Add clarification about empty passwords to doc
2023-05-21 13:46:19 -04:00
Jay Berkenbilt
60965d5f4d
Rerun clang-format
2023-05-21 13:35:09 -04:00
m-holger
49e6365f63
Replace 'this->m' with 'm'
...
Manual edits for cases not handled by search and replace
2023-05-21 14:52:24 +01:00
m-holger
85d784952f
Globally replace 'this->m->' with 'm->'
...
Using search and replace.
2023-05-21 14:42:34 +01:00
Jay Berkenbilt
280c9057c9
Strip DLLs with mingw in Release mode
2023-05-20 19:51:12 -04:00
Jay Berkenbilt
293a2e52b3
Disregard appearance state when irrelevant ( fixes #949 )
...
If /AP is a dictionary of streams rather than a dictionary of
dictionaries, disregard /AS, which is supposed to point to a subkey of
one of the dictionaries. This fix prevents qpdf's annotation
flattening from discarding some annotations when /AS is erroneously
set.
2023-05-20 15:46:16 -04:00
Jay Berkenbilt
1c14a9e6c4
Merge pull request #959 from m-holger/reserved
...
Add new method QPDF::newReserved()
2023-05-20 15:27:33 -04:00
m-holger
05a49cecf1
Add new method QPDF::newReserved
2023-05-20 19:56:01 +01:00
Jay Berkenbilt
d740c6ccce
Rerun format_code (after merging clang-tidy PR)
2023-05-20 14:52:19 -04:00
Jay Berkenbilt
a85635b839
Merge pull request #929 from m-holger/ogguard
...
Add new convenience class QPDFObjGen::Guard
2023-05-20 14:09:49 -04:00
m-holger
e6577a1323
Replace 'virtual' specifier with 'override'
2023-05-20 15:41:56 +01:00
m-holger
ba5a3567a2
Remove redundant 'virtual' specifiers
2023-05-20 15:41:52 +01:00
m-holger
774d0d558e
Use auto when declaring iterators
2023-05-20 15:41:48 +01:00
m-holger
2fa581537b
Use auto when initializing with a cast
2023-05-20 15:41:44 +01:00
m-holger
41ec7eda54
Use auto when initialializing with new
2023-05-20 15:41:40 +01:00
m-holger
d0682f0f60
Use nullptr instead of 0 or NULL
2023-05-20 15:41:36 +01:00
m-holger
e28f4efb00
Replace deprecated C++ includes
2023-05-20 15:41:25 +01:00
m-holger
7f043fe88e
Remove unused include directives
2023-05-20 15:37:41 +01:00
m-holger
50bc82b4e0
Tidy QPDFJob::doJSONObjects
2023-05-19 18:56:17 +01:00
m-holger
9db2965f62
Use QPDFObjGen::set in QPDFJob::getWantedJSONObjects
2023-05-19 18:56:10 +01:00
m-holger
0c45bd8749
Use QPDFObjGen::set in QPDFJob::shouldRemoveUnreferencedResources
2023-05-19 18:56:06 +01:00
m-holger
ae2d623929
Use QPDFObjGen::set in QPDF::updateObjectMaps
2023-05-19 18:56:01 +01:00
m-holger
8fbef47093
Use QPDFObjGen::set in QPDF::getAllPages
2023-05-19 18:55:55 +01:00
m-holger
5473c0956c
Use QPDFObjGen::set in QPDF::replaceForeignIndirectObjects
2023-05-19 18:52:48 +01:00
m-holger
aeb66311c2
Use QPDFObjGen::set in QPDF::getCompressibleObjGens
2023-05-19 18:49:41 +01:00
m-holger
53f6c0a55a
Use QPDFObjGen::set in QPDFPageObjectHelper::forEachXObject
2023-05-19 18:49:36 +01:00
m-holger
1957ad1e05
Use QPDFObjGen::set in QPDFPageObjectHelper::getAttribute
2023-05-19 18:49:33 +01:00
m-holger
8335b2833b
Use QPDFObjGen::set in QPDFObjectHandle
2023-05-19 18:47:58 +01:00
m-holger
d60f06c15d
Use QPDFObjGen::set in QPDFFormFieldObjectHelper
2023-05-19 17:42:12 +01:00
m-holger
d395a90904
Use QPDFObjGen::set in QPDFAcroFormDocumentHelper::getFormFieldsForPage
2023-05-19 16:58:43 +01:00
m-holger
5b3b135fda
Tidy QPDFAcroFormDocumentHelper::getFieldsWithQualifiedName
2023-05-19 16:58:34 +01:00
m-holger
e37ce44186
Use QPDFObjGen::set in QPDFAcroFormDocumentHelper::transformAnnotations
2023-05-19 16:58:28 +01:00
m-holger
c12a6d06fc
Use QPDFObjGen::set in QPDFAcroFormDocumentHelper::traverseField
2023-05-19 16:58:24 +01:00
m-holger
e7e24fe070
Tidy QPDFAcroFormDocumentHelper::addAndRenameFormFields
2023-05-19 16:58:14 +01:00
m-holger
55abecc42d
Use QPDFObjGen::set in QPDFOutlineDocumentHelper
2023-05-19 16:58:08 +01:00
m-holger
0e81ffa7b6
Use QPDFObjGen::set in NNTree
2023-05-19 16:58:04 +01:00
m-holger
9b08017217
Add new convenience class QPDFObjGen::set
2023-05-19 12:27:53 +01:00
m-holger
08d7b56746
Prevent destruction of shared null objects
...
#863 uses a single null object for nulls that were previously implicit. In
certain circumstances this shared null object gets destroyed (i.e changed
to a QPDF_Destroyed object) when a QPDF object is destroyed.
Modify the QPDF destructor so that null objects get disconnected from the
dying QPDF object but not destroyed to prevent this from happening.
2023-04-11 18:01:14 +01:00
m-holger
3f2ebf334b
Fix bug in QPDF_Name::normalizeName introduced in #891
...
'#' was omitted from the list of chars that need to be escaped.
2023-04-04 15:54:54 +01:00
m-holger
41f79bedbc
Add new functions qpdfjob_create_qpdf and qpdfjob_write_qpdf
2023-04-02 09:45:19 +01:00
m-holger
c78f44798a
Add new _qpdf_data constructor taking a std::unique_ptr<QPDF>
...
Also, move _qpdf_data and to new header filer _qpdf_error to new header
file qpdf-c_impl.hh
2023-04-02 09:24:08 +01:00
m-holger
a2edf27b76
Initialize _qpdf_data members
2023-04-02 09:24:08 +01:00
Jay Berkenbilt
f8e39253be
Merge pull request #863 from m-holger/array
...
Refactor QPDF_Array
2023-04-01 11:05:07 -04:00
Jay Berkenbilt
40e4d1f97c
Merge pull request #930 from m-holger/throw
...
Code tidy re-throwing of exceptions
2023-04-01 09:42:52 -04:00
Jay Berkenbilt
5981b25e98
Merge pull request #932 from m-holger/wr_upo
...
Tune indentations in QPDFWriter::unparseObject
2023-04-01 09:37:55 -04:00
m-holger
0b53b648ab
Refactor QPDF_Array::unparse
2023-04-01 13:58:21 +01:00
m-holger
c2ab0441b5
Refactor QPDF_Array::getJSON
2023-04-01 13:58:15 +01:00
m-holger
a7b6975132
Remove SparseOHArray
2023-04-01 13:58:06 +01:00
m-holger
d3f2dc322b
Refactor QPDF_Array::copy
2023-04-01 13:57:47 +01:00
m-holger
a171ebb942
Refactor QPDF_Array::disconnect
2023-04-01 13:57:35 +01:00
m-holger
0aae54d383
Refactor QPDF_Array::setFromVector
2023-04-01 13:57:28 +01:00
m-holger
5072238867
Refactor QPDF_Array::getAsVector
2023-04-01 13:57:22 +01:00
m-holger
e186da1721
Remove SparseOHArray::at, setAt and append
2023-04-01 13:57:15 +01:00
m-holger
1c85e7ece4
Remove SparseOHArray::erase
2023-04-01 13:56:54 +01:00
m-holger
6295da436f
Remove SparseOHArray::insert
2023-04-01 13:56:47 +01:00
m-holger
182c2480df
Refactor QPDF_Array::setItem and rename to setAt
2023-04-01 13:56:29 +01:00
m-holger
4d37389bef
Refactor QPDF_Array::eraseItem and rename to erase
2023-04-01 13:56:16 +01:00
m-holger
1bb23d0545
Refactor QPDF_Array::insertItem and rename to insert
2023-04-01 13:56:10 +01:00
m-holger
cedb37caa1
Refactor QPDF_Array::appendItem and rename to push_back
2023-04-01 13:55:14 +01:00
m-holger
c6179da961
Add new method QPDFValue::checkOwnership
2023-04-01 13:54:44 +01:00
m-holger
a1a8f35b63
Refactor QPDF_Array::getItem and rename to at
2023-04-01 13:54:17 +01:00
m-holger
51d350c98c
Inline QPDF_Array::getNItems and rename to size
2023-04-01 12:25:15 +01:00
m-holger
e6db8ddeba
Change SparseOHArray index type to int and elements type to map
...
There are no reasons other than historical to use size_t.
On balance, using map is more efficient. Hold shared pointers to
QPDFObjects rather than QPDFObjectHandles for consistencey with
QPDF_Array.
2023-04-01 12:25:06 +01:00
m-holger
ea5164938e
Remove temporary OHArray
2023-04-01 12:24:52 +01:00
m-holger
9e30de8032
Remove temporary OHArray::erase, insert and copy
2023-03-29 13:15:39 +01:00
m-holger
0db65e7912
Remove temporary OHArray::disconnect and setAt
2023-03-29 13:06:26 +01:00
m-holger
1367226002
Remove temporary OHArray::at
2023-03-29 13:00:28 +01:00
m-holger
ad2875a4aa
Remove temporary OHArray::size, append and remove_last
...
Also, add const overload of QPDFObjectHandle::getObj
2023-03-29 12:34:07 +01:00
m-holger
8fdc3f0964
Optimize QPDFParser for non-sparse QPDF_Arrays
...
Stop using nullptr to represent null objects.
Count null array elements and trigger creation of sparse arrays if null count is
greater than 100.
2023-03-29 12:10:19 +01:00
m-holger
18c1ffe0df
Change underlying data structure of QPDF_Array in non-sparse mode to std::vector
2023-03-29 12:01:24 +01:00
m-holger
38cf7c1628
Add separate sparse mode to QPDF_Array
...
Add temporary clone of SparseOHArray to implement non-sparse mode.
2023-03-29 11:48:21 +01:00
m-holger
de29fd56c4
Remove redundant QPDF_Array::addExplicitElementsToList
2023-03-29 10:47:37 +01:00
m-holger
5f4f553c35
Refactor QUtil::hex_decode
2023-03-23 20:25:42 +00:00
m-holger
0795b6952b
Add new function QUtil::hex_decode_char
2023-03-23 20:23:37 +00:00
m-holger
ce66604290
Tune indentations in QPDFWriter::unparseObject
...
Set indent differently for qdf and non-qdf files.
Combine with preceding newline for qdf files.
2023-03-21 10:59:05 +00:00
Jay Berkenbilt
f89196b6c8
Merge pull request #814 from m-holger/check
...
Warn if catalog type entry is invalid (fixes #810 )
2023-03-20 06:59:47 -04:00
m-holger
d8acccd5c8
Warn if catalog type entry is invalid ( fixes #810 )
2023-03-19 20:07:53 +00:00
m-holger
9c7aa2cbbd
Code tidy re-throwing of exceptions
...
Avoid copying exceptions.
2023-03-19 17:27:39 +00:00
Jay Berkenbilt
fe36ef141c
Merge pull request #924 from cdosborn/main
...
Improve --optimize-images to find images nested within XObjects
2023-03-18 15:34:27 -04:00
Jay Berkenbilt
a2c7471e66
Merge pull request #920 from m-holger/fixqdf_rl
...
Refactor QdfFixer::processLines
2023-03-18 13:59:47 -04:00
Jay Berkenbilt
84e29026f5
Merge pull request #926 from m-holger/omap
...
Remove redundant parameter depth from QPDF::updateObjectMaps
2023-03-18 13:28:19 -04:00
Jay Berkenbilt
b480f7186f
Merge pull request #928 from m-holger/wr_og
...
Add new data member QPDFWriter::Members::root_og
2023-03-18 13:28:12 -04:00
m-holger
b7791566f6
Add new data member QPDFWriter::Members::root_og
...
Also, uninitialize QPDFWriter::Members members.
2023-03-17 11:19:48 +00:00
Connor Osborn
8de2497a8f
Improve --optimize-images to find images nested within XObjects
2023-03-15 23:27:05 -04:00
m-holger
5af32b53a3
Remove redundant parameter depth from QPDF::updateObjectMaps
2023-03-15 17:50:17 +00:00
m-holger
43d9ee56ea
Split QPDFJob::run into createQPDF and writeQPDF
...
Also, change QPDFJob to use unique_ptr<QPDF> instead of shared pointers.
2023-03-09 17:21:55 +00:00
m-holger
4ee6ff0a73
Add new procedure QUtil::read_file_into_string
2023-03-08 21:00:26 +00:00
m-holger
b27be3ed27
Remove redundant parameter from QPDFJob::handlePageSpecs and doSplitPages
2023-03-05 09:01:49 -05:00
Jay Berkenbilt
c304bf737b
Spell check
2023-02-25 14:19:38 -05:00
Jay Berkenbilt
c99a1ecd4f
Update copyright to 2023
2023-02-25 14:18:13 -05:00
Jay Berkenbilt
78f7dc9fe8
Overlay/underlay: capture origial page as form XObject ( fixes #904 )
2023-02-25 12:58:51 -05:00
Jay Berkenbilt
48bacbf2e6
Refactor overlay/underlay in preparation for change
2023-02-25 11:25:28 -05:00
m-holger
f099246b52
Refactor removal of reserved objects in QPDF::JSONReactor
...
At the end of importing a JSON file, scan the object cache for reserved
objects and replace with null objects.
2023-02-19 16:49:09 +00:00
m-holger
7ae1e80fd6
Change JSON::Members::value to std::unique_ptr
2023-02-19 12:06:36 +00:00
m-holger
a4f3dddb79
Change JSON_dictionary and JSON_array to store JSON objects rather than std::shared_ptr<JSON_value>
...
Recognise that JSON objects are effectively shared pointers to JSON_value.
2023-02-19 12:05:53 +00:00
Jay Berkenbilt
0f97e98203
Handle linearization warnings as proper warning ( fixes #851 )
2023-02-18 19:38:49 -05:00
Jay Berkenbilt
088fabd9b9
Move most QPDF initializations to header
2023-02-18 19:38:37 -05:00
Jay Berkenbilt
6a48534e53
Merge pull request #896 from m-holger/jrod
...
Refactor setting of object descriptions in QPDF::JSONReactor
2023-02-18 17:58:49 -05:00
Jay Berkenbilt
b3cfa1010f
Merge pull request #902 from m-holger/od
...
Refactor creation of object descriptions
2023-02-18 17:49:18 -05:00
Jay Berkenbilt
e4e03e9ac1
Merge pull request #890 from m-holger/jpsp
...
Eliminate the use of shared pointers in JSONParser
2023-02-18 17:43:02 -05:00
m-holger
07bb5c3dd6
Overload QPDF_Null::create to take a child object description
2023-02-18 08:35:45 +00:00
m-holger
1496472e1c
Add method QPDFValue::setChildDescription
2023-02-18 08:35:45 +00:00
m-holger
3df4ce6d1a
Initialize QPDF::JSONReactor data members
2023-02-18 08:34:50 +00:00
m-holger
da14ab4dc7
Move definition of QPDF::JSONReactor into QPDF_json
...
Allow access to private header files when defining data members.
2023-02-18 08:33:08 +00:00
m-holger
dab27c9bb3
Refactor setting of object descriptions in QPDF::JSONReactor
2023-02-18 08:33:08 +00:00
m-holger
fe74f28dc4
Refactor QPDFValue::setDefaultDescription
2023-02-18 08:33:08 +00:00
m-holger
f989de1bd7
Remove restriction that only owned objects can have descriptions
2023-02-18 08:33:08 +00:00
m-holger
32907fc14c
Change type of QPDFValue::object_description to std::shared_ptr<std::variant>
...
Also, name the type QPDFValue::Description.
2023-02-18 08:33:08 +00:00
m-holger
d58ec90310
Un-inline QPDFValue::getDescription
2023-02-18 08:33:08 +00:00
m-holger
d80b63c3c0
Refactor JSON type checks
2023-02-11 15:44:03 -05:00
m-holger
deb1c33086
Replace strchr in QPDF_Name::normalizeName
2023-02-05 08:29:21 -05:00
m-holger
3ee552fec5
Replace strchr in QPDFTokenizer::is_delimiter
2023-02-05 08:29:21 -05:00
m-holger
b6f048546f
Eliminate the use of shared pointers in JSONParser
2023-02-05 12:46:38 +00:00
m-holger
f6c9019597
Add new methods JSONParser::append and ignore
...
Reduce boilerplate and increase efficiency by avoiding setting and
branching on action and ready in getToken.
2023-02-05 12:44:38 +00:00
m-holger
415e67951b
Refactor JSON::encode_string
2023-02-04 15:06:43 -05:00
m-holger
d3152869b6
In JSONParser::getToken handle structural and space chars early
2023-02-04 15:00:21 +00:00
m-holger
ee32235f54
In JSONParser::getToken handle legal control chars early
...
Also, reject them in strings.
2023-02-04 15:00:21 +00:00
m-holger
f5b7448a27
Extend scope of JSONParser::numberError and rename tokenError
...
Handle all incomplete token type errors in tokenError.
2023-02-04 14:55:49 +00:00
m-holger
5ac6a12e0a
In JSONParser::getToken reject illegal control characters
2023-02-04 14:55:49 +00:00
m-holger
1b89e7684e
Remove redundant template toO in JSON
2023-02-04 14:06:26 +00:00
m-holger
98d9ae51fc
Integrate JSONParser::decode_string into getToken
2023-02-04 14:06:26 +00:00
m-holger
320245e0d1
In JSONParser::getToken decode escaped chars inside state ls_backslash
...
(except '\\' and '\uXXXX')
2023-02-04 14:06:26 +00:00
m-holger
cee746fc15
In JSONParser::getToken avoid copying '"' characters in strings
2023-02-04 14:06:26 +00:00
m-holger
a9a0667904
Make JSONParser::getToken responsible for decoding strings
2023-02-04 14:06:26 +00:00
m-holger
126dd31cad
In JSONParser combine stacks
2023-02-04 13:53:23 +00:00
m-holger
6748bd33f7
In JSONParser::handleToken remove next_state
2023-02-04 13:53:23 +00:00
m-holger
29093a167b
In JSONParser::handleToken refactor container creation
2023-02-04 13:53:23 +00:00
m-holger
a39043f65e
In JSONParser::handleToken avoid creating JSON objects for dictionary keys
2023-02-04 13:53:23 +00:00
m-holger
f2e46c20b6
In JSONParser::handleToken move remaining validations into second switch statement
2023-02-04 13:53:23 +00:00
m-holger
0de032bcdd
In JSONParser::handleToken simplify setting of start and end
2023-02-04 13:53:22 +00:00
m-holger
77ceebd6c9
In JSONParser::handleToken move processing for ls_end_array and ls_end_dict into switch statement
2023-02-04 13:53:22 +00:00
m-holger
a7338ab15a
In JSONParser::handleToken move processing for ls_colon and ls_comma into switch statement
2023-02-04 13:53:22 +00:00
m-holger
4dba3c95dd
In JSONParser::handleToken move validation for ls_colon etc into switch statement
2023-02-04 13:53:22 +00:00
m-holger
6f94a3a89a
In JSONParser::handleToken move string decoding into switch statement
2023-02-04 13:53:22 +00:00
m-holger
fcc123a62a
Avoid copying delimiters in JSONParser::getToken
2023-02-04 13:53:22 +00:00
m-holger
bb89a60320
Add data member JSONParser::token_start
2023-02-04 13:52:55 +00:00
m-holger
39dfd305c8
In JSONParser add lexer states for delimiters
2023-02-04 13:44:39 +00:00
m-holger
1e0ab79aec
Remove redundant JSONParser::before_point etc
2023-02-01 14:19:08 +00:00
m-holger
83f972ceda
Refactor end of input handling in JSONParser
2023-02-01 14:18:57 +00:00
m-holger
8fd6e1c5b2
Refactor handling of ls_number in JSONParser::getToken
...
Reflect that the ls_number case only handles the digits after an 'e'.
Also, change state to ls_number for all 'ready' numbers.
2023-02-01 14:18:39 +00:00
m-holger
6ea543e6c7
In JSONParser add lex_state ls_number_e_sign
2023-02-01 14:12:32 +00:00
m-holger
04333bbc20
In JSONParser add lex_state ls_number_e
...
Also, allow 'E' as alternative to 'e'.
2023-02-01 14:09:39 +00:00
m-holger
972ebca505
In JSONParser add lex_state ls_number_after_point
2023-02-01 14:01:57 +00:00
m-holger
cdd1f0a9f6
In JSONParser add lex_state ls_number_point
...
Also. remove '.' as starting char in lsTop.
2023-02-01 14:01:57 +00:00
m-holger
bfda62aeeb
In JSONParser add lex_state ls_number_before_point
2023-02-01 14:01:57 +00:00
m-holger
08e768909d
In JSONParser add lex_state ls_number_leading_zero
2023-02-01 14:01:57 +00:00
m-holger
cba1c352e3
In JSONParser add lex_state ls_number_minus
2023-02-01 14:01:57 +00:00
m-holger
b6b4d3b299
Add new method JSONParser::numberError
2023-02-01 14:01:57 +00:00
m-holger
1787d85096
Refactor JSON::addDictionaryMember
2023-01-28 14:49:37 -05:00
m-holger
dce43d4f7f
Refactor JSON::JSON_string::write
2023-01-28 14:49:32 -05:00
m-holger
4c914aee96
Refactor JSON::writeDictionaryKey
2023-01-28 14:49:32 -05:00
m-holger
3dde66ddcd
Refactor JSON::writeNext
2023-01-28 14:49:32 -05:00
m-holger
dfa7d414f5
Refactor JSON::writeClose
2023-01-28 14:49:32 -05:00
Jay Berkenbilt
1308c45090
Implement --remove-restrictions ( fixes #833 )
2023-01-28 13:42:19 -05:00
Jay Berkenbilt
fe11f13d63
Add stub for --remove-restrictions
2023-01-28 13:24:45 -05:00
Jay Berkenbilt
acfc9db051
QPDFJob: switch to C++11-style field initializers
2023-01-28 13:24:30 -05:00
m-holger
d16308b3f5
Tune QPDFWriter::writeString etc methods
...
Use string_view parameters and call pipeline write methods directly.
2023-01-23 07:00:58 -05:00
m-holger
e8cdc46286
Tidy QPDFXRefEntry creation
2023-01-21 18:18:15 -05:00
Jay Berkenbilt
e4e0f40fc0
Fix annotations properly for page with no /Resources ( fixes #827 )
2023-01-09 07:31:39 -05:00
m-holger
aefb8ff9ef
Refactor QPDFWriter::writePad
2023-01-08 13:33:10 -05:00
m-holger
8363657cf3
Change QPDFWriter::object_queue to std::vector
2023-01-08 13:33:10 -05:00
m-holger
9c216a06d9
Tune QPDFWriter::enqueueObject
2023-01-08 13:33:10 -05:00
m-holger
60538f1958
Change QPDFParser::parse to use QPDFTokenizer::nextToken
2023-01-07 15:24:51 -05:00
m-holger
863d95e567
Add new method QPDFTokenizer::nextToken
2023-01-07 15:24:51 -05:00
m-holger
a07d2b4190
Only build QPDFTokenizer::val for name and string tokens
...
For all other token types val and raw_val are identical.
2023-01-07 15:24:51 -05:00
m-holger
59191ebbc4
Tune QPDFWriter::unparseObject
2023-01-07 13:27:17 -05:00
m-holger
942a2c3f68
Add new function QUtil::hex_encode_char
2023-01-06 18:42:12 -05:00
m-holger
1326ff7f79
Inline QPDFObjectHandle::dereference
2023-01-02 14:15:16 -05:00
m-holger
d7b470761b
Remove QPDFObjectHandle::Factory and ObjAccessor
2022-12-31 19:16:38 -05:00
m-holger
3f567ae02d
Refactor dictionary processing loop in QPDFParser::parse
2022-12-31 14:37:35 -05:00
m-holger
d67a54ae93
Tune parsing of dictionaries in QPDFParser::parse
...
Use move semantics for dictionary creation.
2022-12-31 14:37:35 -05:00
m-holger
846504129f
Remove redundant parameter qpdf from QPDFParser::warn
2022-12-31 14:37:35 -05:00
m-holger
b19e06fd8b
Change QPDFParser::setDescription to take a shared_ptr<QPDFObject> parameter
2022-12-31 14:37:35 -05:00
m-holger
8391022416
Avoid inserting direct null objects into olist
2022-12-31 14:37:35 -05:00
m-holger
9da50ca360
Change olist variable in QPDFParser::parse to vector<shared_ptr<QPDFObject>>
2022-12-31 14:37:35 -05:00
m-holger
e91e642cf3
Change object variable in QPDFParser::parse to shared_ptr<QPDFObject>
2022-12-31 14:37:35 -05:00
m-holger
ec35156ab0
Refactor QPDFValue::getDescription
...
Remove parameters and return the description.
2022-12-31 10:23:59 -05:00
m-holger
0ef2def8ad
Delay adding offsets to object descriptions until necessary
2022-12-31 10:23:59 -05:00
m-holger
c833c25499
Delay adding ObjGen to object descriptions until necessary
2022-12-31 10:23:59 -05:00
m-holger
e684d8169b
Make QPDFValue::object_description a shared pointer
2022-12-31 10:23:59 -05:00
m-holger
218f069a69
Add new method QPDFObject::setDefaultDescription
2022-12-31 10:23:59 -05:00
m-holger
d03ca88275
Refactor QPDFParser::setDescriptionFromInput and rename to setDescription
...
Set parsed offset at the same time as setting description.
2022-12-31 10:23:59 -05:00
m-holger
6cbc55a5b5
Add new virtual method QPDFObject::getStringValue
...
Avoid dynamic casting.
2022-12-31 09:31:07 -05:00
m-holger
0ca44ef84c
Fix QPDFObjectHandle::isScalar
...
Exclude uninitialized, destroyed and reserved objects.
2022-12-31 09:27:19 -05:00
m-holger
383f5a0077
Refactor QPDFWriter::enqueueObject
...
Move test for m->linearized outside loop.
2022-12-31 09:22:45 -05:00
m-holger
2693a082ab
Fix check for direct nulls in QPDFParser::parse
2022-12-15 13:07:42 -05:00
m-holger
cfcb279e49
Alternative fix logic for fixDanglingReferences
2022-12-06 15:21:34 -05:00
Jay Berkenbilt
ff42ea4e6c
Fix logic for fixDanglingReferences
2022-11-26 18:13:46 -05:00
m-holger
3f632458ae
Refactor QPDF::fixDanglingReferences
2022-11-26 16:26:42 -05:00
Jay Berkenbilt
562ff1b608
Rename function for pikepdf (for 11.2.0)
...
A new private overload of QPDF::makeIndirectObject breaks pikepdf's
build, so renaming function.
2022-11-20 16:04:58 -05:00
m-holger
4325e6e4a7
Refactor QPDFObjectHandle::copyObject and rename to makeDirect
2022-11-20 12:07:22 -05:00
m-holger
585ecf17c8
Remove redundant parameter cross_indirect from QPDFObjectHandle::copyObject
2022-11-20 12:07:22 -05:00
m-holger
ebc15f4dd0
Remove redundant parameter first_level_only from QPDFObjectHandle::copyObject
2022-11-20 12:07:22 -05:00
m-holger
64059014c9
Refactor QPDFObjectHandle::shallowCopy
2022-11-20 12:07:22 -05:00
m-holger
b1eb1a9584
Refactor QPDFObjectHandle::copyObject1
2022-11-20 12:07:22 -05:00
m-holger
3e3b79a774
Remove redundant parameter first_level_only from QPDFObjectHandle::shallowCopyInternal2 and copyObject2
2022-11-20 12:07:22 -05:00
m-holger
3efd665703
Remove redundant parameters cross_indirect and stop_atstreams from QPDFObjectHandle::copyObject1
2022-11-20 12:07:22 -05:00
m-holger
d7b8525235
Refactor QPDFObjectHandle::unsafeShallowCopy
2022-11-20 12:07:22 -05:00
m-holger
0289b21c3b
Remove redundant QPDFObjectHandle::copyObject2
...
copyObject2 repeats a second time what
new_obj = QPDFObjectHandle(obj->copy(true))
in shallowCopyInternal2 already did.
2022-11-20 12:07:22 -05:00
m-holger
15e8d3a763
Remove redundant parameter first_level_only from QPDFObjectHandle::shallowCopyInternal2 and copyObject2
2022-11-20 12:07:22 -05:00
m-holger
0827b1096e
Remove redundant parameters cross_indirect and stop_atstreams from QPDFObjectHandle::copyObject2
2022-11-20 12:07:22 -05:00
m-holger
63d1dcb414
Split QPDFObjectHandle::shallowCopyInternal and copyObject
...
Have separate versions for unsafeShallowCopy, shallowCopy and makeDirect.
2022-11-20 12:07:22 -05:00
m-holger
dbc5f07b90
Rename QPDFObject::shallowCopy to copy
...
Add optional parameter shallow. Change logic errors to runtime errors.
2022-11-20 12:07:22 -05:00
m-holger
34a6f8938f
Add methods QPDFTokenizer::Token::isWord
2022-11-20 11:55:02 -05:00
m-holger
dca70f13e7
Add method QPDFTokenizer::Token::isInteger
2022-11-20 11:55:02 -05:00
Jay Berkenbilt
e9980efec8
Correctly handle reuse of xref stream ( fixes #809 )
2022-11-19 17:03:17 -05:00
m-holger
d79a823d66
Remove QPDF_Stream::getOffset and QPDF_Stream::setObjGen
2022-11-19 14:10:42 -05:00
m-holger
6350cf16e6
Remove QPDF_Stream::offset
2022-11-19 14:10:42 -05:00
m-holger
3a86b893f7
Remove redundant parameters from QPDF_Stream::warn
2022-11-19 14:10:42 -05:00
m-holger
69e67b45bb
Remove QPDF_Stream qpdf and og data members
2022-11-19 14:10:42 -05:00
m-holger
bf347dfb73
Remove QPDFObjectHandle::Factory::newStream
2022-11-19 14:10:42 -05:00
m-holger
743a735ee0
Use QPDF::newStream in library
2022-11-19 14:10:42 -05:00
m-holger
9ebabd1953
Add new methods QPDF::newStream
2022-11-19 14:10:42 -05:00
m-holger
0a3c533186
Add private method QPDF::nextObjGen
2022-11-19 14:10:42 -05:00
m-holger
b3d71e1f58
Add private overload of QPDF::makeIndirectObject taking a QPDFObject shared_ptr
2022-11-19 14:10:42 -05:00
m-holger
fc64d0a371
Fix stray formatting error
2022-11-14 07:05:58 -05:00
Jay Berkenbilt
d94e6958ef
Fix stray formatting error
2022-10-08 17:05:11 -04:00
Jay Berkenbilt
2bc9121fa1
Fix major performance bug with openssl crypto ( fixes #798 )
...
Lazily load MD5 and RC4 once in the life of the program. Only load the
legacy provider if RC4 is actually being used.
2022-10-08 17:04:59 -04:00
Jay Berkenbilt
5c5b4e640e
Be more conservative about QPDF_DLL_CLASS with mingw ( fixes #799 )
...
* Define it even though previous experiments have shown it to be
unnecessary since it seems like it may be necessary after all
* Add QPDF_DLL_CLASS to QPDFObjectHelper and QPDFDocumentHelper in
case there's some future unknown reason why someone may want to have
them and/or in case it helps with the weird
QPDFNameTreeObjectHelper problem.
2022-10-06 08:40:08 -04:00
m-holger
d44bba3914
Fix typos in error message
2022-10-03 11:42:27 -04:00
m-holger
c63fb86c01
Inline call to QPDFObjectHandle::parse in QPDF::readObject
2022-10-01 11:17:39 -04:00
m-holger
cb0a6be983
Code tidy: use QPDF::toS and QPDF::toI where possible
2022-10-01 11:17:39 -04:00
m-holger
5ccab4be03
Add private methods QPDF::damagedPDF
2022-10-01 11:17:39 -04:00
Jay Berkenbilt
f4ca04cec1
Fix edge case in character encoding ( fixes #778 )
...
Avoid representing as PDF Doc encoding any string whose PDF Doc
encoding representation starts with a UTF-16 or UTF-8 marker.
2022-09-26 08:06:47 -04:00
m-holger
4fb7d1335a
Tune QPDF_String::useHexString()
2022-09-24 17:09:56 -04:00
m-holger
44a7aff56f
Refactor Pl_Buffer
...
Base implementation of the buffer on std::basic_string<unsigned char>.
2022-09-23 15:09:13 -04:00
m-holger
ae800361fe
Tune QUtil::hex_encode
2022-09-23 06:20:12 -04:00
m-holger
033a66e9a5
Tune unparsing of hex strings in QPDF_String::unparse
2022-09-23 06:20:12 -04:00
m-holger
2e6869483b
Replace calls to QUtil::int_to_string with std::to_string
2022-09-21 15:57:14 -04:00
Jay Berkenbilt
5796475a5e
Cosmetic: use default constructor for QPDFObjGen
2022-09-14 07:35:32 -04:00
Jay Berkenbilt
2394acf7a6
Remove explicit direct object check from getObject
...
An indirect object reference to 0, 0 is invalid. If it appears in the
file or is parsed from a string, the parser catches it. This check
would only be useful for someone explicitly calling getObject with 0,
0, and that would trigger an error during resolve().
2022-09-13 11:21:29 -04:00
Jay Berkenbilt
a0b1a18172
Remove redundant function calls
2022-09-13 11:20:28 -04:00
Jay Berkenbilt
31b2cfbb79
Fix up a few comments
2022-09-13 11:18:49 -04:00
Jay Berkenbilt
4963ce6a53
Remove obsolete LL_FMT check from build ( fixes #768 )
...
This was broken for cross-compilation and has probably been
unnecessary for several years now.
Also fix extraneous whitespace in related some tests.
2022-09-12 11:48:38 -04:00
Jay Berkenbilt
8a3cdfd2af
Change QPDFObjectHandle == to isSameObjectAs
...
Replace operator== and operator!=, which were testing for the same
underlying object, with isSameObjectAs. This change was motivated by
the fact that pikepdf internally had its own operator== method for
QPDFObjectHandle that did structural comparison. I backed out qpdf's
operator== as a courtesy to pikepdf (in my own testing) but also
because I think people might naturally assume that operator== does a
structural comparison, and isSameObjectAs is clearer in its intent.
2022-09-09 18:09:40 -04:00
Jay Berkenbilt
3dbab589e3
Add C API functions for using custom loggers
...
Expose functions to the C API to create new loggers and to setLogger
and getLogger for QPDF and QPDFJob.
2022-09-09 10:49:25 -04:00
Jay Berkenbilt
0ad4e190ff
Make QPDFLogger() private and provide create method
2022-09-09 07:03:29 -04:00
Jay Berkenbilt
f1a2d3160a
Add JSON v2 support to C API
2022-09-09 06:19:09 -04:00
Jay Berkenbilt
66f1fd2ad9
Switch user-supplied functions in C API to return int
2022-09-08 17:36:51 -04:00
Jay Berkenbilt
b0f054e600
Add ability to initialize Pl_Function with a C-style function
2022-09-08 17:35:27 -04:00
Jay Berkenbilt
18a583e8d9
Rename QPDFValueProxy back to QPDFObject
...
QPDFValueProxy wasn't a good name for it. We decided the evil of
having the header file be named QPDFObject_private.hh was less than
the evil of having the class be named something other than what it
should have been named.
2022-09-08 11:29:23 -04:00
Jay Berkenbilt
25ccc7eae4
Rename QPDFValueProxy.hh and QPDFValueProxy.cc
...
Preparing to change the class name back to QPDFObject
2022-09-08 11:19:49 -04:00
Jay Berkenbilt
c7a4967d10
Change reset to disconnect and clarify comments
...
I decided that it's actually fine to copy a direct object to another
QPDF. Even if we eventually prevent a QPDFObject from having multiple
parents, this could happen if an object is moved.
2022-09-08 11:06:15 -04:00
Jay Berkenbilt
dba61da1bf
Create a special "destroyed" type rather than using null
...
When a QPDF is destroyed, changing indirect objects to direct nulls
makes them effectively disappear silently when they sneak into other
places. Instead, we should treat this as an error. Adding a destroyed
object type makes this possible.
2022-09-08 10:36:39 -04:00
Jay Berkenbilt
264e25f391
Clear owning QPDF information for all objects, not just indirect
2022-09-08 10:19:38 -04:00
Jay Berkenbilt
9dcd25a06e
Remove superfluous call to resetObjGen
2022-09-08 10:19:38 -04:00
Jay Berkenbilt
4422588d7d
Remove unneeded owning_qpdf from QPDFValue
...
The qpdf member was already sufficient. Removing this actually fixed a
few pre-existing issues around detecting foreign ownership and
allowing certain conditions to be warnings rather than exceptions.
2022-09-08 10:19:38 -04:00
Jay Berkenbilt
0132261ee0
Revert getOwningQPDF, and add getQPDF that returns a reference
2022-09-07 17:26:39 -04:00
Jay Berkenbilt
76cd7ea67a
Clarify and improve QPDFPageObjectHelper::get*Box methods
...
Add copy_if_fallback and explain how it differs from copy_if_shared.
2022-09-06 19:00:40 -04:00
Jay Berkenbilt
c1def4ead4
Implement QPDFObjectHandle equality
2022-09-06 18:34:23 -04:00
Jay Berkenbilt
94c79bb8f6
Support --show-encryption without a valid password ( fixes #598 )
2022-09-06 12:45:12 -04:00