Commit 2a2f7f1bba3dd87bd17f8b819ddeb1a24bb742dd

Authored by Jay Berkenbilt
1 parent 02e8ef6f

Add maxobjectid to JSON

libqpdf/QPDFJob.cc
@@ -1188,6 +1188,12 @@ QPDFJob::doJSONQpdf(Pipeline* p, bool& first, QPDF& pdf) @@ -1188,6 +1188,12 @@ QPDFJob::doJSONQpdf(Pipeline* p, bool& first, QPDF& pdf)
1188 p, first_qpdf, "jsonversion", JSON::makeInt(this->m->json_version), 1); 1188 p, first_qpdf, "jsonversion", JSON::makeInt(this->m->json_version), 1);
1189 JSON::writeDictionaryItem( 1189 JSON::writeDictionaryItem(
1190 p, first_qpdf, "pdfversion", JSON::makeString(pdf.getPDFVersion()), 1); 1190 p, first_qpdf, "pdfversion", JSON::makeString(pdf.getPDFVersion()), 1);
  1191 + JSON::writeDictionaryItem(
  1192 + p,
  1193 + first_qpdf,
  1194 + "maxobjectid",
  1195 + JSON::makeInt(QIntC::to_longlong(pdf.getObjectCount())),
  1196 + 1);
