diff options
author | Jay Berkenbilt <ejb@ql.org> | 2014-12-01 20:44:47 +0100 |
---|---|---|
committer | Jay Berkenbilt <ejb@ql.org> | 2014-12-29 16:17:21 +0100 |
commit | d8900c2255d12adbe9342ea751403740ca7a826d (patch) | |
tree | 51046b6d6366bb749da6838b2f4df0dd6a25bbe9 /qpdf | |
parent | caab1b0e1642bc6ee0194c7ab4c4a4de2ab22f2c (diff) | |
download | qpdf-d8900c2255d12adbe9342ea751403740ca7a826d.tar.zst |
Handle page tree node with no /Type
Original reported here:
https://bugs.launchpad.net/ubuntu/+source/qpdf/+bug/1397413
The PDF specification says that the /Type key for nodes in the pages
dictionary (both /Page and /Pages) is required, but some PDF files
omit them. Use the presence of other keys to determine the type of
pages tree node this is if the type key is not found.
Diffstat (limited to 'qpdf')
-rw-r--r-- | qpdf/qtest/qpdf.test | 6 | ||||
-rw-r--r-- | qpdf/qtest/qpdf/no-pages-types.out | 6 | ||||
-rw-r--r-- | qpdf/qtest/qpdf/no-pages-types.pdf | 79 |
3 files changed, 90 insertions, 1 deletions
diff --git a/qpdf/qtest/qpdf.test b/qpdf/qtest/qpdf.test index b2bf06a7..3bd1a2fa 100644 --- a/qpdf/qtest/qpdf.test +++ b/qpdf/qtest/qpdf.test @@ -199,7 +199,7 @@ $td->runtest("remove page we don't have", show_ntests(); # ---------- $td->notify("--- Miscellaneous Tests ---"); -$n_tests += 73; +$n_tests += 74; $td->runtest("qpdf version", {$td->COMMAND => "qpdf --version"}, @@ -558,6 +558,10 @@ $td->runtest("handle page no with contents", {$td->COMMAND => "qpdf --show-pages page-no-content.pdf"}, {$td->FILE => "page-no-content.out", $td->EXIT_STATUS => 0}, $td->NORMALIZE_NEWLINES); +$td->runtest("no type key for page nodes", + {$td->COMMAND => "qpdf --check no-pages-types.pdf"}, + {$td->FILE => "no-pages-types.out", $td->EXIT_STATUS => 0}, + $td->NORMALIZE_NEWLINES); show_ntests(); # ---------- diff --git a/qpdf/qtest/qpdf/no-pages-types.out b/qpdf/qtest/qpdf/no-pages-types.out new file mode 100644 index 00000000..0d5eb23b --- /dev/null +++ b/qpdf/qtest/qpdf/no-pages-types.out @@ -0,0 +1,6 @@ +checking no-pages-types.pdf +PDF Version: 1.3 +File is not encrypted +File is not linearized +No syntax or stream encoding errors found; the file may still contain +errors that qpdf cannot detect diff --git a/qpdf/qtest/qpdf/no-pages-types.pdf b/qpdf/qtest/qpdf/no-pages-types.pdf new file mode 100644 index 00000000..9bef0bbb --- /dev/null +++ b/qpdf/qtest/qpdf/no-pages-types.pdf @@ -0,0 +1,79 @@ +%PDF-1.3 +1 0 obj +<< + /Type /Catalog + /Pages 2 0 R +>> +endobj + +2 0 obj +<< + /Zype /Pages + /Kids [ + 3 0 R + ] + /Count 1 +>> +endobj + +3 0 obj +<< + /Zype /Page + /Parent 2 0 R + /MediaBox [0 0 612 792] + /Contents 4 0 R + /Resources << + /ProcSet 5 0 R + /Font << + /F1 6 0 R + >> + >> +>> +endobj + +4 0 obj +<< + /Length 44 +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato) Tj +ET +endstream +endobj + +5 0 obj +[ + /PDF + /Text +] +endobj + +6 0 obj +<< + /Type /Font + /Subtype /Type1 + /Name /F1 + /BaseFont /Helvetica + /Encoding /WinAnsiEncoding +>> +endobj + +xref +0 7 +0000000000 65535 f +0000000009 00000 n +0000000063 00000 n +0000000135 00000 n +0000000307 00000 n +0000000403 00000 n +0000000438 00000 n +trailer << + /Size 7 + /Root 1 0 R +>> +startxref +556 +%%EOF |