From c227249ef157f8db4437f8a1993e25d4bc349a4d Mon Sep 17 00:00:00 2001 From: Jay Berkenbilt Date: Wed, 4 Jul 2012 23:19:32 -0400 Subject: [PATCH] Added test code for Tobias's changes --- ChangeLog | 7 +++ qpdf/qtest/qpdf.test | 6 +- qpdf/qtest/qpdf/lin-special.disable.exp | Bin 3198 -> 3178 bytes qpdf/qtest/qpdf/lin-special.generate.exp | Bin 2832 -> 2808 bytes qpdf/qtest/qpdf/lin-special.pdf | 71 +++++++++++++---------- qpdf/qtest/qpdf/lin-special.preserve.exp | Bin 3198 -> 3178 bytes qpdf/qtest/qpdf/pages-warning.out | 2 + qpdf/test_driver.cc | 6 ++ 8 files changed, 59 insertions(+), 33 deletions(-) create mode 100644 qpdf/qtest/qpdf/pages-warning.out diff --git a/ChangeLog b/ChangeLog index 08ff6209..230a49a9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2012-07-04 Jay Berkenbilt + + * Accept changes from Tobias Hoffmann: add public method + QPDF::pushInheritedAttributesToPage including warnings for + non-inherited keys that may be discarded from /Pages by + non-conformant PDF files when the /Pages tree is flattened. + 2012-06-27 Jay Berkenbilt * Add Pl_Concatenate pipeline for stream concatenation also diff --git a/qpdf/qtest/qpdf.test b/qpdf/qtest/qpdf.test index fa26597d..9a7f7b99 100644 --- a/qpdf/qtest/qpdf.test +++ b/qpdf/qtest/qpdf.test @@ -149,7 +149,7 @@ $td->runtest("remove page we don't have", $td->NORMALIZE_NEWLINES); # ---------- $td->notify("--- Miscellaneous Tests ---"); -$n_tests += 40; +$n_tests += 41; $td->runtest("qpdf version", {$td->COMMAND => "qpdf --version"}, @@ -354,6 +354,10 @@ $td->runtest("shallow copy a stream", {$td->COMMAND => "test_driver 21 shallow_array.pdf"}, {$td->FILE => "shallow_stream.out", $td->EXIT_STATUS => 2}, $td->NORMALIZE_NEWLINES); +$td->runtest("warn for unknown key in Pages", + {$td->COMMAND => "test_driver 23 lin-special.pdf"}, + {$td->FILE => "pages-warning.out", $td->EXIT_STATUS => 0}, + $td->NORMALIZE_NEWLINES); show_ntests(); # ---------- diff --git a/qpdf/qtest/qpdf/lin-special.disable.exp b/qpdf/qtest/qpdf/lin-special.disable.exp index fbafd01fed50602ff24d203c0249a8c951a801a1..852c00831f388cf8d4eb0f2f87d6b3fc9849d7dc 100644 GIT binary patch delta 598 zcmew-@k(NX9;5k0eHlIzLj`?51ycq65CtQ1#VROw2IVnPLf4b1Z>s zVPc74o~1d&j(Q|Zj0`YC+Q`rnBlL}o4KWNfGPb~Qw2_Ggre0Gc6m`-de;S!uVnn-< KndRia+>HS43XyvN delta 593 zcmaDQ@lRrc9;4+%eHlJe69s)g1ycq65CtQ1(}|G}gDg!I3_w63Pk{@}FfcSQG{Y1# zH^&e&v^2yJGcq!o+{0+hXgc`-;~)F!JTg263`xeu8yF&Wc$wrSD%6U&RxaJWth!=} zbwi~Cryd(y-%5vByd9PYXFZX;F+IJ;G~vT{Rw*uqZ?AcRC;w&&;0`QJOwLv?G&3-@ z-0aDGh7nm{aw3PwWOdeSSj0pp>#=P`5r4>LIk}NTbh9P97B)jfH&5d@%Q(4!E1@13 zO6Xx?Y=#*oCKi}sVrGaLCg#RQ80J}6V5l=PFo3A5M~Vz1Lqh{}%|=GXn3|1EF)T4M hF*L@|Yifk4*VGh6oixbvMrKABzB4j6ocxlz5deYYjPn2h diff --git a/qpdf/qtest/qpdf/lin-special.generate.exp b/qpdf/qtest/qpdf/lin-special.generate.exp index c810f02e6a13ea492cae65c37b0e1a902db5c0f3..c07bab2cdd1df33bf6c9a209a547569a042a5174 100644 GIT binary patch delta 601 zcmbOr_Cs`no{oWqg1(1Bw1T;zp@N}_nL@0BzQ2N@se-;MkZWP4pzo&uX^!v6x!5L#HM!a{z(NxHn${B29Il#d6`}XSSZ-paTS*or6%Tb zRm@3FNJwB>^jKliLq2A8W}b!{K0Id}#Jrgg&tzNXDj$|%`C}KC!wiSS1wnpc6HEj) zH*Gy(T%gsxHccQQfq_9@fv0k^8*{+q#mtA9%#A01;1r)+&mvoY+v~7_#J>B%HTnjd zmiX>Is9{mc(KI{n!OK!N@hYVufdw)jr)=_95v#FMHfs$)(@fZp#P$ahH}epT`Q+gUdWm|nV(&KvJ=|@si4&2{L-T2)M5oABLxG6AO-!P{F20y zR0V^{^6aN4e`mMgKoSt2?83262B#iF3!pB}3yh|~px-7{%;Uq;bJC${q0o_44V%>x Xy9`elGcdH~v0R_b&tyIMH7gpKIx|nh4IiE}4r1QShdbGhEn(o-WseVMYn9Oz3(Q$NIb6-~ElTCv8y6v(_ z9qhqdZ#W#A^W})i{#A*$H$D5@sxa+n{k&VjOaFzvIw1SxW#D!lsU)%QZyWdLJnOrE z*zuR8jqdrGmvoXS|3?j0_8f+pTTS*ei7S zMCKe_b-#3B@cs2R+hq6Ls6O1dz1Z#L;=|v> endobj +% Node (A) 3 0 obj << /Count 5 @@ -73,7 +77,6 @@ endobj 792 ] /Resources 7 0 R - /Quack 16059 /Type /Pages >> endobj @@ -97,6 +100,7 @@ endobj >> endobj +% Node (B) 6 0 obj << /Count 3 @@ -112,6 +116,8 @@ endobj 396 ] /Parent 3 0 R + /Rotate 0 + /Quack 16059 /Type /Pages >> endobj @@ -205,6 +211,7 @@ endobj 306 396 ] + /Rotate 180 /Parent 6 0 R /Type /Page >> @@ -316,39 +323,39 @@ endobj xref 0 29 0000000000 65535 f -0000001161 00000 n -0000001244 00000 n -0000001319 00000 n -0000001501 00000 n -0000001601 00000 n -0000001672 00000 n -0000001829 00000 n -0000001923 00000 n -0000002024 00000 n -0000002043 00000 n -0000002138 00000 n -0000002241 00000 n -0000002271 00000 n -0000002366 00000 n -0000002526 00000 n -0000002644 00000 n -0000002763 00000 n -0000002799 00000 n -0000002947 00000 n -0000003050 00000 n -0000003093 00000 n -0000003196 00000 n -0000003216 00000 n -0000003359 00000 n -0000003462 00000 n -0000003482 00000 n -0000003504 00000 n -0000003526 00000 n +0000001331 00000 n +0000001414 00000 n +0000001500 00000 n +0000001667 00000 n +0000001767 00000 n +0000001849 00000 n +0000002033 00000 n +0000002127 00000 n +0000002228 00000 n +0000002247 00000 n +0000002342 00000 n +0000002445 00000 n +0000002475 00000 n +0000002570 00000 n +0000002730 00000 n +0000002862 00000 n +0000002981 00000 n +0000003017 00000 n +0000003165 00000 n +0000003268 00000 n +0000003311 00000 n +0000003414 00000 n +0000003434 00000 n +0000003577 00000 n +0000003680 00000 n +0000003700 00000 n +0000003722 00000 n +0000003744 00000 n trailer << /Root 1 0 R /Size 29 /ID [] >> startxref -3545 +3763 %%EOF diff --git a/qpdf/qtest/qpdf/lin-special.preserve.exp b/qpdf/qtest/qpdf/lin-special.preserve.exp index fbafd01fed50602ff24d203c0249a8c951a801a1..852c00831f388cf8d4eb0f2f87d6b3fc9849d7dc 100644 GIT binary patch delta 598 zcmew-@k(NX9;5k0eHlIzLj`?51ycq65CtQ1#VROw2IVnPLf4b1Z>s zVPc74o~1d&j(Q|Zj0`YC+Q`rnBlL}o4KWNfGPb~Qw2_Ggre0Gc6m`-de;S!uVnn-< KndRia+>HS43XyvN delta 593 zcmaDQ@lRrc9;4+%eHlJe69s)g1ycq65CtQ1(}|G}gDg!I3_w63Pk{@}FfcSQG{Y1# zH^&e&v^2yJGcq!o+{0+hXgc`-;~)F!JTg263`xeu8yF&Wc$wrSD%6U&RxaJWth!=} zbwi~Cryd(y-%5vByd9PYXFZX;F+IJ;G~vT{Rw*uqZ?AcRC;w&&;0`QJOwLv?G&3-@ z-0aDGh7nm{aw3PwWOdeSSj0pp>#=P`5r4>LIk}NTbh9P97B)jfH&5d@%Q(4!E1@13 zO6Xx?Y=#*oCKi}sVrGaLCg#RQ80J}6V5l=PFo3A5M~Vz1Lqh{}%|=GXn3|1EF)T4M hF*L@|Yifk4*VGh6oixbvMrKABzB4j6ocxlz5deYYjPn2h diff --git a/qpdf/qtest/qpdf/pages-warning.out b/qpdf/qtest/qpdf/pages-warning.out new file mode 100644 index 00000000..219390ad --- /dev/null +++ b/qpdf/qtest/qpdf/pages-warning.out @@ -0,0 +1,2 @@ +WARNING: lin-special.pdf (Pages object: object 6 0): Unknown key /Quack in /Pages object is being discarded as a result of flattening the /Pages tree +test 23 done diff --git a/qpdf/test_driver.cc b/qpdf/test_driver.cc index e9c63d8f..bbf9a414 100644 --- a/qpdf/test_driver.cc +++ b/qpdf/test_driver.cc @@ -832,6 +832,12 @@ void runtest(int n, char const* filename) pdf.removePage(page); std::cout << "you can't see this" << std::endl; } + else if (n == 23) + { + // Try to remove a page we don't have + std::vector const& pages = pdf.getAllPages(); + pdf.removePage(pages.back()); + } else { throw std::runtime_error(std::string("invalid test ") +