aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--TODO5
-rw-r--r--qpdf/qtest/qpdf.test17
-rw-r--r--qpdf/qtest/qpdf/V4-aes-clearmeta.pdf417
-rw-r--r--qpdf/qtest/qpdf/V4-aes.pdf396
-rw-r--r--qpdf/qtest/qpdf/V4-clearmeta.pdfbin0 -> 15214 bytes
-rw-r--r--qpdf/qtest/qpdf/V4.pdfbin0 -> 14770 bytes
6 files changed, 830 insertions, 5 deletions
diff --git a/TODO b/TODO
index 81f05087..ee52b38f 100644
--- a/TODO
+++ b/TODO
@@ -43,11 +43,6 @@
(http://delphi.about.com). .. use at your own risk and for whatever
the purpose you want .. no support provided. Sample code provided."
- * R = 4, V = 4 encryption.
-
- - Update C API for R4 encryption
-
-
2.2
===
diff --git a/qpdf/qtest/qpdf.test b/qpdf/qtest/qpdf.test
index 3e425254..f1f2cc53 100644
--- a/qpdf/qtest/qpdf.test
+++ b/qpdf/qtest/qpdf.test
@@ -1078,6 +1078,23 @@ $td->runtest("make sure there is no xref stream",
{$td->REGEXP => "\\s*0\\s*", $td->EXIT_STATUS => 0},
$td->NORMALIZE_NEWLINES);
+# Look at some actual V4 files
+$n_tests += 8;
+foreach my $d (['--force-V4', 'V4'],
+ ['--cleartext-metadata', 'V4-clearmeta'],
+ ['--use-aes=y', 'V4-aes'],
+ ['--cleartext-metadata --use-aes=y', 'V4-aes-clearmeta'])
+{
+ my ($args, $out) = @$d;
+ $td->runtest("encrypt $args",
+ {$td->COMMAND => "qpdf --static-aes-iv --static-id" .
+ " --encrypt '' '' 128 $args -- enc-base.pdf a.pdf"},
+ {$td->STRING => "", $td->EXIT_STATUS => 0});
+ $td->runtest("check output",
+ {$td->FILE => "a.pdf"},
+ {$td->FILE => "$out.pdf"});
+}
+
show_ntests();
# ----------
$td->notify("--- Content Preservation Tests ---");
diff --git a/qpdf/qtest/qpdf/V4-aes-clearmeta.pdf b/qpdf/qtest/qpdf/V4-aes-clearmeta.pdf
new file mode 100644
index 00000000..61c57f5c
--- /dev/null
+++ b/qpdf/qtest/qpdf/V4-aes-clearmeta.pdf
@@ -0,0 +1,417 @@
+%PDF-1.6
+%
+1 0 obj
+<< /Metadata 3 0 R /Outlines 4 0 R /PageLabels << /Nums [ 0 << /P <0e1c2a38465462707e8c9aa8b6c4d2e00f262aedded08d15ff2f51f65bab002f> >> 2 << /S /r /St 1 >> 7 << /P <0e1c2a38465462707e8c9aa8b6c4d2e00f262aedded08d15ff2f51f65bab002f> >> 9 << /S /r /St 6 >> 11 << /P <0e1c2a38465462707e8c9aa8b6c4d2e00f262aedded08d15ff2f51f65bab002f> >> 12 << /S /D /St 2 >> 15 << /S /D /St 6 >> 19 << /P <0e1c2a38465462707e8c9aa8b6c4d2e00f262aedded08d15ff2f51f65bab002f> >> 20 << /S /D /St 12 >> 22 << /S /D /St 16059 >> 23 << /S /r /St 50 >> 29 << /S /r /St 54 >> ] >> /PageMode /UseOutlines /Pages 5 0 R /Type /Catalog >>
+endobj
+2 0 obj
+<< /CreationDate <0e1c2a38465462707e8c9aa8b6c4d2e00921a6a7b0c133fb2f989c3da27b2ac814b1c32543f37411fd736a4671a646b7> /ModDate <0e1c2a38465462707e8c9aa8b6c4d2e00921a6a7b0c133fb2f989c3da27b2ac814b1c32543f37411fd736a4671a646b7> >>
+endobj
+3 0 obj
+<< /Subtype /XML /Type /Metadata /Length 770 >>
+stream
+<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d' bytes='770'?>
+
+<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'
+ xmlns:iX='http://ns.adobe.com/iX/1.0/'>
+
+ <rdf:Description about=''
+ xmlns='http://ns.adobe.com/pdf/1.3/'
+ xmlns:pdf='http://ns.adobe.com/pdf/1.3/'>
+ <pdf:ModDate>2003-10-10T18:04:32-03:00</pdf:ModDate>
+ <pdf:CreationDate>2003-10-10T18:04:32-03:00</pdf:CreationDate>
+ </rdf:Description>
+
+ <rdf:Description about=''
+ xmlns='http://ns.adobe.com/xap/1.0/'
+ xmlns:xap='http://ns.adobe.com/xap/1.0/'>
+ <xap:ModifyDate>2003-10-10T18:04:32-03:00</xap:ModifyDate>
+ <xap:CreateDate>2003-10-10T18:04:32-03:00</xap:CreateDate>
+ <xap:MetadataDate>2003-10-10T18:04:32-03:00</xap:MetadataDate>
+ </rdf:Description>
+
+</rdf:RDF>
+<?xpacket end='r'?>endstream
+endobj
+4 0 obj
+<< /Count 6 /First 6 0 R /Last 7 0 R /Type /Outlines >>
+endobj
+5 0 obj
+<< /Count 30 /Kids [ 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R 13 0 R 14 0 R 15 0 R 16 0 R 17 0 R 18 0 R 19 0 R 20 0 R 21 0 R 22 0 R 23 0 R 24 0 R 25 0 R 26 0 R 27 0 R 28 0 R 29 0 R 30 0 R 31 0 R 32 0 R 33 0 R 34 0 R 35 0 R 36 0 R 37 0 R ] /Type /Pages >>
+endobj
+6 0 obj
+<< /Count 4 /Dest [ 13 0 R /XYZ null null null ] /First 38 0 R /Last 39 0 R /Next 7 0 R /Parent 4 0 R /Title <0e1c2a38465462707e8c9aa8b6c4d2e0b238a868ad6ebb3fd7d78dc22672a04960be7d3e8245bea76dbe68c23e5f03de54c759f400d5dcbfdac739c9d936cf84> /Type /Outline >>
+endobj
+7 0 obj
+<< /Dest [ 23 0 R /XYZ 66 756 3 ] /Parent 4 0 R /Prev 6 0 R /Title <0e1c2a38465462707e8c9aa8b6c4d2e0ca5f0294db4ad20336e77370836f9058f3c825cbf836d07b61ebbfaa698ec301> /Type /Outline >>
+endobj
+8 0 obj
+<< /Contents 40 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+9 0 obj
+<< /Contents 43 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+10 0 obj
+<< /Contents 44 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+11 0 obj
+<< /Contents 45 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+12 0 obj
+<< /Contents 46 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+13 0 obj
+<< /Contents 47 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+14 0 obj
+<< /Contents 48 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+15 0 obj
+<< /Contents 49 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+16 0 obj
+<< /Contents 50 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+17 0 obj
+<< /Contents 51 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+18 0 obj
+<< /Contents 52 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+19 0 obj
+<< /Contents 53 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+20 0 obj
+<< /Contents 54 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+21 0 obj
+<< /Contents 55 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+22 0 obj
+<< /Contents 56 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+23 0 obj
+<< /Contents 57 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+24 0 obj
+<< /Contents 58 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+25 0 obj
+<< /Contents 59 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+26 0 obj
+<< /Contents 60 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+27 0 obj
+<< /Contents 61 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+28 0 obj
+<< /Contents 62 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+29 0 obj
+<< /Contents 63 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+30 0 obj
+<< /Contents 64 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+31 0 obj
+<< /Contents 65 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+32 0 obj
+<< /Contents 66 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+33 0 obj
+<< /Contents 67 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+34 0 obj
+<< /Contents 68 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+35 0 obj
+<< /Contents 69 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+36 0 obj
+<< /Contents 70 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+37 0 obj
+<< /Contents 71 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+38 0 obj
+<< /Count -3 /Dest [ 19 0 R /Fit ] /First 72 0 R /Last 73 0 R /Next 39 0 R /Parent 6 0 R /Title <0e1c2a38465462707e8c9aa8b6c4d2e09ca6cded56239338246ee0f67eaedc7a5934c16efed6ab448a94b6aea5813c37> /Type /Outline >>
+endobj
+39 0 obj
+<< /Count 2 /Dest [ 21 0 R /FitH 792 ] /First 74 0 R /Last 75 0 R /Parent 6 0 R /Prev 38 0 R /Title <0e1c2a38465462707e8c9aa8b6c4d2e0a67a0507bb5990eb05f0e2d4963d3fe76e56d39f83b79788f140d31295a240f0> /Type /Outline >>
+endobj
+40 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~s^||m]I&}վ[Z^OrEv;c^+$*0מ{U=Qendstream
+endobj
+41 0 obj
+<< /BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font >>
+endobj
+42 0 obj
+[ /PDF /Text ]
+endobj
+43 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~ӝDo%@TռA5dϑt}dI>u_ͮendstream
+endobj
+44 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~࿐a~ ̼QO?®=(! Tm
+endobj
+45 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~s@X!>%+jNiXt-;ǖKcZאwabe164Jendstream
+endobj
+46 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~nygs
+An KR䧛QNu20N$}[
+yyuO<RN V_70>endstream
+endobj
+47 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~5 r/2r *Zܩ_iU6~38*x8i\t;Z@-`?endstream
+endobj
+48 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~lԉ,cZ)c|~RlA S=i*~2Q[<Bn7|eB9endstream
+endobj
+49 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~L3`g{nA pkBy8eZi= bZ
+Rendstream
+endobj
+50 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~l2Wp@sk.})3~+EQ"ib;LmxlG΍hlne:endstream
+endobj
+51 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~8::[lސ}bwTu״F9"Sw:o >] .iqtrendstream
+endobj
+52 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~྄5sIѵC
+endobj
+53 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~
+;P]:/3E-%Ʒ뫒3V9h,2;'Q;u=AIq endstream
+endobj
+54 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~}!Y6
+endobj
+55 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~+Xt4[맾M `trq->GYN $/zx1X7f
+endobj
+56 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~7'|+tFX5Po[FA 'ޝ}4=  >Mx_q·8endstream
+endobj
+57 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~I! @IxI
+endobj
+58 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~fyWl4.oIwއη?|#,o?0%w1e}ȻOendstream
+endobj
+59 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~0y\nR =9r_
+ᜄ2c|-n[zʉ2Z北&>s%1endstream
+endobj
+60 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~ `[~pl<^/L-t KEsSAfAWcԜ1qI1Snlendstream
+endobj
+61 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~kO :FE zht"sET=Sȣ$w[Fuk4Yendstream
+endobj
+62 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~B-kWxC)+<T$y T*[e/z}34sendstream
+endobj
+63 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~dl ͛֠~2ƴC'#09><@wD
+[V48 N_@>4endstream
+endobj
+64 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~Hmy5ev$D OԠM
+d:
+jdw:o-V*vd7CL\eb[.gdƓaEqendstream
+endobj
+65 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~l`(-U|w)T .[]wU7@]
+endobj
+66 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~ZrgcoXs9ڧ}kx]Gfi;ΠT<Fc$yA
+&5q!{endstream
+endobj
+67 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~lEX?-B_y!:ZF,{x\rΟO kcGrD&m?!€iZ|Iendstream
+endobj
+68 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~FJGPAu0k߫ymcRupHG4q޵`:/f>endstream
+endobj
+69 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~I#"@u6V啒ڍeU%%’CO Qgf֐tއzendstream
+endobj
+70 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~ɀG>.^Ap$0?Dei$ۦQZԂO(>܃Ib Hxendstream
+endobj
+71 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~9'^j$=p7oAR-"HIU@P[fI/Jendstream
+endobj
+72 0 obj
+<< /Count -2 /Dest [ 20 0 R /FitV 100 ] /First 76 0 R /Last 77 0 R /Next 73 0 R /Parent 38 0 R /Title <0e1c2a38465462707e8c9aa8b6c4d2e009f4dac5b02074cf4849a0d15459676b96276012437a65dfe861c2b7d3d43dd6> /Type /Outline >>
+endobj
+73 0 obj
+<< /Count 1 /Dest [ 20 0 R /XYZ null null null ] /First 78 0 R /Last 78 0 R /Parent 38 0 R /Prev 72 0 R /Title <0e1c2a38465462707e8c9aa8b6c4d2e0c8222a80899552e8f55dff601a31f50ffc49f7b882208cd32b38b84cfe08d06192fc7fe104a29384ae6afba06ffad9f6> /Type /Outline >>
+endobj
+74 0 obj
+<< /Dest [ 9 0 R /FitR 66 714 180 770 ] /Next 75 0 R /Parent 39 0 R /Title <0e1c2a38465462707e8c9aa8b6c4d2e0db2e1806fe2bc539dca1f3bd07df1c861300b43e8d6d1687249b4d7eb69b0cdfa03e717dfdaaff3f9da9e992e7ce7799> /Type /Outline >>
+endobj
+75 0 obj
+<< /Dest [ 8 0 R /XYZ null null null ] /Parent 39 0 R /Prev 74 0 R /Title <0e1c2a38465462707e8c9aa8b6c4d2e00ac2f6a290fab9e2e24e3fd1f20574bac271aecc390740758b0021043b15220d46b1ad3fad6590683df8d41be3cc2dac> /Type /Outline >>
+endobj
+76 0 obj
+<< /Dest [ 26 0 R /XYZ null null null ] /Next 77 0 R /Parent 72 0 R /Title <0e1c2a38465462707e8c9aa8b6c4d2e046551c4c9d5ec737ae978879e7bfa7738e87f54a8f1db0e78c3b34ae0a955661fac26995b1dd5f61f84227daff5e8a0a> /Type /Outline >>
+endobj
+77 0 obj
+<< /Dest [ 27 0 R /XYZ null null null ] /Parent 72 0 R /Prev 76 0 R /Title <0e1c2a38465462707e8c9aa8b6c4d2e0ed02472a72f56c1be52ac90f82aa7ccd10e56983f5f1d989945c2682605e030fdd5ab6e2c0e46505fe6148f3574fe4af> /Type /Outline >>
+endobj
+78 0 obj
+<< /Dest [ 30 0 R /XYZ null null null ] /Parent 73 0 R /Title <0e1c2a38465462707e8c9aa8b6c4d2e04e0071f73ffb55e63fee8c296c57a5116ad91676f573b1c2fe59aca102ad3421cc50bd84f88f518cd8bbd9962c7a59d0> /Type /Outline >>
+endobj
+79 0 obj
+<< /CF << /StdCF << /AuthEvent /DocOpen /CFM /AESV2 >> >> /EncryptMetadata false /Filter /Standard /Length 128 /O <36451bd39d753b7c1d10922c28e6665aa4f3353fb0348b536893e3b1db5c579b> /P -4 /R 4 /StmF /StdCF /StrF /StdCF /U <e4d8eb0d7c43579866926fec0eab59020122456a91bae5134273a6db134c87c4> /V 4 >>
+endobj
+xref
+0 80
+0000000000 65535 f
+0000000015 00000 n
+0000000634 00000 n
+0000000876 00000 n
+0000001726 00000 n
+0000001797 00000 n
+0000002059 00000 n
+0000002332 00000 n
+0000002531 00000 n
+0000002712 00000 n
+0000002893 00000 n
+0000003075 00000 n
+0000003257 00000 n
+0000003439 00000 n
+0000003621 00000 n
+0000003803 00000 n
+0000003985 00000 n
+0000004167 00000 n
+0000004349 00000 n
+0000004531 00000 n
+0000004713 00000 n
+0000004895 00000 n
+0000005077 00000 n
+0000005259 00000 n
+0000005441 00000 n
+0000005623 00000 n
+0000005805 00000 n
+0000005987 00000 n
+0000006169 00000 n
+0000006351 00000 n
+0000006533 00000 n
+0000006715 00000 n
+0000006897 00000 n
+0000007079 00000 n
+0000007261 00000 n
+0000007443 00000 n
+0000007625 00000 n
+0000007807 00000 n
+0000007989 00000 n
+0000008218 00000 n
+0000008451 00000 n
+0000008602 00000 n
+0000008710 00000 n
+0000008741 00000 n
+0000008892 00000 n
+0000009043 00000 n
+0000009194 00000 n
+0000009345 00000 n
+0000009496 00000 n
+0000009647 00000 n
+0000009798 00000 n
+0000009949 00000 n
+0000010100 00000 n
+0000010251 00000 n
+0000010402 00000 n
+0000010553 00000 n
+0000010704 00000 n
+0000010855 00000 n
+0000011006 00000 n
+0000011157 00000 n
+0000011308 00000 n
+0000011459 00000 n
+0000011610 00000 n
+0000011761 00000 n
+0000011912 00000 n
+0000012063 00000 n
+0000012214 00000 n
+0000012365 00000 n
+0000012516 00000 n
+0000012667 00000 n
+0000012818 00000 n
+0000012969 00000 n
+0000013120 00000 n
+0000013355 00000 n
+0000013631 00000 n
+0000013871 00000 n
+0000014110 00000 n
+0000014350 00000 n
+0000014590 00000 n
+0000014817 00000 n
+trailer << /Info 2 0 R /Root 1 0 R /Size 80 /ID [<66d36a30a97e0f16f39955c6221e0c2a><31415926535897932384626433832795>] /Encrypt 79 0 R >>
+startxref
+15129
+%%EOF
diff --git a/qpdf/qtest/qpdf/V4-aes.pdf b/qpdf/qtest/qpdf/V4-aes.pdf
new file mode 100644
index 00000000..a779a500
--- /dev/null
+++ b/qpdf/qtest/qpdf/V4-aes.pdf
@@ -0,0 +1,396 @@
+%PDF-1.6
+%
+1 0 obj
+<< /Metadata 3 0 R /Outlines 4 0 R /PageLabels << /Nums [ 0 << /P <0e1c2a38465462707e8c9aa8b6c4d2e04a74ca52697dc92e78001ad964146eca> >> 2 << /S /r /St 1 >> 7 << /P <0e1c2a38465462707e8c9aa8b6c4d2e04a74ca52697dc92e78001ad964146eca> >> 9 << /S /r /St 6 >> 11 << /P <0e1c2a38465462707e8c9aa8b6c4d2e04a74ca52697dc92e78001ad964146eca> >> 12 << /S /D /St 2 >> 15 << /S /D /St 6 >> 19 << /P <0e1c2a38465462707e8c9aa8b6c4d2e04a74ca52697dc92e78001ad964146eca> >> 20 << /S /D /St 12 >> 22 << /S /D /St 16059 >> 23 << /S /r /St 50 >> 29 << /S /r /St 54 >> ] >> /PageMode /UseOutlines /Pages 5 0 R /Type /Catalog >>
+endobj
+2 0 obj
+<< /CreationDate <0e1c2a38465462707e8c9aa8b6c4d2e0e9899cdac1e580de96cee46c62bbe494cccd4890015eb51e9ebe9e163bd4e9db> /ModDate <0e1c2a38465462707e8c9aa8b6c4d2e0e9899cdac1e580de96cee46c62bbe494cccd4890015eb51e9ebe9e163bd4e9db> >>
+endobj
+3 0 obj
+<< /Subtype /XML /Type /Metadata /Length 336 /Filter /FlateDecode >>
+stream
+*8FTbp~TMF5YL3#bd21 C+KNAvԓ{Qo+/;ӣnO離iD Q'5d)btZ,VNj#fPj'p0sqB> TA>U13\o.Aa`쒴v^t+թ{jCү!LOIrou]##"b8i| ăF4]djTT6'er}N6J 5hMe3vp.98Ux8Q  1ŠP7PpCyhܗm4_d#3ҜOendstream
+endobj
+4 0 obj
+<< /Count 6 /First 6 0 R /Last 7 0 R /Type /Outlines >>
+endobj
+5 0 obj
+<< /Count 30 /Kids [ 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R 13 0 R 14 0 R 15 0 R 16 0 R 17 0 R 18 0 R 19 0 R 20 0 R 21 0 R 22 0 R 23 0 R 24 0 R 25 0 R 26 0 R 27 0 R 28 0 R 29 0 R 30 0 R 31 0 R 32 0 R 33 0 R 34 0 R 35 0 R 36 0 R 37 0 R ] /Type /Pages >>
+endobj
+6 0 obj
+<< /Count 4 /Dest [ 13 0 R /XYZ null null null ] /First 38 0 R /Last 39 0 R /Next 7 0 R /Parent 4 0 R /Title <0e1c2a38465462707e8c9aa8b6c4d2e06136b49986838be63dd18d04525fd8bf58c0dc5fe6482939c2c7a9ca3c1ad893cd4ba6267c0a6bd4524eac5c97204097> /Type /Outline >>
+endobj
+7 0 obj
+<< /Dest [ 23 0 R /XYZ 66 756 3 ] /Parent 4 0 R /Prev 6 0 R /Title <0e1c2a38465462707e8c9aa8b6c4d2e01aab63c49ef4a1b1c1be421714d196a241c3db586c7b1a023de3fad2ee034155> /Type /Outline >>
+endobj
+8 0 obj
+<< /Contents 40 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+9 0 obj
+<< /Contents 43 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+10 0 obj
+<< /Contents 44 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+11 0 obj
+<< /Contents 45 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+12 0 obj
+<< /Contents 46 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+13 0 obj
+<< /Contents 47 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+14 0 obj
+<< /Contents 48 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+15 0 obj
+<< /Contents 49 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+16 0 obj
+<< /Contents 50 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+17 0 obj
+<< /Contents 51 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+18 0 obj
+<< /Contents 52 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+19 0 obj
+<< /Contents 53 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+20 0 obj
+<< /Contents 54 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+21 0 obj
+<< /Contents 55 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+22 0 obj
+<< /Contents 56 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+23 0 obj
+<< /Contents 57 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+24 0 obj
+<< /Contents 58 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+25 0 obj
+<< /Contents 59 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+26 0 obj
+<< /Contents 60 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+27 0 obj
+<< /Contents 61 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+28 0 obj
+<< /Contents 62 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+29 0 obj
+<< /Contents 63 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+30 0 obj
+<< /Contents 64 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+31 0 obj
+<< /Contents 65 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+32 0 obj
+<< /Contents 66 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+33 0 obj
+<< /Contents 67 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+34 0 obj
+<< /Contents 68 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+35 0 obj
+<< /Contents 69 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+36 0 obj
+<< /Contents 70 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+37 0 obj
+<< /Contents 71 0 R /CropBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ] /Parent 5 0 R /Resources << /Font << /F1 41 0 R >> /ProcSet 42 0 R >> /Rotate 0 /Type /Page >>
+endobj
+38 0 obj
+<< /Count -3 /Dest [ 19 0 R /Fit ] /First 72 0 R /Last 73 0 R /Next 39 0 R /Parent 6 0 R /Title <0e1c2a38465462707e8c9aa8b6c4d2e00d32ee8de70f8143ac3ffce5881e2d1e8551ed442e4deac827472d66d5d787e2> /Type /Outline >>
+endobj
+39 0 obj
+<< /Count 2 /Dest [ 21 0 R /FitH 792 ] /First 74 0 R /Last 75 0 R /Parent 6 0 R /Prev 38 0 R /Title <0e1c2a38465462707e8c9aa8b6c4d2e0137ae7685fcbcc14362f866f06ed55a84cb760275f947487ad009505412e6472> /Type /Outline >>
+endobj
+40 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~+Z^xlfN?"dq)Ȏwl՝0~#Wendstream
+endobj
+41 0 obj
+<< /BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font >>
+endobj
+42 0 obj
+[ /PDF /Text ]
+endobj
+43 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~#8I
+endobj
+44 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~iWbJ@[wQh
+ c
+endobj
+45 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~:+X~ ҘHo5L?7-s<e۳̽=uΧA=,5ŗZ=^rendstream
+endobj
+46 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~VX&^,t I
+{$KPWTL&k}=GU!+ռendstream
+endobj
+47 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~-ܾ&1*<{YY^IN4o?
+
+endobj
+48 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~+[%`P9Ǚ"ֲNݵ7@0ie XM~Z3y&YwVnendstream
+endobj
+49 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~*5xXXzuN%4m-oS}}(z/H1X2"vk3mpIendstream
+endobj
+50 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~_@<^NCk:Tqul! ^&ڑ D=lJ
+endobj
+51 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~ӥ:p&)B?ceF߄>t> #Ъ.S-DH3z:I}
+endobj
+52 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~+;t;-Ip'[{?{gvXB̤>VTڅV\H^C9,$
+ Jendstream
+endobj
+53 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~иD@y]촎T{JNin ׃F˘.Tȝb{Y=ѡwjendstream
+endobj
+54 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~sXP@aDtvFqryep(T8Sr Jɔ-++h=endstream
+endobj
+55 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~_nˮg{X+!
+ƀ؂~)/;8I-t3Nb?w݉_:??RVendstream
+endobj
+56 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~ૡqNP\ j'(n8tR|ǜWBæ? p >r9l:psendstream
+endobj
+57 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~U- DsA4?PfˮF@vx#nájJ͵endstream
+endobj
+58 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~dggjKu_!S7Ee$2ߘR-B2
+endobj
+59 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~םcRiG9p~CMt=RqIQPĴc.u? $endstream
+endobj
+60 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~4{IK ^ϑ ? SIh!
+cdfSz-F
+endstream
+endobj
+61 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~‘Uⵊ'qu9E_X2?o}P|ö$85vN1!mkNGkendstream
+endobj
+62 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~R_&N
+s9.ֱw-)2o{T] r'K:N, endstream
+endobj
+63 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~ڬX62VVs܇|~MgO_:'z)e %Rendstream
+endobj
+64 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~ ^XK,~yBˇeWP"Op{V'IrHl}x,D>endstream
+endobj
+65 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~-D)A3NKNj{3.X/WQ0 s;=uO 
+bШ}F)endstream
+endobj
+66 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~H}:z(Mph8, ƴ
+endobj
+67 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~b^Qp/h~.ʫ=!veotG*4oߣЩnu}7Dendstream
+endobj
+68 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~WK2LԗJ_c$)iB& M]MvfJ8:
+endobj
+69 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~p ^g d
+endobj
+70 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~Y 28.E&rͨu#)ns^`':yE.endstream
+endobj
+71 0 obj
+<< /Filter /FlateDecode /Length 80 >>
+stream
+*8FTbp~È9ĉaM³FxGx~s\՛J\V ʍ=BcEEoEendstream
+endobj
+72 0 obj
+<< /Count -2 /Dest [ 20 0 R /FitV 100 ] /First 76 0 R /Last 77 0 R /Next 73 0 R /Parent 38 0 R /Title <0e1c2a38465462707e8c9aa8b6c4d2e07c76f6fcecead465c803262ea791484b04c51c26159b59425907bcc42e1be548> /Type /Outline >>
+endobj
+73 0 obj
+<< /Count 1 /Dest [ 20 0 R /XYZ null null null ] /First 78 0 R /Last 78 0 R /Parent 38 0 R /Prev 72 0 R /Title <0e1c2a38465462707e8c9aa8b6c4d2e00ecc6b31415d55a1de00b0903aeaad8c731ac82890762caeaafc79be29e82ffb4691d98b5d4d3cb09a4b4039f2998101> /Type /Outline >>
+endobj
+74 0 obj
+<< /Dest [ 9 0 R /FitR 66 714 180 770 ] /Next 75 0 R /Parent 39 0 R /Title <0e1c2a38465462707e8c9aa8b6c4d2e039e9f7d0e37272d3b044d6d3b507bdb1998c19b21c89a1744fa9237eeece598e6eec369f7c3a8499c611dbd9c816132d> /Type /Outline >>
+endobj
+75 0 obj
+<< /Dest [ 8 0 R /XYZ null null null ] /Parent 39 0 R /Prev 74 0 R /Title <0e1c2a38465462707e8c9aa8b6c4d2e04d5f590b78857cf339220d36761f4a713eec4515820b51b71a1ef5c342350c34cc1cf169ba36ea4d5bfd2d091d9b2205> /Type /Outline >>
+endobj
+76 0 obj
+<< /Dest [ 26 0 R /XYZ null null null ] /Next 77 0 R /Parent 72 0 R /Title <0e1c2a38465462707e8c9aa8b6c4d2e0574eadbdf1cacfaa4d10c6db42bba8a7787fed0d573c3da76ade6b526ece9d5ef1d82645e02cd7e9927a49c6bbec87f1> /Type /Outline >>
+endobj
+77 0 obj
+<< /Dest [ 27 0 R /XYZ null null null ] /Parent 72 0 R /Prev 76 0 R /Title <0e1c2a38465462707e8c9aa8b6c4d2e0fa2fa2ce18f2e66b9047bb8c62213738cbb5f5467f1d81f21aa746aeefef585601e35e5915b8cf99a095f615d866824b> /Type /Outline >>
+endobj
+78 0 obj
+<< /Dest [ 30 0 R /XYZ null null null ] /Parent 73 0 R /Title <0e1c2a38465462707e8c9aa8b6c4d2e0a57e63f459f8a8428dfc859f799038f972379574e01ef823841a76dbefaa14665223960437217436968f6261cc32feb9> /Type /Outline >>
+endobj
+79 0 obj
+<< /CF << /StdCF << /AuthEvent /DocOpen /CFM /AESV2 >> >> /Filter /Standard /Length 128 /O <36451bd39d753b7c1d10922c28e6665aa4f3353fb0348b536893e3b1db5c579b> /P -4 /R 4 /StmF /StdCF /StrF /StdCF /U <32c27288b9ec6a4fab94e6188828595c0122456a91bae5134273a6db134c87c4> /V 4 >>
+endobj
+xref
+0 80
+0000000000 65535 f
+0000000015 00000 n
+0000000634 00000 n
+0000000876 00000 n
+0000001313 00000 n
+0000001384 00000 n
+0000001646 00000 n
+0000001919 00000 n
+0000002118 00000 n
+0000002299 00000 n
+0000002480 00000 n
+0000002662 00000 n
+0000002844 00000 n
+0000003026 00000 n
+0000003208 00000 n
+0000003390 00000 n
+0000003572 00000 n
+0000003754 00000 n
+0000003936 00000 n
+0000004118 00000 n
+0000004300 00000 n
+0000004482 00000 n
+0000004664 00000 n
+0000004846 00000 n
+0000005028 00000 n
+0000005210 00000 n
+0000005392 00000 n
+0000005574 00000 n
+0000005756 00000 n
+0000005938 00000 n
+0000006120 00000 n
+0000006302 00000 n
+0000006484 00000 n
+0000006666 00000 n
+0000006848 00000 n
+0000007030 00000 n
+0000007212 00000 n
+0000007394 00000 n
+0000007576 00000 n
+0000007805 00000 n
+0000008038 00000 n
+0000008189 00000 n
+0000008297 00000 n
+0000008328 00000 n
+0000008479 00000 n
+0000008630 00000 n
+0000008781 00000 n
+0000008932 00000 n
+0000009083 00000 n
+0000009234 00000 n
+0000009385 00000 n
+0000009536 00000 n
+0000009687 00000 n
+0000009838 00000 n
+0000009989 00000 n
+0000010140 00000 n
+0000010291 00000 n
+0000010442 00000 n
+0000010593 00000 n
+0000010744 00000 n
+0000010895 00000 n
+0000011046 00000 n
+0000011197 00000 n
+0000011348 00000 n
+0000011499 00000 n
+0000011650 00000 n
+0000011801 00000 n
+0000011952 00000 n
+0000012103 00000 n
+0000012254 00000 n
+0000012405 00000 n
+0000012556 00000 n
+0000012707 00000 n
+0000012942 00000 n
+0000013218 00000 n
+0000013458 00000 n
+0000013697 00000 n
+0000013937 00000 n
+0000014177 00000 n
+0000014404 00000 n
+trailer << /Info 2 0 R /Root 1 0 R /Size 80 /ID [<66d36a30a97e0f16f39955c6221e0c2a><31415926535897932384626433832795>] /Encrypt 79 0 R >>
+startxref
+14693
+%%EOF
diff --git a/qpdf/qtest/qpdf/V4-clearmeta.pdf b/qpdf/qtest/qpdf/V4-clearmeta.pdf
new file mode 100644
index 00000000..01325cc5
--- /dev/null
+++ b/qpdf/qtest/qpdf/V4-clearmeta.pdf
Binary files differ
diff --git a/qpdf/qtest/qpdf/V4.pdf b/qpdf/qtest/qpdf/V4.pdf
new file mode 100644
index 00000000..2848782e
--- /dev/null
+++ b/qpdf/qtest/qpdf/V4.pdf
Binary files differ