From 2a2f7f1bba3dd87bd17f8b819ddeb1a24bb742dd Mon Sep 17 00:00:00 2001 From: Jay Berkenbilt Date: Sun, 8 May 2022 12:37:18 -0400 Subject: Add maxobjectid to JSON --- libqpdf/QPDFJob.cc | 7 +++++++ qpdf/qtest/qpdf/direct-pages-json-objects.out | 1 + qpdf/qtest/qpdf/direct-pages-json-pages.out | 1 + qpdf/qtest/qpdf/image-streams-small-to-json.out | 1 + qpdf/qtest/qpdf/json-bad-data-json-file-v2.out | 1 + qpdf/qtest/qpdf/json-bad-data-json-inline-v2.out | 1 + qpdf/qtest/qpdf/json-field-types---show-encryption-key-v2.out | 1 + qpdf/qtest/qpdf/json-field-types-v2.out | 1 + qpdf/qtest/qpdf/json-image-streams-all-file-v2.out | 1 + qpdf/qtest/qpdf/json-image-streams-all-v2.out | 1 + qpdf/qtest/qpdf/json-image-streams-generalized-file-v2.out | 1 + qpdf/qtest/qpdf/json-image-streams-generalized-inline-v2.out | 1 + qpdf/qtest/qpdf/json-image-streams-none-file-v2.out | 1 + qpdf/qtest/qpdf/json-image-streams-none-inline-v2.out | 1 + qpdf/qtest/qpdf/json-image-streams-small-v2.out | 1 + qpdf/qtest/qpdf/json-image-streams-specialized-file-v2.out | 1 + qpdf/qtest/qpdf/json-image-streams-specialized-inline-v2.out | 1 + qpdf/qtest/qpdf/json-image-streams-specialized-v2.out | 1 + qpdf/qtest/qpdf/json-image-streams-v2.out | 1 + qpdf/qtest/qpdf/json-outlines-with-actions-v2.out | 1 + qpdf/qtest/qpdf/json-outlines-with-old-root-dests-v2.out | 1 + .../qtest/qpdf/json-page-labels-and-outlines-qpdf-trailer-2-v2.out | 1 + qpdf/qtest/qpdf/json-page-labels-and-outlines-qpdf-trailer-v2.out | 1 + qpdf/qtest/qpdf/json-page-labels-and-outlines-qpdf-v2.out | 1 + qpdf/qtest/qpdf/json-page-labels-and-outlines-v2.out | 1 + qpdf/qtest/qpdf/json-page-labels-num-tree-v2.out | 1 + qpdf/qtest/qpdf/page_api_2-json-objects.out | 1 + qpdf/qtest/qpdf/page_api_2-json-pages.out | 1 + 28 files changed, 34 insertions(+) diff --git a/libqpdf/QPDFJob.cc b/libqpdf/QPDFJob.cc index 621e6933..55bebdcb 100644 --- a/libqpdf/QPDFJob.cc +++ b/libqpdf/QPDFJob.cc @@ -1188,6 +1188,12 @@ QPDFJob::doJSONQpdf(Pipeline* p, bool& first, QPDF& pdf) p, first_qpdf, "jsonversion", JSON::makeInt(this->m->json_version), 1); JSON::writeDictionaryItem( p, first_qpdf, "pdfversion", JSON::makeString(pdf.getPDFVersion()), 1); + JSON::writeDictionaryItem( + p, + first_qpdf, + "maxobjectid", + JSON::makeInt(QIntC::to_longlong(pdf.getObjectCount())), + 1); JSON::writeDictionaryKey(p, first_qpdf, "objects", 1); bool first_object = true; JSON::writeDictionaryOpen(p, first_object, 2); @@ -1613,6 +1619,7 @@ QPDFJob::json_schema(int json_version, std::set* keys) schema.addDictionaryMember("qpdf", JSON::parse(R"({ "jsonversion": "qpdf json output version", "pdfversion": "PDF version from PDF header", + "maxobjectid": "Highest object ID; needed for adding new objects", "objects": { "": "json representation of object" } diff --git a/qpdf/qtest/qpdf/direct-pages-json-objects.out b/qpdf/qtest/qpdf/direct-pages-json-objects.out index 773a0a4c..0746a925 100644 --- a/qpdf/qtest/qpdf/direct-pages-json-objects.out +++ b/qpdf/qtest/qpdf/direct-pages-json-objects.out @@ -6,6 +6,7 @@ "qpdf": { "jsonversion": 2, "pdfversion": "1.3", + "maxobjectid": 6, "objects": { "obj:1 0 R": { "value": { diff --git a/qpdf/qtest/qpdf/direct-pages-json-pages.out b/qpdf/qtest/qpdf/direct-pages-json-pages.out index 5cd2b2c0..9f9e41f3 100644 --- a/qpdf/qtest/qpdf/direct-pages-json-pages.out +++ b/qpdf/qtest/qpdf/direct-pages-json-pages.out @@ -28,6 +28,7 @@ "qpdf": { "jsonversion": 2, "pdfversion": "1.3", + "maxobjectid": 8, "objects": { "obj:1 0 R": { "value": { diff --git a/qpdf/qtest/qpdf/image-streams-small-to-json.out b/qpdf/qtest/qpdf/image-streams-small-to-json.out index fa4929f2..3fd3e143 100644 --- a/qpdf/qtest/qpdf/image-streams-small-to-json.out +++ b/qpdf/qtest/qpdf/image-streams-small-to-json.out @@ -6,6 +6,7 @@ "qpdf": { "jsonversion": 2, "pdfversion": "1.3", + "maxobjectid": 30, "objects": { "obj:1 0 R": { "value": { diff --git a/qpdf/qtest/qpdf/json-bad-data-json-file-v2.out b/qpdf/qtest/qpdf/json-bad-data-json-file-v2.out index 147dc372..79e739ed 100644 --- a/qpdf/qtest/qpdf/json-bad-data-json-file-v2.out +++ b/qpdf/qtest/qpdf/json-bad-data-json-file-v2.out @@ -53,6 +53,7 @@ "qpdf": { "jsonversion": 2, "pdfversion": "1.3", + "maxobjectid": 6, "objects": { "obj:1 0 R": { "value": { diff --git a/qpdf/qtest/qpdf/json-bad-data-json-inline-v2.out b/qpdf/qtest/qpdf/json-bad-data-json-inline-v2.out index bfd7ad36..8c65e1c2 100644 --- a/qpdf/qtest/qpdf/json-bad-data-json-inline-v2.out +++ b/qpdf/qtest/qpdf/json-bad-data-json-inline-v2.out @@ -53,6 +53,7 @@ "qpdf": { "jsonversion": 2, "pdfversion": "1.3", + "maxobjectid": 6, "objects": { "obj:1 0 R": { "value": { diff --git a/qpdf/qtest/qpdf/json-field-types---show-encryption-key-v2.out b/qpdf/qtest/qpdf/json-field-types---show-encryption-key-v2.out index c3158fae..d4948608 100644 --- a/qpdf/qtest/qpdf/json-field-types---show-encryption-key-v2.out +++ b/qpdf/qtest/qpdf/json-field-types---show-encryption-key-v2.out @@ -434,6 +434,7 @@ "qpdf": { "jsonversion": 2, "pdfversion": "1.5", + "maxobjectid": 196, "objects": { "obj:1 0 R": { "value": { diff --git a/qpdf/qtest/qpdf/json-field-types-v2.out b/qpdf/qtest/qpdf/json-field-types-v2.out index c3158fae..d4948608 100644 --- a/qpdf/qtest/qpdf/json-field-types-v2.out +++ b/qpdf/qtest/qpdf/json-field-types-v2.out @@ -434,6 +434,7 @@ "qpdf": { "jsonversion": 2, "pdfversion": "1.5", + "maxobjectid": 196, "objects": { "obj:1 0 R": { "value": { diff --git a/qpdf/qtest/qpdf/json-image-streams-all-file-v2.out b/qpdf/qtest/qpdf/json-image-streams-all-file-v2.out index 98486519..728f404b 100644 --- a/qpdf/qtest/qpdf/json-image-streams-all-file-v2.out +++ b/qpdf/qtest/qpdf/json-image-streams-all-file-v2.out @@ -6,6 +6,7 @@ "qpdf": { "jsonversion": 2, "pdfversion": "1.3", + "maxobjectid": 30, "objects": { "obj:12 0 R": { "stream": { diff --git a/qpdf/qtest/qpdf/json-image-streams-all-v2.out b/qpdf/qtest/qpdf/json-image-streams-all-v2.out index 6ba15415..423103ae 100644 --- a/qpdf/qtest/qpdf/json-image-streams-all-v2.out +++ b/qpdf/qtest/qpdf/json-image-streams-all-v2.out @@ -277,6 +277,7 @@ "qpdf": { "jsonversion": 2, "pdfversion": "1.3", + "maxobjectid": 30, "objects": { "obj:1 0 R": { "value": { diff --git a/qpdf/qtest/qpdf/json-image-streams-generalized-file-v2.out b/qpdf/qtest/qpdf/json-image-streams-generalized-file-v2.out index 00e5e8aa..51258eca 100644 --- a/qpdf/qtest/qpdf/json-image-streams-generalized-file-v2.out +++ b/qpdf/qtest/qpdf/json-image-streams-generalized-file-v2.out @@ -6,6 +6,7 @@ "qpdf": { "jsonversion": 2, "pdfversion": "1.3", + "maxobjectid": 30, "objects": { "obj:12 0 R": { "stream": { diff --git a/qpdf/qtest/qpdf/json-image-streams-generalized-inline-v2.out b/qpdf/qtest/qpdf/json-image-streams-generalized-inline-v2.out index f84e478b..1f28df1b 100644 --- a/qpdf/qtest/qpdf/json-image-streams-generalized-inline-v2.out +++ b/qpdf/qtest/qpdf/json-image-streams-generalized-inline-v2.out @@ -277,6 +277,7 @@ "qpdf": { "jsonversion": 2, "pdfversion": "1.3", + "maxobjectid": 30, "objects": { "obj:1 0 R": { "value": { diff --git a/qpdf/qtest/qpdf/json-image-streams-none-file-v2.out b/qpdf/qtest/qpdf/json-image-streams-none-file-v2.out index ce9ccdad..d1b40901 100644 --- a/qpdf/qtest/qpdf/json-image-streams-none-file-v2.out +++ b/qpdf/qtest/qpdf/json-image-streams-none-file-v2.out @@ -6,6 +6,7 @@ "qpdf": { "jsonversion": 2, "pdfversion": "1.3", + "maxobjectid": 30, "objects": { "obj:12 0 R": { "stream": { diff --git a/qpdf/qtest/qpdf/json-image-streams-none-inline-v2.out b/qpdf/qtest/qpdf/json-image-streams-none-inline-v2.out index d275ed06..7559e5cf 100644 --- a/qpdf/qtest/qpdf/json-image-streams-none-inline-v2.out +++ b/qpdf/qtest/qpdf/json-image-streams-none-inline-v2.out @@ -277,6 +277,7 @@ "qpdf": { "jsonversion": 2, "pdfversion": "1.3", + "maxobjectid": 30, "objects": { "obj:1 0 R": { "value": { diff --git a/qpdf/qtest/qpdf/json-image-streams-small-v2.out b/qpdf/qtest/qpdf/json-image-streams-small-v2.out index f7556d31..8b0232a6 100644 --- a/qpdf/qtest/qpdf/json-image-streams-small-v2.out +++ b/qpdf/qtest/qpdf/json-image-streams-small-v2.out @@ -277,6 +277,7 @@ "qpdf": { "jsonversion": 2, "pdfversion": "1.3", + "maxobjectid": 30, "objects": { "obj:1 0 R": { "value": { diff --git a/qpdf/qtest/qpdf/json-image-streams-specialized-file-v2.out b/qpdf/qtest/qpdf/json-image-streams-specialized-file-v2.out index e0865277..dcf1d47d 100644 --- a/qpdf/qtest/qpdf/json-image-streams-specialized-file-v2.out +++ b/qpdf/qtest/qpdf/json-image-streams-specialized-file-v2.out @@ -6,6 +6,7 @@ "qpdf": { "jsonversion": 2, "pdfversion": "1.3", + "maxobjectid": 30, "objects": { "obj:12 0 R": { "stream": { diff --git a/qpdf/qtest/qpdf/json-image-streams-specialized-inline-v2.out b/qpdf/qtest/qpdf/json-image-streams-specialized-inline-v2.out index 082743da..451ca088 100644 --- a/qpdf/qtest/qpdf/json-image-streams-specialized-inline-v2.out +++ b/qpdf/qtest/qpdf/json-image-streams-specialized-inline-v2.out @@ -277,6 +277,7 @@ "qpdf": { "jsonversion": 2, "pdfversion": "1.3", + "maxobjectid": 30, "objects": { "obj:1 0 R": { "value": { diff --git a/qpdf/qtest/qpdf/json-image-streams-specialized-v2.out b/qpdf/qtest/qpdf/json-image-streams-specialized-v2.out index 3e3f699c..987d62cb 100644 --- a/qpdf/qtest/qpdf/json-image-streams-specialized-v2.out +++ b/qpdf/qtest/qpdf/json-image-streams-specialized-v2.out @@ -277,6 +277,7 @@ "qpdf": { "jsonversion": 2, "pdfversion": "1.3", + "maxobjectid": 30, "objects": { "obj:1 0 R": { "value": { diff --git a/qpdf/qtest/qpdf/json-image-streams-v2.out b/qpdf/qtest/qpdf/json-image-streams-v2.out index 6a49225b..64fc4cb1 100644 --- a/qpdf/qtest/qpdf/json-image-streams-v2.out +++ b/qpdf/qtest/qpdf/json-image-streams-v2.out @@ -277,6 +277,7 @@ "qpdf": { "jsonversion": 2, "pdfversion": "1.3", + "maxobjectid": 30, "objects": { "obj:1 0 R": { "value": { diff --git a/qpdf/qtest/qpdf/json-outlines-with-actions-v2.out b/qpdf/qtest/qpdf/json-outlines-with-actions-v2.out index feffede7..4adc6a31 100644 --- a/qpdf/qtest/qpdf/json-outlines-with-actions-v2.out +++ b/qpdf/qtest/qpdf/json-outlines-with-actions-v2.out @@ -622,6 +622,7 @@ "qpdf": { "jsonversion": 2, "pdfversion": "1.3", + "maxobjectid": 108, "objects": { "obj:1 0 R": { "value": { diff --git a/qpdf/qtest/qpdf/json-outlines-with-old-root-dests-v2.out b/qpdf/qtest/qpdf/json-outlines-with-old-root-dests-v2.out index 6ce3b54d..8e97c099 100644 --- a/qpdf/qtest/qpdf/json-outlines-with-old-root-dests-v2.out +++ b/qpdf/qtest/qpdf/json-outlines-with-old-root-dests-v2.out @@ -727,6 +727,7 @@ "qpdf": { "jsonversion": 2, "pdfversion": "1.3", + "maxobjectid": 107, "objects": { "obj:1 0 R": { "value": { diff --git a/qpdf/qtest/qpdf/json-page-labels-and-outlines-qpdf-trailer-2-v2.out b/qpdf/qtest/qpdf/json-page-labels-and-outlines-qpdf-trailer-2-v2.out index 814579f5..867f5b93 100644 --- a/qpdf/qtest/qpdf/json-page-labels-and-outlines-qpdf-trailer-2-v2.out +++ b/qpdf/qtest/qpdf/json-page-labels-and-outlines-qpdf-trailer-2-v2.out @@ -6,6 +6,7 @@ "qpdf": { "jsonversion": 2, "pdfversion": "1.3", + "maxobjectid": 106, "objects": { "obj:2 0 R": { "value": { diff --git a/qpdf/qtest/qpdf/json-page-labels-and-outlines-qpdf-trailer-v2.out b/qpdf/qtest/qpdf/json-page-labels-and-outlines-qpdf-trailer-v2.out index 63596e8f..6a4969d4 100644 --- a/qpdf/qtest/qpdf/json-page-labels-and-outlines-qpdf-trailer-v2.out +++ b/qpdf/qtest/qpdf/json-page-labels-and-outlines-qpdf-trailer-v2.out @@ -6,6 +6,7 @@ "qpdf": { "jsonversion": 2, "pdfversion": "1.3", + "maxobjectid": 106, "objects": { "trailer": { "value": { diff --git a/qpdf/qtest/qpdf/json-page-labels-and-outlines-qpdf-v2.out b/qpdf/qtest/qpdf/json-page-labels-and-outlines-qpdf-v2.out index 3d8a2d67..9c8e5b57 100644 --- a/qpdf/qtest/qpdf/json-page-labels-and-outlines-qpdf-v2.out +++ b/qpdf/qtest/qpdf/json-page-labels-and-outlines-qpdf-v2.out @@ -6,6 +6,7 @@ "qpdf": { "jsonversion": 2, "pdfversion": "1.3", + "maxobjectid": 106, "objects": { "obj:1 0 R": { "value": { diff --git a/qpdf/qtest/qpdf/json-page-labels-and-outlines-v2.out b/qpdf/qtest/qpdf/json-page-labels-and-outlines-v2.out index 349b8b68..81f7441b 100644 --- a/qpdf/qtest/qpdf/json-page-labels-and-outlines-v2.out +++ b/qpdf/qtest/qpdf/json-page-labels-and-outlines-v2.out @@ -797,6 +797,7 @@ "qpdf": { "jsonversion": 2, "pdfversion": "1.3", + "maxobjectid": 106, "objects": { "obj:1 0 R": { "value": { diff --git a/qpdf/qtest/qpdf/json-page-labels-num-tree-v2.out b/qpdf/qtest/qpdf/json-page-labels-num-tree-v2.out index acff306a..e7ea1ede 100644 --- a/qpdf/qtest/qpdf/json-page-labels-num-tree-v2.out +++ b/qpdf/qtest/qpdf/json-page-labels-num-tree-v2.out @@ -540,6 +540,7 @@ "qpdf": { "jsonversion": 2, "pdfversion": "1.3", + "maxobjectid": 99, "objects": { "obj:1 0 R": { "value": { diff --git a/qpdf/qtest/qpdf/page_api_2-json-objects.out b/qpdf/qtest/qpdf/page_api_2-json-objects.out index b686d143..42d47124 100644 --- a/qpdf/qtest/qpdf/page_api_2-json-objects.out +++ b/qpdf/qtest/qpdf/page_api_2-json-objects.out @@ -6,6 +6,7 @@ "qpdf": { "jsonversion": 2, "pdfversion": "1.3", + "maxobjectid": 10, "objects": { "obj:1 0 R": { "value": { diff --git a/qpdf/qtest/qpdf/page_api_2-json-pages.out b/qpdf/qtest/qpdf/page_api_2-json-pages.out index 8e6f94b0..372a14f7 100644 --- a/qpdf/qtest/qpdf/page_api_2-json-pages.out +++ b/qpdf/qtest/qpdf/page_api_2-json-pages.out @@ -38,6 +38,7 @@ "qpdf": { "jsonversion": 2, "pdfversion": "1.3", + "maxobjectid": 11, "objects": { "obj:1 0 R": { "value": { -- cgit v1.2.3-70-g09d2