aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--qpdf/qtest/qpdf.test44
-rw-r--r--qpdf/qtest/qpdf/direct-pages-json.out104
-rw-r--r--qpdf/qtest/qpdf/page_api_2-json.out127
3 files changed, 259 insertions, 16 deletions
diff --git a/qpdf/qtest/qpdf.test b/qpdf/qtest/qpdf.test
index 762c3fc5..b21ffcd6 100644
--- a/qpdf/qtest/qpdf.test
+++ b/qpdf/qtest/qpdf.test
@@ -1802,8 +1802,8 @@ foreach my $f (qw(screen print))
show_ntests();
# ----------
-$td->notify("--- Duplicated Page Object ---");
-$n_tests += 4;
+$td->notify("--- Page Tree Issues ---");
+$n_tests += 9;
$td->runtest("linearize duplicated pages",
{$td->COMMAND =>
@@ -1823,6 +1823,31 @@ $td->runtest("extract duplicated pages",
$td->runtest("compare files",
{$td->FILE => "a.pdf"},
{$td->FILE => "extract-duplicate-page.pdf"});
+$td->runtest("direct pages",
+ {$td->COMMAND =>
+ "qpdf --static-id direct-pages.pdf --pages . -- a.pdf"},
+ {$td->STRING => "", $td->EXIT_STATUS => 0},
+ $td->NORMALIZE_NEWLINES);
+$td->runtest("check output",
+ {$td->FILE => "a.pdf"},
+ {$td->FILE => "direct-pages-fixed.pdf"});
+$td->runtest("show direct pages",
+ {$td->COMMAND =>
+ "qpdf --show-pages direct-pages.pdf"},
+ {$td->FILE => "direct-pages.out", $td->EXIT_STATUS => 0},
+ $td->NORMALIZE_NEWLINES);
+
+# Json mode for direct and duplicated pages illustrates that the
+# "objects" section still shows the original objects before correction
+# but the "pages" section shows the pages with their new object
+# numbers.
+foreach my $f (qw(page_api_2 direct-pages))
+{
+ $td->runtest("json for $f",
+ {$td->COMMAND => "qpdf --json $f.pdf"},
+ {$td->FILE => "$f-json.out", $td->EXIT_STATUS => 0},
+ $td->NORMALIZE_NEWLINES);
+}
show_ntests();
# ----------
@@ -2542,7 +2567,7 @@ for (my $n = 16; $n <= 19; ++$n)
show_ntests();
# ----------
$td->notify("--- Specific File Tests ---");
-$n_tests += 7;
+$n_tests += 4;
# Special PDF files that caused problems at some point
@@ -2563,19 +2588,6 @@ $td->runtest("compress objstm and xref",
$td->runtest("check output",
{$td->FILE => "a.pdf"},
{$td->FILE => "compress-objstm-xref.pdf"});
-$td->runtest("direct pages",
- {$td->COMMAND =>
- "qpdf --static-id direct-pages.pdf --pages . -- a.pdf"},
- {$td->STRING => "", $td->EXIT_STATUS => 0},
- $td->NORMALIZE_NEWLINES);
-$td->runtest("check output",
- {$td->FILE => "a.pdf"},
- {$td->FILE => "direct-pages-fixed.pdf"});
-$td->runtest("show direct pages",
- {$td->COMMAND =>
- "qpdf --show-pages direct-pages.pdf"},
- {$td->FILE => "direct-pages.out", $td->EXIT_STATUS => 0},
- $td->NORMALIZE_NEWLINES);
show_ntests();
# ----------
diff --git a/qpdf/qtest/qpdf/direct-pages-json.out b/qpdf/qtest/qpdf/direct-pages-json.out
new file mode 100644
index 00000000..c003161a
--- /dev/null
+++ b/qpdf/qtest/qpdf/direct-pages-json.out
@@ -0,0 +1,104 @@
+{
+ "acroform": {
+ "fields": [],
+ "hasacroform": false,
+ "needappearances": false
+ },
+ "objects": {
+ "1 0 R": {
+ "/Pages": "2 0 R",
+ "/Type": "/Catalog"
+ },
+ "2 0 R": {
+ "/Count": 2,
+ "/Kids": [
+ {
+ "/Contents": "3 0 R",
+ "/MediaBox": [
+ 0,
+ 0,
+ 612,
+ 792
+ ],
+ "/Parent": "2 0 R",
+ "/Resources": {
+ "/Font": {
+ "/F1": "5 0 R"
+ },
+ "/ProcSet": "6 0 R"
+ },
+ "/Type": "/Page"
+ },
+ {
+ "/Contents": "3 0 R",
+ "/MediaBox": [
+ 0,
+ 0,
+ 612,
+ 792
+ ],
+ "/Parent": "2 0 R",
+ "/Resources": {
+ "/Font": {
+ "/F1": "5 0 R"
+ },
+ "/ProcSet": "6 0 R"
+ },
+ "/Type": "/Page"
+ }
+ ],
+ "/Type": "/Pages"
+ },
+ "3 0 R": {
+ "/Length": "4 0 R"
+ },
+ "4 0 R": 44,
+ "5 0 R": {
+ "/BaseFont": "/Helvetica",
+ "/Encoding": "/WinAnsiEncoding",
+ "/Name": "/F1",
+ "/Subtype": "/Type1",
+ "/Type": "/Font"
+ },
+ "6 0 R": [
+ "/PDF",
+ "/Text"
+ ],
+ "trailer": {
+ "/ID": [
+ "\u0013#¥fi|WzfsU…©6ŸÎ<",
+ "7,¿DöÛ‹«`Ù&<\u000f\u000bÒj"
+ ],
+ "/Root": "1 0 R",
+ "/Size": 7
+ }
+ },
+ "outlines": [],
+ "pagelabels": [],
+ "pages": [
+ {
+ "contents": [
+ "3 0 R"
+ ],
+ "images": [],
+ "label": null,
+ "object": "7 0 R",
+ "outlines": [],
+ "pageposfrom1": 1
+ },
+ {
+ "contents": [
+ "3 0 R"
+ ],
+ "images": [],
+ "label": null,
+ "object": "8 0 R",
+ "outlines": [],
+ "pageposfrom1": 2
+ }
+ ],
+ "parameters": {
+ "decodelevel": "generalized"
+ },
+ "version": 1
+}
diff --git a/qpdf/qtest/qpdf/page_api_2-json.out b/qpdf/qtest/qpdf/page_api_2-json.out
new file mode 100644
index 00000000..2b907b19
--- /dev/null
+++ b/qpdf/qtest/qpdf/page_api_2-json.out
@@ -0,0 +1,127 @@
+{
+ "acroform": {
+ "fields": [],
+ "hasacroform": false,
+ "needappearances": false
+ },
+ "objects": {
+ "1 0 R": {
+ "/Pages": "3 0 R",
+ "/Type": "/Catalog"
+ },
+ "10 0 R": 47,
+ "2 0 R": {
+ "/CreationDate": "D:20120621124041",
+ "/Producer": "Apex PDFWriter"
+ },
+ "3 0 R": {
+ "/Count": 3,
+ "/Kids": [
+ "4 0 R",
+ "4 0 R",
+ "5 0 R"
+ ],
+ "/Type": "/Pages"
+ },
+ "4 0 R": {
+ "/Contents": "6 0 R",
+ "/MediaBox": [
+ 0,
+ 0,
+ 612,
+ 792
+ ],
+ "/Parent": "3 0 R",
+ "/Resources": {
+ "/Font": {
+ "/F1": "8 0 R"
+ },
+ "/ProcSet": [
+ "/PDF",
+ "/Text"
+ ]
+ },
+ "/Type": "/Page"
+ },
+ "5 0 R": {
+ "/Contents": "9 0 R",
+ "/MediaBox": [
+ 0,
+ 0,
+ 612,
+ 792
+ ],
+ "/Parent": "3 0 R",
+ "/Resources": {
+ "/Font": {
+ "/F1": "8 0 R"
+ },
+ "/ProcSet": [
+ "/PDF",
+ "/Text"
+ ]
+ },
+ "/Type": "/Page"
+ },
+ "6 0 R": {
+ "/Length": "7 0 R"
+ },
+ "7 0 R": 47,
+ "8 0 R": {
+ "/BaseFont": "/Times-Roman",
+ "/Encoding": "/WinAnsiEncoding",
+ "/Subtype": "/Type1",
+ "/Type": "/Font"
+ },
+ "9 0 R": {
+ "/Length": "10 0 R"
+ },
+ "trailer": {
+ "/ID": [
+ "û\u0018·ƒÿ{5⁄\u0005Ú−S*º‘o",
+ "÷\u0017ž³QY¿ÔÀ\u000f\u0012−¼ý\u001f\u0002"
+ ],
+ "/Info": "2 0 R",
+ "/Root": "1 0 R",
+ "/Size": 11
+ }
+ },
+ "outlines": [],
+ "pagelabels": [],
+ "pages": [
+ {
+ "contents": [
+ "6 0 R"
+ ],
+ "images": [],
+ "label": null,
+ "object": "4 0 R",
+ "outlines": [],
+ "pageposfrom1": 1
+ },
+ {
+ "contents": [
+ "6 0 R"
+ ],
+ "images": [],
+ "label": null,
+ "object": "11 0 R",
+ "outlines": [],
+ "pageposfrom1": 2
+ },
+ {
+ "contents": [
+ "9 0 R"
+ ],
+ "images": [],
+ "label": null,
+ "object": "5 0 R",
+ "outlines": [],
+ "pageposfrom1": 3
+ }
+ ],
+ "parameters": {
+ "decodelevel": "generalized"
+ },
+ "version": 1
+}