1191 JSON::writeDictionaryKey(p, first_qpdf, "objects", 1); 1197 JSON::writeDictionaryKey(p, first_qpdf, "objects", 1);
1192 bool first_object = true; 1198 bool first_object = true;
1193 JSON::writeDictionaryOpen(p, first_object, 2); 1199 JSON::writeDictionaryOpen(p, first_object, 2);
@@ -1613,6 +1619,7 @@ QPDFJob::json_schema(int json_version, std::set<std::string>* keys) @@ -1613,6 +1619,7 @@ QPDFJob::json_schema(int json_version, std::set<std::string>* keys)
1613 schema.addDictionaryMember("qpdf", JSON::parse(R"({ 1619 schema.addDictionaryMember("qpdf", JSON::parse(R"({
1614 "jsonversion": "qpdf json output version", 1620 "jsonversion": "qpdf json output version",
1615 "pdfversion": "PDF version from PDF header", 1621 "pdfversion": "PDF version from PDF header",
  1622 + "maxobjectid": "Highest object ID; needed for adding new objects",
1616 "objects": { 1623 "objects": {
1617 "<obj:n n R|trailer>": "json representation of object" 1624 "<obj:n n R|trailer>": "json representation of object"
1618 } 1625 }
qpdf/qtest/qpdf/direct-pages-json-objects.out
@@ -6,6 +6,7 @@ @@ -6,6 +6,7 @@
6 "qpdf": { 6 "qpdf": {
7 "jsonversion": 2, 7 "jsonversion": 2,
8 "pdfversion": "1.3", 8 "pdfversion": "1.3",
  9 + "maxobjectid": 6,
9 "objects": { 10 "objects": {
10 "obj:1 0 R": { 11 "obj:1 0 R": {
11 "value": { 12 "value": {
qpdf/qtest/qpdf/direct-pages-json-pages.out
@@ -28,6 +28,7 @@ @@ -28,6 +28,7 @@
28 "qpdf": { 28 "qpdf": {
29 "jsonversion": 2, 29 "jsonversion": 2,
30 "pdfversion": "1.3", 30 "pdfversion": "1.3",
  31 + "maxobjectid": 8,
31 "objects": { 32 "objects": {
32 "obj:1 0 R": { 33 "obj:1 0 R": {
33 "value": { 34 "value": {
qpdf/qtest/qpdf/image-streams-small-to-json.out
@@ -6,6 +6,7 @@ @@ -6,6 +6,7 @@
6 "qpdf": { 6 "qpdf": {
7 "jsonversion": 2, 7 "jsonversion": 2,
8 "pdfversion": "1.3", 8 "pdfversion": "1.3",
  9 + "maxobjectid": 30,
9 "objects": { 10 "objects": {
10 "obj:1 0 R": { 11 "obj:1 0 R": {
11 "value": { 12 "value": {
qpdf/qtest/qpdf/json-bad-data-json-file-v2.out
@@ -53,6 +53,7 @@ @@ -53,6 +53,7 @@
53 "qpdf": { 53 "qpdf": {
54 "jsonversion": 2, 54 "jsonversion": 2,
55 "pdfversion": "1.3", 55 "pdfversion": "1.3",
  56 + "maxobjectid": 6,
56 "objects": { 57 "objects": {
57 "obj:1 0 R": { 58 "obj:1 0 R": {
58 "value": { 59 "value": {
qpdf/qtest/qpdf/json-bad-data-json-inline-v2.out
@@ -53,6 +53,7 @@ @@ -53,6 +53,7 @@
53 "qpdf": { 53 "qpdf": {
54 "jsonversion": 2, 54 "jsonversion": 2,
55 "pdfversion": "1.3", 55 "pdfversion": "1.3",
  56 + "maxobjectid": 6,
56 "objects": { 57 "objects": {
57 "obj:1 0 R": { 58 "obj:1 0 R": {
58 "value": { 59 "value": {
qpdf/qtest/qpdf/json-field-types---show-encryption-key-v2.out
@@ -434,6 +434,7 @@ @@ -434,6 +434,7 @@
434 "qpdf": { 434 "qpdf": {
435 "jsonversion": 2, 435 "jsonversion": 2,
436 "pdfversion": "1.5", 436 "pdfversion": "1.5",
  437 + "maxobjectid": 196,
437 "objects": { 438 "objects": {
438 "obj:1 0 R": { 439 "obj:1 0 R": {
439 "value": { 440 "value": {
qpdf/qtest/qpdf/json-field-types-v2.out
@@ -434,6 +434,7 @@ @@ -434,6 +434,7 @@
434 "qpdf": { 434 "qpdf": {
435 "jsonversion": 2, 435 "jsonversion": 2,
436 "pdfversion": "1.5", 436 "pdfversion": "1.5",
  437 + "maxobjectid": 196,
437 "objects": { 438 "objects": {
438 "obj:1 0 R": { 439 "obj:1 0 R": {
439 "value": { 440 "value": {
qpdf/qtest/qpdf/json-image-streams-all-file-v2.out
@@ -6,6 +6,7 @@ @@ -6,6 +6,7 @@
6 "qpdf": { 6 "qpdf": {
7 "jsonversion": 2, 7 "jsonversion": 2,
8 "pdfversion": "1.3", 8 "pdfversion": "1.3",
  9 + "maxobjectid": 30,
9 "objects": { 10 "objects": {
10 "obj:12 0 R": { 11 "obj:12 0 R": {
11 "stream": { 12 "stream": {
qpdf/qtest/qpdf/json-image-streams-all-v2.out
@@ -277,6 +277,7 @@ @@ -277,6 +277,7 @@
277 "qpdf": { 277 "qpdf": {
278 "jsonversion": 2, 278 "jsonversion": 2,
279 "pdfversion": "1.3", 279 "pdfversion": "1.3",
  280 + "maxobjectid": 30,
280 "objects": { 281 "objects": {
281 "obj:1 0 R": { 282 "obj:1 0 R": {
282 "value": { 283 "value": {
qpdf/qtest/qpdf/json-image-streams-generalized-file-v2.out
@@ -6,6 +6,7 @@ @@ -6,6 +6,7 @@
6 "qpdf": { 6 "qpdf": {
7 "jsonversion": 2, 7 "jsonversion": 2,
8 "pdfversion": "1.3", 8 "pdfversion": "1.3",
  9 + "maxobjectid": 30,
9 "objects": { 10 "objects": {
10 "obj:12 0 R": { 11 "obj:12 0 R": {
11 "stream": { 12 "stream": {
qpdf/qtest/qpdf/json-image-streams-generalized-inline-v2.out
@@ -277,6 +277,7 @@ @@ -277,6 +277,7 @@
277 "qpdf": { 277 "qpdf": {
278 "jsonversion": 2, 278 "jsonversion": 2,
279 "pdfversion": "1.3", 279 "pdfversion": "1.3",
  280 + "maxobjectid": 30,
280 "objects": { 281 "objects": {
281 "obj:1 0 R": { 282 "obj:1 0 R": {
282 "value": { 283 "value": {
qpdf/qtest/qpdf/json-image-streams-none-file-v2.out
@@ -6,6 +6,7 @@ @@ -6,6 +6,7 @@
6 "qpdf": { 6 "qpdf": {
7 "jsonversion": 2, 7 "jsonversion": 2,
8 "pdfversion": "1.3", 8 "pdfversion": "1.3",
  9 + "maxobjectid": 30,
9 "objects": { 10 "objects": {
10 "obj:12 0 R": { 11 "obj:12 0 R": {
11 "stream": { 12 "stream": {
qpdf/qtest/qpdf/json-image-streams-none-inline-v2.out
@@ -277,6 +277,7 @@ @@ -277,6 +277,7 @@
277 "qpdf": { 277 "qpdf": {
278 "jsonversion": 2, 278 "jsonversion": 2,
279 "pdfversion": "1.3", 279 "pdfversion": "1.3",
  280 + "maxobjectid": 30,
280 "objects": { 281 "objects": {
281 "obj:1 0 R": { 282 "obj:1 0 R": {
282 "value": { 283 "value": {
qpdf/qtest/qpdf/json-image-streams-small-v2.out
@@ -277,6 +277,7 @@ @@ -277,6 +277,7 @@
277 "qpdf": { 277 "qpdf": {
278 "jsonversion": 2, 278 "jsonversion": 2,
279 "pdfversion": "1.3", 279 "pdfversion": "1.3",
  280 + "maxobjectid": 30,
280 "objects": { 281 "objects": {
281 "obj:1 0 R": { 282 "obj:1 0 R": {
282 "value": { 283 "value": {
qpdf/qtest/qpdf/json-image-streams-specialized-file-v2.out
@@ -6,6 +6,7 @@ @@ -6,6 +6,7 @@
6 "qpdf": { 6 "qpdf": {
7 "jsonversion": 2, 7 "jsonversion": 2,
8 "pdfversion": "1.3", 8 "pdfversion": "1.3",
  9 + "maxobjectid": 30,
9 "objects": { 10 "objects": {
10 "obj:12 0 R": { 11 "obj:12 0 R": {
11 "stream": { 12 "stream": {
qpdf/qtest/qpdf/json-image-streams-specialized-inline-v2.out
@@ -277,6 +277,7 @@ @@ -277,6 +277,7 @@
277 "qpdf": { 277 "qpdf": {
278 "jsonversion": 2, 278 "jsonversion": 2,
279 "pdfversion": "1.3", 279 "pdfversion": "1.3",
  280 + "maxobjectid": 30,
280 "objects": { 281 "objects": {
281 "obj:1 0 R": { 282 "obj:1 0 R": {
282 "value": { 283 "value": {
qpdf/qtest/qpdf/json-image-streams-specialized-v2.out
@@ -277,6 +277,7 @@ @@ -277,6 +277,7 @@
277 "qpdf": { 277 "qpdf": {
278 "jsonversion": 2, 278 "jsonversion": 2,
279 "pdfversion": "1.3", 279 "pdfversion": "1.3",
  280 + "maxobjectid": 30,
280 "objects": { 281 "objects": {
281 "obj:1 0 R": { 282 "obj:1 0 R": {
282 "value": { 283 "value": {
qpdf/qtest/qpdf/json-image-streams-v2.out
@@ -277,6 +277,7 @@ @@ -277,6 +277,7 @@
277 "qpdf": { 277 "qpdf": {
278 "jsonversion": 2, 278 "jsonversion": 2,
279 "pdfversion": "1.3", 279 "pdfversion": "1.3",
  280 + "maxobjectid": 30,
280 "objects": { 281 "objects": {
281 "obj:1 0 R": { 282 "obj:1 0 R": {
282 "value": { 283 "value": {
qpdf/qtest/qpdf/json-outlines-with-actions-v2.out
@@ -622,6 +622,7 @@ @@ -622,6 +622,7 @@
622 "qpdf": { 622 "qpdf": {
623 "jsonversion": 2, 623 "jsonversion": 2,
624 "pdfversion": "1.3", 624 "pdfversion": "1.3",
  625 + "maxobjectid": 108,
625 "objects": { 626 "objects": {
626 "obj:1 0 R": { 627 "obj:1 0 R": {
627 "value": { 628 "value": {
qpdf/qtest/qpdf/json-outlines-with-old-root-dests-v2.out
@@ -727,6 +727,7 @@ @@ -727,6 +727,7 @@
727 "qpdf": { 727 "qpdf": {
728 "jsonversion": 2, 728 "jsonversion": 2,
729 "pdfversion": "1.3", 729 "pdfversion": "1.3",
  730 + "maxobjectid": 107,
730 "objects": { 731 "objects": {
731 "obj:1 0 R": { 732 "obj:1 0 R": {
732 "value": { 733 "value": {
qpdf/qtest/qpdf/json-page-labels-and-outlines-qpdf-trailer-2-v2.out
@@ -6,6 +6,7 @@ @@ -6,6 +6,7 @@
6 "qpdf": { 6 "qpdf": {
7 "jsonversion": 2, 7 "jsonversion": 2,
8 "pdfversion": "1.3", 8 "pdfversion": "1.3",
  9 + "maxobjectid": 106,
9 "objects": { 10 "objects": {
10 "obj:2 0 R": { 11 "obj:2 0 R": {
11 "value": { 12 "value": {
qpdf/qtest/qpdf/json-page-labels-and-outlines-qpdf-trailer-v2.out
@@ -6,6 +6,7 @@ @@ -6,6 +6,7 @@
6 "qpdf": { 6 "qpdf": {
7 "jsonversion": 2, 7 "jsonversion": 2,
8 "pdfversion": "1.3", 8 "pdfversion": "1.3",
  9 + "maxobjectid": 106,
9 "objects": { 10 "objects": {
10 "trailer": { 11 "trailer": {
11 "value": { 12 "value": {
qpdf/qtest/qpdf/json-page-labels-and-outlines-qpdf-v2.out
@@ -6,6 +6,7 @@ @@ -6,6 +6,7 @@
6 "qpdf": { 6 "qpdf": {
7 "jsonversion": 2, 7 "jsonversion": 2,
8 "pdfversion": "1.3", 8 "pdfversion": "1.3",
  9 + "maxobjectid": 106,
9 "objects": { 10 "objects": {
10 "obj:1 0 R": { 11 "obj:1 0 R": {
11 "value": { 12 "value": {
qpdf/qtest/qpdf/json-page-labels-and-outlines-v2.out
@@ -797,6 +797,7 @@ @@ -797,6 +797,7 @@
797 "qpdf": { 797 "qpdf": {
798 "jsonversion": 2, 798 "jsonversion": 2,
799 "pdfversion": "1.3", 799 "pdfversion": "1.3",
  800 + "maxobjectid": 106,
800 "objects": { 801 "objects": {
801 "obj:1 0 R": { 802 "obj:1 0 R": {
802 "value": { 803 "value": {
qpdf/qtest/qpdf/json-page-labels-num-tree-v2.out
@@ -540,6 +540,7 @@ @@ -540,6 +540,7 @@
540 "qpdf": { 540 "qpdf": {
541 "jsonversion": 2, 541 "jsonversion": 2,
542 "pdfversion": "1.3", 542 "pdfversion": "1.3",
  543 + "maxobjectid": 99,
543 "objects": { 544 "objects": {
544 "obj:1 0 R": { 545 "obj:1 0 R": {
545 "value": { 546 "value": {
qpdf/qtest/qpdf/page_api_2-json-objects.out
@@ -6,6 +6,7 @@ @@ -6,6 +6,7 @@
6 "qpdf": { 6 "qpdf": {
7 "jsonversion": 2, 7 "jsonversion": 2,
8 "pdfversion": "1.3", 8 "pdfversion": "1.3",
  9 + "maxobjectid": 10,
9 "objects": { 10 "objects": {
10 "obj:1 0 R": { 11 "obj:1 0 R": {
11 "value": { 12 "value": {
qpdf/qtest/qpdf/page_api_2-json-pages.out
@@ -38,6 +38,7 @@ @@ -38,6 +38,7 @@
38 "qpdf": { 38 "qpdf": {
39 "jsonversion": 2, 39 "jsonversion": 2,
40 "pdfversion": "1.3", 40 "pdfversion": "1.3",
  41 + "maxobjectid": 11,
41 "objects": { 42 "objects": {
42 "obj:1 0 R": { 43 "obj:1 0 R": {
43 "value": { 44 "value": {