diff --git a/ChangeLog b/ChangeLog index 23354fb6..2d5adb70 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2009-09-27 Jay Berkenbilt + + * The function QPDF::getUserPassword returned the user password + with the required padding as specified by the PDF specification. + This is seldom useful to users. This function has been replaced + by QPDF::getPaddedUserPassword. Call the new + QPDF::getTrimmedUserPassword to retreive the user password in a + human-readable format. + + * qpdf/qpdf.cc (main): qpdf --check now prints the PDF version + number in addition to its other output. + 2009-09-26 Jay Berkenbilt * Removed all references to QEXC; now using std::runtime_error and diff --git a/qpdf/qpdf-ctest.c b/qpdf/qpdf-ctest.c index 23947b6b..d491b2a5 100644 --- a/qpdf/qpdf-ctest.c +++ b/qpdf/qpdf-ctest.c @@ -33,6 +33,105 @@ static void test01(char const* infile, report_errors(); } +static void test02(char const* infile, + char const* password, + char const* outfile) +{ + qpdf_set_suppress_warnings(qpdf, QPDF_TRUE); + qpdf_read(qpdf, infile, password); + if (qpdf_init_write(qpdf, outfile) == QPDF_SUCCESS) + { + qpdf_set_static_ID(qpdf, QPDF_TRUE); + qpdf_write(qpdf); + } + report_errors(); +} + +static void test03(char const* infile, + char const* password, + char const* outfile) +{ + qpdf_read(qpdf, infile, password); + qpdf_init_write(qpdf, outfile); + qpdf_set_static_ID(qpdf, QPDF_TRUE); + qpdf_set_content_normalization(qpdf, QPDF_TRUE); + qpdf_write(qpdf); + report_errors(); +} + +static void test04(char const* infile, + char const* password, + char const* outfile) +{ + qpdf_set_ignore_xref_streams(qpdf, QPDF_TRUE); + qpdf_read(qpdf, infile, password); + qpdf_init_write(qpdf, outfile); + qpdf_set_static_ID(qpdf, QPDF_TRUE); + qpdf_write(qpdf); + report_errors(); +} + +static void test05(char const* infile, + char const* password, + char const* outfile) +{ + qpdf_read(qpdf, infile, password); + qpdf_init_write(qpdf, outfile); + qpdf_set_static_ID(qpdf, QPDF_TRUE); + qpdf_set_linearization(qpdf, QPDF_TRUE); + qpdf_write(qpdf); + report_errors(); +} + +static void test06(char const* infile, + char const* password, + char const* outfile) +{ + qpdf_read(qpdf, infile, password); + qpdf_init_write(qpdf, outfile); + qpdf_set_static_ID(qpdf, QPDF_TRUE); + qpdf_set_object_stream_mode(qpdf, QPDF_OBJECT_STREAM_GENERATE); + qpdf_write(qpdf); + report_errors(); +} + +static void test07(char const* infile, + char const* password, + char const* outfile) +{ + qpdf_read(qpdf, infile, password); + qpdf_init_write(qpdf, outfile); + qpdf_set_static_ID(qpdf, QPDF_TRUE); + qpdf_set_qdf_mode(qpdf, QPDF_TRUE); + qpdf_write(qpdf); + report_errors(); +} + +static void test08(char const* infile, + char const* password, + char const* outfile) +{ + qpdf_read(qpdf, infile, password); + qpdf_init_write(qpdf, outfile); + qpdf_set_static_ID(qpdf, QPDF_TRUE); + qpdf_set_qdf_mode(qpdf, QPDF_TRUE); + qpdf_set_suppress_original_object_IDs(qpdf, QPDF_TRUE); + qpdf_write(qpdf); + report_errors(); +} + +static void test09(char const* infile, + char const* password, + char const* outfile) +{ + qpdf_read(qpdf, infile, password); + qpdf_init_write(qpdf, outfile); + qpdf_set_static_ID(qpdf, QPDF_TRUE); + qpdf_set_stream_data_mode(qpdf, QPDF_STREAM_DATA_UNCOMPRESS); + qpdf_write(qpdf); + report_errors(); +} + int main(int argc, char* argv[]) { char* whoami = 0; @@ -67,6 +166,14 @@ int main(int argc, char* argv[]) outfile = argv[4]; fn = ((n == 1) ? test01 : + (n == 2) ? test02 : + (n == 3) ? test03 : + (n == 4) ? test04 : + (n == 5) ? test05 : + (n == 6) ? test06 : + (n == 7) ? test07 : + (n == 8) ? test08 : + (n == 9) ? test09 : 0); if (fn == 0) diff --git a/qpdf/qtest/qpdf.test b/qpdf/qtest/qpdf.test index 53cb08f5..6b576191 100644 --- a/qpdf/qtest/qpdf.test +++ b/qpdf/qtest/qpdf.test @@ -296,6 +296,56 @@ check_pdf("no recompression", "good17-not-recompressed.pdf", 0); +show_ntests(); +# ---------- +$td->notify("--- C API Tests ---"); + +my @capi = ( + [2, 'no options'], + [3, 'normalized content'], + [4, 'ignore xref streams'], + [5, 'linearized'], + [6, 'object streams'], + [7, 'qdf'], + [8, 'no original object ids'], + [9, 'uncompressed streams'], + ); +$n_tests += (2 * @capi) + 3; +foreach my $d (@capi) +{ + my ($n, $description) = @$d; + my $outfile = $description; + $outfile =~ s/ /-/g; + $outfile = "c-$outfile.pdf"; + $td->runtest($description, + {$td->COMMAND => "qpdf-ctest $n hybrid-xref.pdf '' a.pdf"}, + {$td->STRING => "", $td->EXIT_STATUS => 0}); + $td->runtest("check $description", + {$td->FILE => "a.pdf"}, + {$td->FILE => $outfile}); +} +$td->runtest("write to bad file name", + {$td->COMMAND => "qpdf-ctest 2 hybrid-xref.pdf '' /:a:/:b:"}, + {$td->REGEXP => "error: open /:a:/:b:: .*", + $td->EXIT_STATUS => 0}, + $td->NORMALIZE_NEWLINES); + +$td->runtest("write damaged to bad file name", + {$td->COMMAND => "qpdf-ctest 2 append-page-content-damaged.pdf" . + " '' /:a:/:b:"}, + {$td->REGEXP => + "warning:(?s:.*)\n" . + "error: open /:a:/:b:: .*", + $td->EXIT_STATUS => 0}, + $td->NORMALIZE_NEWLINES); + +$td->runtest("write damaged", + {$td->COMMAND => "qpdf-ctest 2 append-page-content-damaged.pdf" . + " '' a.pdf"}, + {$td->FILE => "c-write-damaged.out", + $td->EXIT_STATUS => 0}, + $td->NORMALIZE_NEWLINES); + show_ntests(); # ---------- $td->notify("--- Object Stream Tests ---"); diff --git a/qpdf/qtest/qpdf/c-ignore-xref-streams.pdf b/qpdf/qtest/qpdf/c-ignore-xref-streams.pdf new file mode 100644 index 00000000..c3d17dce Binary files /dev/null and b/qpdf/qtest/qpdf/c-ignore-xref-streams.pdf differ diff --git a/qpdf/qtest/qpdf/c-linearized.pdf b/qpdf/qtest/qpdf/c-linearized.pdf new file mode 100644 index 00000000..f25cd6a8 Binary files /dev/null and b/qpdf/qtest/qpdf/c-linearized.pdf differ diff --git a/qpdf/qtest/qpdf/c-no-options.pdf b/qpdf/qtest/qpdf/c-no-options.pdf new file mode 100644 index 00000000..4c777c61 Binary files /dev/null and b/qpdf/qtest/qpdf/c-no-options.pdf differ diff --git a/qpdf/qtest/qpdf/c-no-original-object-ids.pdf b/qpdf/qtest/qpdf/c-no-original-object-ids.pdf new file mode 100644 index 00000000..d46bf042 --- /dev/null +++ b/qpdf/qtest/qpdf/c-no-original-object-ids.pdf @@ -0,0 +1,1512 @@ +%PDF-1.5 +% +%QDF-1.0 + +1 0 obj +<< + /Outlines 3 0 R + /PageLabels 15 0 R + /PageMode /UseOutlines + /Pages 16 0 R + /Type /Catalog +>> +endobj + +2 0 obj +<< + /Type /ObjStm + /Length 3176 + /N 13 + /First 126 +>> +stream +3 0 +4 100 +5 335 +6 520 +7 718 +8 1044 +9 1262 +10 1508 +11 1715 +12 1922 +13 2115 +14 2329 +15 2535 +%% Object stream: object 3, index 0 +<< + /Count 6 + /First 4 0 R + /Last 5 0 R + /Type /Outlines +>> +%% Object stream: object 4, index 1 +<< + /Count 4 + /Dest [ + 17 0 R + /XYZ + null + null + null + ] + /First 6 0 R + /Last 7 0 R + /Next 5 0 R + /Parent 3 0 R + /Title (Iss 1 -> 5: /XYZ null null null) + /Type /Outline +>> +%% Object stream: object 5, index 2 +<< + /Dest [ + 18 0 R + /XYZ + 66 + 756 + 3 + ] + /Parent 3 0 R + /Prev 4 0 R + /Title (Trepak 2 -> 15: /XYZ 66 756 3) + /Type /Outline +>> +%% Object stream: object 6, index 3 +<< + /Count -3 + /Dest [ + 19 0 R + /Fit + ] + /First 8 0 R + /Last 9 0 R + /Next 7 0 R + /Parent 4 0 R + /Title (Amanda 1.1 -> 11: /Fit) + /Type /Outline +>> +%% Object stream: object 7, index 4 +<< + /Count 2 + /Dest [ + 20 0 R + /FitH + 792 + ] + /First 13 0 R + /Last 14 0 R + /Parent 4 0 R + /Prev 6 0 R + /Title + /Type /Outline +>> +%% Object stream: object 8, index 5 +<< + /Count -2 + /Dest [ + 21 0 R + /FitV + 100 + ] + /First 10 0 R + /Last 11 0 R + /Next 9 0 R + /Parent 6 0 R + /Title (Isosicle 1.1.1 -> 12: /FitV 100) + /Type /Outline +>> +%% Object stream: object 9, index 6 +<< + /Count 1 + /Dest [ + 21 0 R + /XYZ + null + null + null + ] + /First 12 0 R + /Last 12 0 R + /Parent 6 0 R + /Prev 8 0 R + /Title (Isosicle 1.1.2 -> 12: /XYZ null null null) + /Type /Outline +>> +%% Object stream: object 10, index 7 +<< + /Dest [ + 22 0 R + /XYZ + null + null + null + ] + /Next 11 0 R + /Parent 8 0 R + /Title (Isosicle 1.1.1.1 -> 18: /XYZ null null null) + /Type /Outline +>> +%% Object stream: object 11, index 8 +<< + /Dest [ + 23 0 R + /XYZ + null + null + null + ] + /Parent 8 0 R + /Prev 10 0 R + /Title (Isosicle 1.1.1.2 -> 19: /XYZ null null null) + /Type /Outline +>> +%% Object stream: object 12, index 9 +<< + /Dest [ + 24 0 R + /XYZ + null + null + null + ] + /Parent 9 0 R + /Title (Isosicle 1.1.2.1 -> 22: /XYZ null null null) + /Type /Outline +>> +%% Object stream: object 13, index 10 +<< + /Dest [ + 25 0 R + /FitR + 66 + 714 + 180 + 770 + ] + /Next 14 0 R + /Parent 7 0 R + /Title (Trepsichord 1.2.1 -> 1: /FitR 66 714 180 770) + /Type /Outline +>> +%% Object stream: object 14, index 11 +<< + /Dest [ + 26 0 R + /XYZ + null + null + null + ] + /Parent 7 0 R + /Prev 13 0 R + /Title (Trepsicle 1.2.2 -> 0: /XYZ null null null) + /Type /Outline +>> +%% Object stream: object 15, index 12 +<< + /Nums [ + 0 + << + /P () + >> + 2 + << + /S /r + /St 1 + >> + 7 + << + /P () + >> + 9 + << + /S /r + /St 6 + >> + 11 + << + /P () + >> + 12 + << + /S /D + /St 2 + >> + 15 + << + /S /D + /St 6 + >> + 19 + << + /P () + >> + 20 + << + /S /D + /St 12 + >> + 22 + << + /S /D + /St 16059 + >> + 23 + << + /S /r + /St 50 + >> + 29 + << + /S /r + /St 54 + >> + ] +>> +endstream +endobj + +16 0 obj +<< + /Count 30 + /Kids [ + 26 0 R + 25 0 R + 27 0 R + 28 0 R + 29 0 R + 17 0 R + 30 0 R + 31 0 R + 32 0 R + 33 0 R + 34 0 R + 19 0 R + 21 0 R + 20 0 R + 35 0 R + 18 0 R + 36 0 R + 37 0 R + 22 0 R + 23 0 R + 38 0 R + 39 0 R + 24 0 R + 40 0 R + 41 0 R + 42 0 R + 43 0 R + 44 0 R + 45 0 R + 46 0 R + ] + /Type /Pages +>> +endobj + +%% Page 6 +17 0 obj +<< + /Contents 47 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 16 +18 0 obj +<< + /Contents 51 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 12 +19 0 obj +<< + /Contents 53 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 14 +20 0 obj +<< + /Contents 55 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 13 +21 0 obj +<< + /Contents 57 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 19 +22 0 obj +<< + /Contents 59 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 20 +23 0 obj +<< + /Contents 61 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 23 +24 0 obj +<< + /Contents 63 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 2 +25 0 obj +<< + /Contents 65 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 1 +26 0 obj +<< + /Contents 67 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 3 +27 0 obj +<< + /Contents 69 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 4 +28 0 obj +<< + /Contents 71 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 5 +29 0 obj +<< + /Contents 73 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 7 +30 0 obj +<< + /Contents 75 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 8 +31 0 obj +<< + /Contents 77 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 9 +32 0 obj +<< + /Contents 79 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 10 +33 0 obj +<< + /Contents 81 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 11 +34 0 obj +<< + /Contents 83 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 15 +35 0 obj +<< + /Contents 85 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 17 +36 0 obj +<< + /Contents 87 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 18 +37 0 obj +<< + /Contents 89 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 21 +38 0 obj +<< + /Contents 91 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 22 +39 0 obj +<< + /Contents 93 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 24 +40 0 obj +<< + /Contents 95 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 25 +41 0 obj +<< + /Contents 97 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 26 +42 0 obj +<< + /Contents 99 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 27 +43 0 obj +<< + /Contents 101 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 28 +44 0 obj +<< + /Contents 103 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 29 +45 0 obj +<< + /Contents 105 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 30 +46 0 obj +<< + /Contents 107 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Contents for page 6 +47 0 obj +<< + /Length 48 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 5) Tj +ET +endstream +endobj + +48 0 obj +46 +endobj + +49 0 obj +<< + /BaseFont /Helvetica + /Encoding /WinAnsiEncoding + /Name /F1 + /Subtype /Type1 + /Type /Font +>> +endobj + +50 0 obj +[ + /PDF + /Text +] +endobj + +%% Contents for page 16 +51 0 obj +<< + /Length 52 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 15) Tj +ET +endstream +endobj + +52 0 obj +47 +endobj + +%% Contents for page 12 +53 0 obj +<< + /Length 54 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 11) Tj +ET +endstream +endobj + +54 0 obj +47 +endobj + +%% Contents for page 14 +55 0 obj +<< + /Length 56 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 13) Tj +ET +endstream +endobj + +56 0 obj +47 +endobj + +%% Contents for page 13 +57 0 obj +<< + /Length 58 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 12) Tj +ET +endstream +endobj + +58 0 obj +47 +endobj + +%% Contents for page 19 +59 0 obj +<< + /Length 60 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 18) Tj +ET +endstream +endobj + +60 0 obj +47 +endobj + +%% Contents for page 20 +61 0 obj +<< + /Length 62 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 19) Tj +ET +endstream +endobj + +62 0 obj +47 +endobj + +%% Contents for page 23 +63 0 obj +<< + /Length 64 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 22) Tj +ET +endstream +endobj + +64 0 obj +47 +endobj + +%% Contents for page 2 +65 0 obj +<< + /Length 66 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 1) Tj +ET +endstream +endobj + +66 0 obj +46 +endobj + +%% Contents for page 1 +67 0 obj +<< + /Length 68 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 0) Tj +ET +endstream +endobj + +68 0 obj +46 +endobj + +%% Contents for page 3 +69 0 obj +<< + /Length 70 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 2) Tj +ET +endstream +endobj + +70 0 obj +46 +endobj + +%% Contents for page 4 +71 0 obj +<< + /Length 72 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 3) Tj +ET +endstream +endobj + +72 0 obj +46 +endobj + +%% Contents for page 5 +73 0 obj +<< + /Length 74 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 4) Tj +ET +endstream +endobj + +74 0 obj +46 +endobj + +%% Contents for page 7 +75 0 obj +<< + /Length 76 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 6) Tj +ET +endstream +endobj + +76 0 obj +46 +endobj + +%% Contents for page 8 +77 0 obj +<< + /Length 78 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 7) Tj +ET +endstream +endobj + +78 0 obj +46 +endobj + +%% Contents for page 9 +79 0 obj +<< + /Length 80 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 8) Tj +ET +endstream +endobj + +80 0 obj +46 +endobj + +%% Contents for page 10 +81 0 obj +<< + /Length 82 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 9) Tj +ET +endstream +endobj + +82 0 obj +46 +endobj + +%% Contents for page 11 +83 0 obj +<< + /Length 84 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 10) Tj +ET +endstream +endobj + +84 0 obj +47 +endobj + +%% Contents for page 15 +85 0 obj +<< + /Length 86 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 14) Tj +ET +endstream +endobj + +86 0 obj +47 +endobj + +%% Contents for page 17 +87 0 obj +<< + /Length 88 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 16) Tj +ET +endstream +endobj + +88 0 obj +47 +endobj + +%% Contents for page 18 +89 0 obj +<< + /Length 90 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 17) Tj +ET +endstream +endobj + +90 0 obj +47 +endobj + +%% Contents for page 21 +91 0 obj +<< + /Length 92 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 20) Tj +ET +endstream +endobj + +92 0 obj +47 +endobj + +%% Contents for page 22 +93 0 obj +<< + /Length 94 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 21) Tj +ET +endstream +endobj + +94 0 obj +47 +endobj + +%% Contents for page 24 +95 0 obj +<< + /Length 96 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 23) Tj +ET +endstream +endobj + +96 0 obj +47 +endobj + +%% Contents for page 25 +97 0 obj +<< + /Length 98 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 24) Tj +ET +endstream +endobj + +98 0 obj +47 +endobj + +%% Contents for page 26 +99 0 obj +<< + /Length 100 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 25) Tj +ET +endstream +endobj + +100 0 obj +47 +endobj + +%% Contents for page 27 +101 0 obj +<< + /Length 102 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 26) Tj +ET +endstream +endobj + +102 0 obj +47 +endobj + +%% Contents for page 28 +103 0 obj +<< + /Length 104 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 27) Tj +ET +endstream +endobj + +104 0 obj +47 +endobj + +%% Contents for page 29 +105 0 obj +<< + /Length 106 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 28) Tj +ET +endstream +endobj + +106 0 obj +47 +endobj + +%% Contents for page 30 +107 0 obj +<< + /Length 108 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 29) Tj +ET +endstream +endobj + +108 0 obj +47 +endobj + +109 0 obj +<< + /Type /XRef + /Length 440 + /W [ 1 2 1 ] + /Root 1 0 R + /Size 110 + /ID [<31415926535897932384626433832795><31415926535897932384626433832795>] +>> +stream +  +   SW'f5q@O !"_#/#$%&r'O''(A(}())y)* *9**+5+a++,],,---..>../7/b//0[0011122@223<3h334d445$556 6L667L7y788z899& +endstream +endobj + +startxref +14630 +%%EOF diff --git a/qpdf/qtest/qpdf/c-normalized-content.pdf b/qpdf/qtest/qpdf/c-normalized-content.pdf new file mode 100644 index 00000000..77e22068 Binary files /dev/null and b/qpdf/qtest/qpdf/c-normalized-content.pdf differ diff --git a/qpdf/qtest/qpdf/c-object-streams.pdf b/qpdf/qtest/qpdf/c-object-streams.pdf new file mode 100644 index 00000000..ae91ea7f Binary files /dev/null and b/qpdf/qtest/qpdf/c-object-streams.pdf differ diff --git a/qpdf/qtest/qpdf/c-qdf.pdf b/qpdf/qtest/qpdf/c-qdf.pdf new file mode 100644 index 00000000..8eeb28a3 --- /dev/null +++ b/qpdf/qtest/qpdf/c-qdf.pdf @@ -0,0 +1,1576 @@ +%PDF-1.5 +% +%QDF-1.0 + +%% Original object ID: 1 0 +1 0 obj +<< + /Outlines 3 0 R + /PageLabels 15 0 R + /PageMode /UseOutlines + /Pages 16 0 R + /Type /Catalog +>> +endobj + +2 0 obj +<< + /Type /ObjStm + /Length 3496 + /N 13 + /First 150 +>> +stream +3 0 +4 124 +5 383 +6 592 +7 814 +8 1165 +9 1408 +10 1679 +11 1911 +12 2143 +13 2361 +14 2600 +15 2831 +%% Object stream: object 3, index 0; original object ID: 95 +<< + /Count 6 + /First 4 0 R + /Last 5 0 R + /Type /Outlines +>> +%% Object stream: object 4, index 1; original object ID: 96 +<< + /Count 4 + /Dest [ + 17 0 R + /XYZ + null + null + null + ] + /First 6 0 R + /Last 7 0 R + /Next 5 0 R + /Parent 3 0 R + /Title (Iss 1 -> 5: /XYZ null null null) + /Type /Outline +>> +%% Object stream: object 5, index 2; original object ID: 97 +<< + /Dest [ + 18 0 R + /XYZ + 66 + 756 + 3 + ] + /Parent 3 0 R + /Prev 4 0 R + /Title (Trepak 2 -> 15: /XYZ 66 756 3) + /Type /Outline +>> +%% Object stream: object 6, index 3; original object ID: 98 +<< + /Count -3 + /Dest [ + 19 0 R + /Fit + ] + /First 8 0 R + /Last 9 0 R + /Next 7 0 R + /Parent 4 0 R + /Title (Amanda 1.1 -> 11: /Fit) + /Type /Outline +>> +%% Object stream: object 7, index 4; original object ID: 99 +<< + /Count 2 + /Dest [ + 20 0 R + /FitH + 792 + ] + /First 13 0 R + /Last 14 0 R + /Parent 4 0 R + /Prev 6 0 R + /Title + /Type /Outline +>> +%% Object stream: object 8, index 5; original object ID: 100 +<< + /Count -2 + /Dest [ + 21 0 R + /FitV + 100 + ] + /First 10 0 R + /Last 11 0 R + /Next 9 0 R + /Parent 6 0 R + /Title (Isosicle 1.1.1 -> 12: /FitV 100) + /Type /Outline +>> +%% Object stream: object 9, index 6; original object ID: 101 +<< + /Count 1 + /Dest [ + 21 0 R + /XYZ + null + null + null + ] + /First 12 0 R + /Last 12 0 R + /Parent 6 0 R + /Prev 8 0 R + /Title (Isosicle 1.1.2 -> 12: /XYZ null null null) + /Type /Outline +>> +%% Object stream: object 10, index 7; original object ID: 102 +<< + /Dest [ + 22 0 R + /XYZ + null + null + null + ] + /Next 11 0 R + /Parent 8 0 R + /Title (Isosicle 1.1.1.1 -> 18: /XYZ null null null) + /Type /Outline +>> +%% Object stream: object 11, index 8; original object ID: 103 +<< + /Dest [ + 23 0 R + /XYZ + null + null + null + ] + /Parent 8 0 R + /Prev 10 0 R + /Title (Isosicle 1.1.1.2 -> 19: /XYZ null null null) + /Type /Outline +>> +%% Object stream: object 12, index 9; original object ID: 104 +<< + /Dest [ + 24 0 R + /XYZ + null + null + null + ] + /Parent 9 0 R + /Title (Isosicle 1.1.2.1 -> 22: /XYZ null null null) + /Type /Outline +>> +%% Object stream: object 13, index 10; original object ID: 105 +<< + /Dest [ + 25 0 R + /FitR + 66 + 714 + 180 + 770 + ] + /Next 14 0 R + /Parent 7 0 R + /Title (Trepsichord 1.2.1 -> 1: /FitR 66 714 180 770) + /Type /Outline +>> +%% Object stream: object 14, index 11; original object ID: 106 +<< + /Dest [ + 26 0 R + /XYZ + null + null + null + ] + /Parent 7 0 R + /Prev 13 0 R + /Title (Trepsicle 1.2.2 -> 0: /XYZ null null null) + /Type /Outline +>> +%% Object stream: object 15, index 12; original object ID: 107 +<< + /Nums [ + 0 + << + /P () + >> + 2 + << + /S /r + /St 1 + >> + 7 + << + /P () + >> + 9 + << + /S /r + /St 6 + >> + 11 + << + /P () + >> + 12 + << + /S /D + /St 2 + >> + 15 + << + /S /D + /St 6 + >> + 19 + << + /P () + >> + 20 + << + /S /D + /St 12 + >> + 22 + << + /S /D + /St 16059 + >> + 23 + << + /S /r + /St 50 + >> + 29 + << + /S /r + /St 54 + >> + ] +>> +endstream +endobj + +%% Original object ID: 2 0 +16 0 obj +<< + /Count 30 + /Kids [ + 26 0 R + 25 0 R + 27 0 R + 28 0 R + 29 0 R + 17 0 R + 30 0 R + 31 0 R + 32 0 R + 33 0 R + 34 0 R + 19 0 R + 21 0 R + 20 0 R + 35 0 R + 18 0 R + 36 0 R + 37 0 R + 22 0 R + 23 0 R + 38 0 R + 39 0 R + 24 0 R + 40 0 R + 41 0 R + 42 0 R + 43 0 R + 44 0 R + 45 0 R + 46 0 R + ] + /Type /Pages +>> +endobj + +%% Page 6 +%% Original object ID: 8 0 +17 0 obj +<< + /Contents 47 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 16 +%% Original object ID: 18 0 +18 0 obj +<< + /Contents 51 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 12 +%% Original object ID: 14 0 +19 0 obj +<< + /Contents 53 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 14 +%% Original object ID: 16 0 +20 0 obj +<< + /Contents 55 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 13 +%% Original object ID: 15 0 +21 0 obj +<< + /Contents 57 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 19 +%% Original object ID: 21 0 +22 0 obj +<< + /Contents 59 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 20 +%% Original object ID: 22 0 +23 0 obj +<< + /Contents 61 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 23 +%% Original object ID: 25 0 +24 0 obj +<< + /Contents 63 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 2 +%% Original object ID: 4 0 +25 0 obj +<< + /Contents 65 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 1 +%% Original object ID: 3 0 +26 0 obj +<< + /Contents 67 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 3 +%% Original object ID: 5 0 +27 0 obj +<< + /Contents 69 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 4 +%% Original object ID: 6 0 +28 0 obj +<< + /Contents 71 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 5 +%% Original object ID: 7 0 +29 0 obj +<< + /Contents 73 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 7 +%% Original object ID: 9 0 +30 0 obj +<< + /Contents 75 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 8 +%% Original object ID: 10 0 +31 0 obj +<< + /Contents 77 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 9 +%% Original object ID: 11 0 +32 0 obj +<< + /Contents 79 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 10 +%% Original object ID: 12 0 +33 0 obj +<< + /Contents 81 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 11 +%% Original object ID: 13 0 +34 0 obj +<< + /Contents 83 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 15 +%% Original object ID: 17 0 +35 0 obj +<< + /Contents 85 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 17 +%% Original object ID: 19 0 +36 0 obj +<< + /Contents 87 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 18 +%% Original object ID: 20 0 +37 0 obj +<< + /Contents 89 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 21 +%% Original object ID: 23 0 +38 0 obj +<< + /Contents 91 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 22 +%% Original object ID: 24 0 +39 0 obj +<< + /Contents 93 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 24 +%% Original object ID: 26 0 +40 0 obj +<< + /Contents 95 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 25 +%% Original object ID: 27 0 +41 0 obj +<< + /Contents 97 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 26 +%% Original object ID: 28 0 +42 0 obj +<< + /Contents 99 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 27 +%% Original object ID: 29 0 +43 0 obj +<< + /Contents 101 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 28 +%% Original object ID: 30 0 +44 0 obj +<< + /Contents 103 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 29 +%% Original object ID: 31 0 +45 0 obj +<< + /Contents 105 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Page 30 +%% Original object ID: 32 0 +46 0 obj +<< + /Contents 107 0 R + /MediaBox [ + 0 + 0 + 612 + 792 + ] + /Parent 16 0 R + /Resources << + /Font << + /F1 49 0 R + >> + /ProcSet 50 0 R + >> + /Type /Page +>> +endobj + +%% Contents for page 6 +%% Original object ID: 45 0 +47 0 obj +<< + /Length 48 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 5) Tj +ET +endstream +endobj + +48 0 obj +46 +endobj + +%% Original object ID: 35 0 +49 0 obj +<< + /BaseFont /Helvetica + /Encoding /WinAnsiEncoding + /Name /F1 + /Subtype /Type1 + /Type /Font +>> +endobj + +%% Original object ID: 36 0 +50 0 obj +[ + /PDF + /Text +] +endobj + +%% Contents for page 16 +%% Original object ID: 65 0 +51 0 obj +<< + /Length 52 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 15) Tj +ET +endstream +endobj + +52 0 obj +47 +endobj + +%% Contents for page 12 +%% Original object ID: 57 0 +53 0 obj +<< + /Length 54 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 11) Tj +ET +endstream +endobj + +54 0 obj +47 +endobj + +%% Contents for page 14 +%% Original object ID: 61 0 +55 0 obj +<< + /Length 56 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 13) Tj +ET +endstream +endobj + +56 0 obj +47 +endobj + +%% Contents for page 13 +%% Original object ID: 59 0 +57 0 obj +<< + /Length 58 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 12) Tj +ET +endstream +endobj + +58 0 obj +47 +endobj + +%% Contents for page 19 +%% Original object ID: 71 0 +59 0 obj +<< + /Length 60 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 18) Tj +ET +endstream +endobj + +60 0 obj +47 +endobj + +%% Contents for page 20 +%% Original object ID: 73 0 +61 0 obj +<< + /Length 62 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 19) Tj +ET +endstream +endobj + +62 0 obj +47 +endobj + +%% Contents for page 23 +%% Original object ID: 79 0 +63 0 obj +<< + /Length 64 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 22) Tj +ET +endstream +endobj + +64 0 obj +47 +endobj + +%% Contents for page 2 +%% Original object ID: 37 0 +65 0 obj +<< + /Length 66 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 1) Tj +ET +endstream +endobj + +66 0 obj +46 +endobj + +%% Contents for page 1 +%% Original object ID: 33 0 +67 0 obj +<< + /Length 68 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 0) Tj +ET +endstream +endobj + +68 0 obj +46 +endobj + +%% Contents for page 3 +%% Original object ID: 39 0 +69 0 obj +<< + /Length 70 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 2) Tj +ET +endstream +endobj + +70 0 obj +46 +endobj + +%% Contents for page 4 +%% Original object ID: 41 0 +71 0 obj +<< + /Length 72 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 3) Tj +ET +endstream +endobj + +72 0 obj +46 +endobj + +%% Contents for page 5 +%% Original object ID: 43 0 +73 0 obj +<< + /Length 74 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 4) Tj +ET +endstream +endobj + +74 0 obj +46 +endobj + +%% Contents for page 7 +%% Original object ID: 47 0 +75 0 obj +<< + /Length 76 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 6) Tj +ET +endstream +endobj + +76 0 obj +46 +endobj + +%% Contents for page 8 +%% Original object ID: 49 0 +77 0 obj +<< + /Length 78 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 7) Tj +ET +endstream +endobj + +78 0 obj +46 +endobj + +%% Contents for page 9 +%% Original object ID: 51 0 +79 0 obj +<< + /Length 80 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 8) Tj +ET +endstream +endobj + +80 0 obj +46 +endobj + +%% Contents for page 10 +%% Original object ID: 53 0 +81 0 obj +<< + /Length 82 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 9) Tj +ET +endstream +endobj + +82 0 obj +46 +endobj + +%% Contents for page 11 +%% Original object ID: 55 0 +83 0 obj +<< + /Length 84 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 10) Tj +ET +endstream +endobj + +84 0 obj +47 +endobj + +%% Contents for page 15 +%% Original object ID: 63 0 +85 0 obj +<< + /Length 86 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 14) Tj +ET +endstream +endobj + +86 0 obj +47 +endobj + +%% Contents for page 17 +%% Original object ID: 67 0 +87 0 obj +<< + /Length 88 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 16) Tj +ET +endstream +endobj + +88 0 obj +47 +endobj + +%% Contents for page 18 +%% Original object ID: 69 0 +89 0 obj +<< + /Length 90 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 17) Tj +ET +endstream +endobj + +90 0 obj +47 +endobj + +%% Contents for page 21 +%% Original object ID: 75 0 +91 0 obj +<< + /Length 92 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 20) Tj +ET +endstream +endobj + +92 0 obj +47 +endobj + +%% Contents for page 22 +%% Original object ID: 77 0 +93 0 obj +<< + /Length 94 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 21) Tj +ET +endstream +endobj + +94 0 obj +47 +endobj + +%% Contents for page 24 +%% Original object ID: 81 0 +95 0 obj +<< + /Length 96 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 23) Tj +ET +endstream +endobj + +96 0 obj +47 +endobj + +%% Contents for page 25 +%% Original object ID: 83 0 +97 0 obj +<< + /Length 98 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 24) Tj +ET +endstream +endobj + +98 0 obj +47 +endobj + +%% Contents for page 26 +%% Original object ID: 85 0 +99 0 obj +<< + /Length 100 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 25) Tj +ET +endstream +endobj + +100 0 obj +47 +endobj + +%% Contents for page 27 +%% Original object ID: 87 0 +101 0 obj +<< + /Length 102 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 26) Tj +ET +endstream +endobj + +102 0 obj +47 +endobj + +%% Contents for page 28 +%% Original object ID: 89 0 +103 0 obj +<< + /Length 104 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 27) Tj +ET +endstream +endobj + +104 0 obj +47 +endobj + +%% Contents for page 29 +%% Original object ID: 91 0 +105 0 obj +<< + /Length 106 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 28) Tj +ET +endstream +endobj + +106 0 obj +47 +endobj + +%% Contents for page 30 +%% Original object ID: 93 0 +107 0 obj +<< + /Length 108 0 R +>> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 29) Tj +ET +endstream +endobj + +108 0 obj +47 +endobj + +109 0 obj +<< + /Type /XRef + /Length 440 + /W [ 1 2 1 ] + /Root 1 0 R + /Size 110 + /ID [<31415926535897932384626433832795><31415926535897932384626433832795>] +>> +stream +4  +  xdP<(~hS>* !!"#$%&'v(b)O*<+),",,-L-. .T.//l/00d011|12,2s23!33464}45+556@6675778K889C99:[:; ;S;<>|>?/?x?@+@@AHA] +endstream +endobj + +startxref +16733 +%%EOF diff --git a/qpdf/qtest/qpdf/c-uncompressed-streams.pdf b/qpdf/qtest/qpdf/c-uncompressed-streams.pdf new file mode 100644 index 00000000..28b3aa0a --- /dev/null +++ b/qpdf/qtest/qpdf/c-uncompressed-streams.pdf @@ -0,0 +1,434 @@ +%PDF-1.5 +% +1 0 obj +<< /Outlines 3 0 R /PageLabels 15 0 R /PageMode /UseOutlines /Pages 16 0 R /Type /Catalog >> +endobj +2 0 obj +<< /Type /ObjStm /Length 2064 /N 13 /First 87 >> +stream +3 0 4 56 5 217 6 334 7 470 8 730 9 882 10 1053 11 1191 12 1329 13 1454 14 1594 15 1730 +<< /Count 6 /First 4 0 R /Last 5 0 R /Type /Outlines >> +<< /Count 4 /Dest [ 17 0 R /XYZ null null null ] /First 6 0 R /Last 7 0 R /Next 5 0 R /Parent 3 0 R /Title (Iss 1 -> 5: /XYZ null null null) /Type /Outline >> +<< /Dest [ 18 0 R /XYZ 66 756 3 ] /Parent 3 0 R /Prev 4 0 R /Title (Trepak 2 -> 15: /XYZ 66 756 3) /Type /Outline >> +<< /Count -3 /Dest [ 19 0 R /Fit ] /First 8 0 R /Last 9 0 R /Next 7 0 R /Parent 4 0 R /Title (Amanda 1.1 -> 11: /Fit) /Type /Outline >> +<< /Count 2 /Dest [ 20 0 R /FitH 792 ] /First 13 0 R /Last 14 0 R /Parent 4 0 R /Prev 6 0 R /Title /Type /Outline >> +<< /Count -2 /Dest [ 21 0 R /FitV 100 ] /First 10 0 R /Last 11 0 R /Next 9 0 R /Parent 6 0 R /Title (Isosicle 1.1.1 -> 12: /FitV 100) /Type /Outline >> +<< /Count 1 /Dest [ 21 0 R /XYZ null null null ] /First 12 0 R /Last 12 0 R /Parent 6 0 R /Prev 8 0 R /Title (Isosicle 1.1.2 -> 12: /XYZ null null null) /Type /Outline >> +<< /Dest [ 22 0 R /XYZ null null null ] /Next 11 0 R /Parent 8 0 R /Title (Isosicle 1.1.1.1 -> 18: /XYZ null null null) /Type /Outline >> +<< /Dest [ 23 0 R /XYZ null null null ] /Parent 8 0 R /Prev 10 0 R /Title (Isosicle 1.1.1.2 -> 19: /XYZ null null null) /Type /Outline >> +<< /Dest [ 24 0 R /XYZ null null null ] /Parent 9 0 R /Title (Isosicle 1.1.2.1 -> 22: /XYZ null null null) /Type /Outline >> +<< /Dest [ 25 0 R /FitR 66 714 180 770 ] /Next 14 0 R /Parent 7 0 R /Title (Trepsichord 1.2.1 -> 1: /FitR 66 714 180 770) /Type /Outline >> +<< /Dest [ 26 0 R /XYZ null null null ] /Parent 7 0 R /Prev 13 0 R /Title (Trepsicle 1.2.2 -> 0: /XYZ null null null) /Type /Outline >> +<< /Nums [ 0 << /P () >> 2 << /S /r /St 1 >> 7 << /P () >> 9 << /S /r /St 6 >> 11 << /P () >> 12 << /S /D /St 2 >> 15 << /S /D /St 6 >> 19 << /P () >> 20 << /S /D /St 12 >> 22 << /S /D /St 16059 >> 23 << /S /r /St 50 >> 29 << /S /r /St 54 >> ] >> +endstream +endobj +16 0 obj +<< /Count 30 /Kids [ 26 0 R 25 0 R 27 0 R 28 0 R 29 0 R 17 0 R 30 0 R 31 0 R 32 0 R 33 0 R 34 0 R 19 0 R 21 0 R 20 0 R 35 0 R 18 0 R 36 0 R 37 0 R 22 0 R 23 0 R 38 0 R 39 0 R 24 0 R 40 0 R 41 0 R 42 0 R 43 0 R 44 0 R 45 0 R 46 0 R ] /Type /Pages >> +endobj +17 0 obj +<< /Contents 47 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >> +endobj +18 0 obj +<< /Contents 50 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >> +endobj +19 0 obj +<< /Contents 51 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >> +endobj +20 0 obj +<< /Contents 52 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >> +endobj +21 0 obj +<< /Contents 53 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >> +endobj +22 0 obj +<< /Contents 54 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >> +endobj +23 0 obj +<< /Contents 55 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >> +endobj +24 0 obj +<< /Contents 56 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >> +endobj +25 0 obj +<< /Contents 57 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >> +endobj +26 0 obj +<< /Contents 58 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >> +endobj +27 0 obj +<< /Contents 59 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >> +endobj +28 0 obj +<< /Contents 60 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >> +endobj +29 0 obj +<< /Contents 61 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >> +endobj +30 0 obj +<< /Contents 62 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >> +endobj +31 0 obj +<< /Contents 63 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >> +endobj +32 0 obj +<< /Contents 64 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >> +endobj +33 0 obj +<< /Contents 65 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >> +endobj +34 0 obj +<< /Contents 66 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >> +endobj +35 0 obj +<< /Contents 67 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >> +endobj +36 0 obj +<< /Contents 68 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >> +endobj +37 0 obj +<< /Contents 69 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >> +endobj +38 0 obj +<< /Contents 70 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >> +endobj +39 0 obj +<< /Contents 71 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >> +endobj +40 0 obj +<< /Contents 72 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >> +endobj +41 0 obj +<< /Contents 73 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >> +endobj +42 0 obj +<< /Contents 74 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >> +endobj +43 0 obj +<< /Contents 75 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >> +endobj +44 0 obj +<< /Contents 76 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >> +endobj +45 0 obj +<< /Contents 77 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >> +endobj +46 0 obj +<< /Contents 78 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >> +endobj +47 0 obj +<< /Length 46 >> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 5) Tj +ET +endstream +endobj +48 0 obj +<< /BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font >> +endobj +49 0 obj +[ /PDF /Text ] +endobj +50 0 obj +<< /Length 47 >> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 15) Tj +ET +endstream +endobj +51 0 obj +<< /Length 47 >> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 11) Tj +ET +endstream +endobj +52 0 obj +<< /Length 47 >> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 13) Tj +ET +endstream +endobj +53 0 obj +<< /Length 47 >> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 12) Tj +ET +endstream +endobj +54 0 obj +<< /Length 47 >> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 18) Tj +ET +endstream +endobj +55 0 obj +<< /Length 47 >> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 19) Tj +ET +endstream +endobj +56 0 obj +<< /Length 47 >> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 22) Tj +ET +endstream +endobj +57 0 obj +<< /Length 46 >> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 1) Tj +ET +endstream +endobj +58 0 obj +<< /Length 46 >> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 0) Tj +ET +endstream +endobj +59 0 obj +<< /Length 46 >> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 2) Tj +ET +endstream +endobj +60 0 obj +<< /Length 46 >> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 3) Tj +ET +endstream +endobj +61 0 obj +<< /Length 46 >> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 4) Tj +ET +endstream +endobj +62 0 obj +<< /Length 46 >> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 6) Tj +ET +endstream +endobj +63 0 obj +<< /Length 46 >> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 7) Tj +ET +endstream +endobj +64 0 obj +<< /Length 46 >> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 8) Tj +ET +endstream +endobj +65 0 obj +<< /Length 46 >> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 9) Tj +ET +endstream +endobj +66 0 obj +<< /Length 47 >> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 10) Tj +ET +endstream +endobj +67 0 obj +<< /Length 47 >> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 14) Tj +ET +endstream +endobj +68 0 obj +<< /Length 47 >> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 16) Tj +ET +endstream +endobj +69 0 obj +<< /Length 47 >> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 17) Tj +ET +endstream +endobj +70 0 obj +<< /Length 47 >> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 20) Tj +ET +endstream +endobj +71 0 obj +<< /Length 47 >> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 21) Tj +ET +endstream +endobj +72 0 obj +<< /Length 47 >> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 23) Tj +ET +endstream +endobj +73 0 obj +<< /Length 47 >> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 24) Tj +ET +endstream +endobj +74 0 obj +<< /Length 47 >> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 25) Tj +ET +endstream +endobj +75 0 obj +<< /Length 47 >> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 26) Tj +ET +endstream +endobj +76 0 obj +<< /Length 47 >> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 27) Tj +ET +endstream +endobj +77 0 obj +<< /Length 47 >> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 28) Tj +ET +endstream +endobj +78 0 obj +<< /Length 47 >> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato 29) Tj +ET +endstream +endobj +79 0 obj +<< /Type /XRef /Length 320 /W [ 1 2 1 ] /Root 1 0 R /Size 80 /ID [<31415926535897932384626433832795><31415926535897932384626433832795>] >> +stream +{  +    +y   5  ] Ai%Mu 1Y= (K n/ O !!o!"/""#R#$$u$%7%%&Z&' +endstream +endobj +startxref +10012 +%%EOF diff --git a/qpdf/qtest/qpdf/c-write-damaged.out b/qpdf/qtest/qpdf/c-write-damaged.out new file mode 100644 index 00000000..783c651b --- /dev/null +++ b/qpdf/qtest/qpdf/c-write-damaged.out @@ -0,0 +1,3 @@ +warning: append-page-content-damaged.pdf: offset 0: file is damaged +warning: append-page-content-damaged.pdf: can't find startxref +warning: Attempting to reconstruct cross-reference table