Commit c227249ef157f8db4437f8a1993e25d4bc349a4d
1 parent
abb53ac3
Added test code for Tobias's changes
Showing
8 changed files
with
59 additions
and
33 deletions
ChangeLog
| 1 | +2012-07-04 Jay Berkenbilt <ejb@ql.org> | ||
| 2 | + | ||
| 3 | + * Accept changes from Tobias Hoffmann: add public method | ||
| 4 | + QPDF::pushInheritedAttributesToPage including warnings for | ||
| 5 | + non-inherited keys that may be discarded from /Pages by | ||
| 6 | + non-conformant PDF files when the /Pages tree is flattened. | ||
| 7 | + | ||
| 1 | 2012-06-27 Jay Berkenbilt <ejb@ql.org> | 8 | 2012-06-27 Jay Berkenbilt <ejb@ql.org> |
| 2 | 9 | ||
| 3 | * Add Pl_Concatenate pipeline for stream concatenation also | 10 | * Add Pl_Concatenate pipeline for stream concatenation also |
qpdf/qtest/qpdf.test
| @@ -149,7 +149,7 @@ $td->runtest("remove page we don't have", | @@ -149,7 +149,7 @@ $td->runtest("remove page we don't have", | ||
| 149 | $td->NORMALIZE_NEWLINES); | 149 | $td->NORMALIZE_NEWLINES); |
| 150 | # ---------- | 150 | # ---------- |
| 151 | $td->notify("--- Miscellaneous Tests ---"); | 151 | $td->notify("--- Miscellaneous Tests ---"); |
| 152 | -$n_tests += 40; | 152 | +$n_tests += 41; |
| 153 | 153 | ||
| 154 | $td->runtest("qpdf version", | 154 | $td->runtest("qpdf version", |
| 155 | {$td->COMMAND => "qpdf --version"}, | 155 | {$td->COMMAND => "qpdf --version"}, |
| @@ -354,6 +354,10 @@ $td->runtest("shallow copy a stream", | @@ -354,6 +354,10 @@ $td->runtest("shallow copy a stream", | ||
| 354 | {$td->COMMAND => "test_driver 21 shallow_array.pdf"}, | 354 | {$td->COMMAND => "test_driver 21 shallow_array.pdf"}, |
| 355 | {$td->FILE => "shallow_stream.out", $td->EXIT_STATUS => 2}, | 355 | {$td->FILE => "shallow_stream.out", $td->EXIT_STATUS => 2}, |
| 356 | $td->NORMALIZE_NEWLINES); | 356 | $td->NORMALIZE_NEWLINES); |
| 357 | +$td->runtest("warn for unknown key in Pages", | ||
| 358 | + {$td->COMMAND => "test_driver 23 lin-special.pdf"}, | ||
| 359 | + {$td->FILE => "pages-warning.out", $td->EXIT_STATUS => 0}, | ||
| 360 | + $td->NORMALIZE_NEWLINES); | ||
| 357 | 361 | ||
| 358 | show_ntests(); | 362 | show_ntests(); |
| 359 | # ---------- | 363 | # ---------- |
qpdf/qtest/qpdf/lin-special.disable.exp
No preview for this file type
qpdf/qtest/qpdf/lin-special.generate.exp
No preview for this file type
qpdf/qtest/qpdf/lin-special.pdf
| @@ -22,13 +22,16 @@ | @@ -22,13 +22,16 @@ | ||
| 22 | % +---- page 5 | 22 | % +---- page 5 |
| 23 | % | 23 | % |
| 24 | % Node (A) defines /MediaBox (direct) and /Resources (indirect) | 24 | % Node (A) defines /MediaBox (direct) and /Resources (indirect) |
| 25 | -% Node (B) overrides /MediaBox | 25 | +% Node (B) overrides /MediaBox and defines /Rotate |
| 26 | +% Node (B) defines /Quack, a non-standard key, which is not inherited | ||
| 26 | % Page 1 overrides /Resources | 27 | % Page 1 overrides /Resources |
| 27 | % Page 4 overrides /Resources | 28 | % Page 4 overrides /Resources |
| 28 | -% Page 5 overrides /MediaBox | 29 | +% Page 5 overrides /MediaBox and /Rotate |
| 29 | % | 30 | % |
| 30 | % Page 5 provides the case of two levels of shadowing on a resource. | 31 | % Page 5 provides the case of two levels of shadowing on a resource. |
| 31 | % | 32 | % |
| 33 | +% Node (B)'s overriding of /Rotate exercises inheriting a scalar. | ||
| 34 | +% | ||
| 32 | % The /MediaBox defined in node (B) is shared between pages 3 and 4 | 35 | % The /MediaBox defined in node (B) is shared between pages 3 and 4 |
| 33 | % but not page 1. The /MediaBox defined in node (A) is shared between | 36 | % but not page 1. The /MediaBox defined in node (A) is shared between |
| 34 | % pages 1 and 2 only. | 37 | % pages 1 and 2 only. |
| @@ -58,6 +61,7 @@ endobj | @@ -58,6 +61,7 @@ endobj | ||
| 58 | >> | 61 | >> |
| 59 | endobj | 62 | endobj |
| 60 | 63 | ||
| 64 | +% Node (A) | ||
| 61 | 3 0 obj | 65 | 3 0 obj |
| 62 | << | 66 | << |
| 63 | /Count 5 | 67 | /Count 5 |
| @@ -73,7 +77,6 @@ endobj | @@ -73,7 +77,6 @@ endobj | ||
| 73 | 792 | 77 | 792 |
| 74 | ] | 78 | ] |
| 75 | /Resources 7 0 R | 79 | /Resources 7 0 R |
| 76 | - /Quack 16059 | ||
| 77 | /Type /Pages | 80 | /Type /Pages |
| 78 | >> | 81 | >> |
| 79 | endobj | 82 | endobj |
| @@ -97,6 +100,7 @@ endobj | @@ -97,6 +100,7 @@ endobj | ||
| 97 | >> | 100 | >> |
| 98 | endobj | 101 | endobj |
| 99 | 102 | ||
| 103 | +% Node (B) | ||
| 100 | 6 0 obj | 104 | 6 0 obj |
| 101 | << | 105 | << |
| 102 | /Count 3 | 106 | /Count 3 |
| @@ -112,6 +116,8 @@ endobj | @@ -112,6 +116,8 @@ endobj | ||
| 112 | 396 | 116 | 396 |
| 113 | ] | 117 | ] |
| 114 | /Parent 3 0 R | 118 | /Parent 3 0 R |
| 119 | + /Rotate 0 | ||
| 120 | + /Quack 16059 | ||
| 115 | /Type /Pages | 121 | /Type /Pages |
| 116 | >> | 122 | >> |
| 117 | endobj | 123 | endobj |
| @@ -205,6 +211,7 @@ endobj | @@ -205,6 +211,7 @@ endobj | ||
| 205 | 306 | 211 | 306 |
| 206 | 396 | 212 | 396 |
| 207 | ] | 213 | ] |
| 214 | + /Rotate 180 | ||
| 208 | /Parent 6 0 R | 215 | /Parent 6 0 R |
| 209 | /Type /Page | 216 | /Type /Page |
| 210 | >> | 217 | >> |
| @@ -316,39 +323,39 @@ endobj | @@ -316,39 +323,39 @@ endobj | ||
| 316 | xref | 323 | xref |
| 317 | 0 29 | 324 | 0 29 |
| 318 | 0000000000 65535 f | 325 | 0000000000 65535 f |
| 319 | -0000001161 00000 n | ||
| 320 | -0000001244 00000 n | ||
| 321 | -0000001319 00000 n | ||
| 322 | -0000001501 00000 n | ||
| 323 | -0000001601 00000 n | ||
| 324 | -0000001672 00000 n | ||
| 325 | -0000001829 00000 n | ||
| 326 | -0000001923 00000 n | ||
| 327 | -0000002024 00000 n | ||
| 328 | -0000002043 00000 n | ||
| 329 | -0000002138 00000 n | ||
| 330 | -0000002241 00000 n | ||
| 331 | -0000002271 00000 n | ||
| 332 | -0000002366 00000 n | ||
| 333 | -0000002526 00000 n | ||
| 334 | -0000002644 00000 n | ||
| 335 | -0000002763 00000 n | ||
| 336 | -0000002799 00000 n | ||
| 337 | -0000002947 00000 n | ||
| 338 | -0000003050 00000 n | ||
| 339 | -0000003093 00000 n | ||
| 340 | -0000003196 00000 n | ||
| 341 | -0000003216 00000 n | ||
| 342 | -0000003359 00000 n | ||
| 343 | -0000003462 00000 n | ||
| 344 | -0000003482 00000 n | ||
| 345 | -0000003504 00000 n | ||
| 346 | -0000003526 00000 n | 326 | +0000001331 00000 n |
| 327 | +0000001414 00000 n | ||
| 328 | +0000001500 00000 n | ||
| 329 | +0000001667 00000 n | ||
| 330 | +0000001767 00000 n | ||
| 331 | +0000001849 00000 n | ||
| 332 | +0000002033 00000 n | ||
| 333 | +0000002127 00000 n | ||
| 334 | +0000002228 00000 n | ||
| 335 | +0000002247 00000 n | ||
| 336 | +0000002342 00000 n | ||
| 337 | +0000002445 00000 n | ||
| 338 | +0000002475 00000 n | ||
| 339 | +0000002570 00000 n | ||
| 340 | +0000002730 00000 n | ||
| 341 | +0000002862 00000 n | ||
| 342 | +0000002981 00000 n | ||
| 343 | +0000003017 00000 n | ||
| 344 | +0000003165 00000 n | ||
| 345 | +0000003268 00000 n | ||
| 346 | +0000003311 00000 n | ||
| 347 | +0000003414 00000 n | ||
| 348 | +0000003434 00000 n | ||
| 349 | +0000003577 00000 n | ||
| 350 | +0000003680 00000 n | ||
| 351 | +0000003700 00000 n | ||
| 352 | +0000003722 00000 n | ||
| 353 | +0000003744 00000 n | ||
| 347 | trailer << | 354 | trailer << |
| 348 | /Root 1 0 R | 355 | /Root 1 0 R |
| 349 | /Size 29 | 356 | /Size 29 |
| 350 | /ID [<ce9551b56c5a7e3b5b0ba6fa0d281296><a74aa55a69070b600e39f9ed1ed6c4df>] | 357 | /ID [<ce9551b56c5a7e3b5b0ba6fa0d281296><a74aa55a69070b600e39f9ed1ed6c4df>] |
| 351 | >> | 358 | >> |
| 352 | startxref | 359 | startxref |
| 353 | -3545 | 360 | +3763 |
| 354 | %%EOF | 361 | %%EOF |
qpdf/qtest/qpdf/lin-special.preserve.exp
No preview for this file type
qpdf/qtest/qpdf/pages-warning.out
0 → 100644
qpdf/test_driver.cc
| @@ -832,6 +832,12 @@ void runtest(int n, char const* filename) | @@ -832,6 +832,12 @@ void runtest(int n, char const* filename) | ||
| 832 | pdf.removePage(page); | 832 | pdf.removePage(page); |
| 833 | std::cout << "you can't see this" << std::endl; | 833 | std::cout << "you can't see this" << std::endl; |
| 834 | } | 834 | } |
| 835 | + else if (n == 23) | ||
| 836 | + { | ||
| 837 | + // Try to remove a page we don't have | ||
| 838 | + std::vector<QPDFObjectHandle> const& pages = pdf.getAllPages(); | ||
| 839 | + pdf.removePage(pages.back()); | ||
| 840 | + } | ||
| 835 | else | 841 | else |
| 836 | { | 842 | { |
| 837 | throw std::runtime_error(std::string("invalid test ") + | 843 | throw std::runtime_error(std::string("invalid test ") + |