diff options
author | Jay Berkenbilt <ejb@ql.org> | 2010-08-05 23:06:49 +0200 |
---|---|---|
committer | Jay Berkenbilt <ejb@ql.org> | 2010-08-05 23:06:49 +0200 |
commit | 2dbc1006fb4a176c6ca7418f6e6e27251a4b8142 (patch) | |
tree | 5b07158569cb28723ab37e43c727bc1df518cb3c /qpdf | |
parent | c29244296258b543edb3b276179c7d7444f65089 (diff) | |
download | qpdf-2dbc1006fb4a176c6ca7418f6e6e27251a4b8142.tar.zst |
addPageContents
git-svn-id: svn+q:///qpdf/trunk@995 71b93d88-0707-0410-a8cf-f5a4172ac649
Diffstat (limited to 'qpdf')
-rw-r--r-- | qpdf/qpdf.testcov | 2 | ||||
-rw-r--r-- | qpdf/qtest/qpdf.test | 52 | ||||
-rw-r--r-- | qpdf/qtest/qpdf/add-contents.pdf | 54 | ||||
-rw-r--r-- | qpdf/test_driver.cc | 18 |
4 files changed, 106 insertions, 20 deletions
diff --git a/qpdf/qpdf.testcov b/qpdf/qpdf.testcov index 49b03c42..4a868227 100644 --- a/qpdf/qpdf.testcov +++ b/qpdf/qpdf.testcov @@ -181,3 +181,5 @@ QPDF_Stream provider length mismatch 0 QPDFObjectHandle newStream 0 QPDFObjectHandle newStream with data 0 QPDF_Stream pipe no stream data 0 +QPDFObjectHandle prepend page contents 0 +QPDFObjectHandle append page contents 0 diff --git a/qpdf/qtest/qpdf.test b/qpdf/qtest/qpdf.test index d40822cd..7d14722e 100644 --- a/qpdf/qtest/qpdf.test +++ b/qpdf/qtest/qpdf.test @@ -76,26 +76,8 @@ flush_tiff_cache(); show_ntests(); # ---------- -$td->notify("--- Miscellaneous Tests ---"); -$n_tests += 28; - -$td->runtest("qpdf version", - {$td->COMMAND => "qpdf --version"}, - {$td->REGEXP => "qpdf version \\S+\n.*", $td->EXIT_STATUS => 0}, - $td->NORMALIZE_NEWLINES); -$td->runtest("C API: qpdf version", - {$td->COMMAND => "qpdf-ctest --version"}, - {$td->REGEXP => "qpdf-ctest version \\S+\n", - $td->EXIT_STATUS => 0}, - $td->NORMALIZE_NEWLINES); - -foreach (my $i = 1; $i <= 3; ++$i) -{ - $td->runtest("misc tests", - {$td->COMMAND => "test_driver 5 misc-$i.pdf"}, - {$td->FILE => "misc-$i.out", $td->EXIT_STATUS => 0}, - $td->NORMALIZE_NEWLINES); -} +$td->notify("--- Stream Replacement Tests ---"); +$n_tests += 8; $td->runtest("replace stream data", {$td->COMMAND => "test_driver 7 qstream.pdf"}, @@ -118,6 +100,36 @@ $td->runtest("new streams", $td->runtest("new stream", {$td->FILE => "a.pdf"}, {$td->FILE => "new-streams.pdf"}); +$td->runtest("add page contents", + {$td->COMMAND => "test_driver 10 minimal.pdf"}, + {$td->STRING => "test 10 done\n", $td->EXIT_STATUS => 0}, + $td->NORMALIZE_NEWLINES); +$td->runtest("new stream", + {$td->FILE => "a.pdf"}, + {$td->FILE => "add-contents.pdf"}); + +show_ntests(); +# ---------- +$td->notify("--- Miscellaneous Tests ---"); +$n_tests += 22; + +$td->runtest("qpdf version", + {$td->COMMAND => "qpdf --version"}, + {$td->REGEXP => "qpdf version \\S+\n.*", $td->EXIT_STATUS => 0}, + $td->NORMALIZE_NEWLINES); +$td->runtest("C API: qpdf version", + {$td->COMMAND => "qpdf-ctest --version"}, + {$td->REGEXP => "qpdf-ctest version \\S+\n", + $td->EXIT_STATUS => 0}, + $td->NORMALIZE_NEWLINES); + +foreach (my $i = 1; $i <= 3; ++$i) +{ + $td->runtest("misc tests", + {$td->COMMAND => "test_driver 5 misc-$i.pdf"}, + {$td->FILE => "misc-$i.out", $td->EXIT_STATUS => 0}, + $td->NORMALIZE_NEWLINES); +} # Make sure we ignore decode parameters that we don't understand $td->runtest("unknown decode parameters", diff --git a/qpdf/qtest/qpdf/add-contents.pdf b/qpdf/qtest/qpdf/add-contents.pdf new file mode 100644 index 00000000..06b683ac --- /dev/null +++ b/qpdf/qtest/qpdf/add-contents.pdf @@ -0,0 +1,54 @@ +%PDF-1.3 +%¿÷¢þ +1 0 obj +<< /Pages 2 0 R /Type /Catalog >> +endobj +2 0 obj +<< /Count 1 /Kids [ 3 0 R ] /Type /Pages >> +endobj +3 0 obj +<< /Contents [ 4 0 R 5 0 R 6 0 R ] /MediaBox [ 0 0 612 792 ] /Parent 2 0 R /Resources << /Font << /F1 7 0 R >> /ProcSet 8 0 R >> /Type /Page >> +endobj +4 0 obj +<< /Length 37 >> +stream +BT /F1 12 Tf 72 620 Td (Baked) Tj ET +endstream +endobj +5 0 obj +<< /Length 44 >> +stream +BT + /F1 24 Tf + 72 720 Td + (Potato) Tj +ET +endstream +endobj +6 0 obj +<< /Length 38 >> +stream +BT /F1 18 Tf 72 520 Td (Mashed) Tj ET +endstream +endobj +7 0 obj +<< /BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font >> +endobj +8 0 obj +[ /PDF /Text ] +endobj +xref +0 9 +0000000000 65535 f +0000000015 00000 n +0000000064 00000 n +0000000123 00000 n +0000000282 00000 n +0000000368 00000 n +0000000461 00000 n +0000000548 00000 n +0000000655 00000 n +trailer << /Root 1 0 R /Size 9 /ID [<31415926535897932384626433832795><31415926535897932384626433832795>] >> +startxref +685 +%%EOF diff --git a/qpdf/test_driver.cc b/qpdf/test_driver.cc index 09458227..710f4c6e 100644 --- a/qpdf/test_driver.cc +++ b/qpdf/test_driver.cc @@ -427,6 +427,24 @@ void runtest(int n, char const* filename) w.setStreamDataMode(qpdf_s_preserve); w.write(); } + else if (n == 10) + { + PointerHolder<Buffer> b1 = new Buffer(37); + unsigned char* bp = b1.getPointer()->getBuffer(); + memcpy(bp, (char*)"BT /F1 12 Tf 72 620 Td (Baked) Tj ET\n", 37); + PointerHolder<Buffer> b2 = new Buffer(38); + bp = b2.getPointer()->getBuffer(); + memcpy(bp, (char*)"BT /F1 18 Tf 72 520 Td (Mashed) Tj ET\n", 38); + + std::vector<QPDFObjectHandle> pages = pdf.getAllPages(); + pages[0].addPageContents(QPDFObjectHandle::newStream(&pdf, b1), true); + pages[0].addPageContents(QPDFObjectHandle::newStream(&pdf, b2), false); + + QPDFWriter w(pdf, "a.pdf"); + w.setStaticID(true); + w.setStreamDataMode(qpdf_s_preserve); + w.write(); + } else { throw std::runtime_error(std::string("invalid test ") + |