aboutsummaryrefslogtreecommitdiffstats
path: root/qpdf/qtest
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2017-08-05 16:01:34 +0200
committerJay Berkenbilt <ejb@ql.org>2017-08-05 16:22:33 +0200
commit49825e5cb67e589060de435f59203fa2f29b0476 (patch)
tree9392de891e2ecca4d2b495c6c937d51b17deade9 /qpdf/qtest
parent8fe261d8b4c26c0cb9f863ec3850c4b82755a42f (diff)
downloadqpdf-49825e5cb67e589060de435f59203fa2f29b0476.tar.zst
Add --split-pages option (fixes #30)
Diffstat (limited to 'qpdf/qtest')
-rw-r--r--qpdf/qtest/qpdf.test56
-rw-r--r--qpdf/qtest/qpdf/01_single-exp.zdfbin0 -> 755 bytes
-rw-r--r--qpdf/qtest/qpdf/02_single-exp.zdfbin0 -> 755 bytes
-rw-r--r--qpdf/qtest/qpdf/03_single-exp.zdfbin0 -> 755 bytes
-rw-r--r--qpdf/qtest/qpdf/04_single-exp.zdfbin0 -> 755 bytes
-rw-r--r--qpdf/qtest/qpdf/05_single-exp.zdfbin0 -> 755 bytes
-rw-r--r--qpdf/qtest/qpdf/06_single-exp.zdfbin0 -> 755 bytes
-rw-r--r--qpdf/qtest/qpdf/07_single-exp.zdfbin0 -> 755 bytes
-rw-r--r--qpdf/qtest/qpdf/08_single-exp.zdfbin0 -> 755 bytes
-rw-r--r--qpdf/qtest/qpdf/09_single-exp.zdfbin0 -> 755 bytes
-rw-r--r--qpdf/qtest/qpdf/10_single-exp.zdfbin0 -> 756 bytes
-rw-r--r--qpdf/qtest/qpdf/11-pages.pdfbin0 -> 4128 bytes
-rw-r--r--qpdf/qtest/qpdf/11_single-exp.zdfbin0 -> 756 bytes
-rw-r--r--qpdf/qtest/qpdf/a-01-single-exp.zdf35
-rw-r--r--qpdf/qtest/qpdf/a-02-single-exp.zdf35
-rw-r--r--qpdf/qtest/qpdf/a-03-single-exp.zdf35
-rw-r--r--qpdf/qtest/qpdf/a-04-single-exp.zdf35
-rw-r--r--qpdf/qtest/qpdf/a-05-single-exp.zdf35
-rw-r--r--qpdf/qtest/qpdf/a-06-single-exp.zdf35
-rw-r--r--qpdf/qtest/qpdf/a-07-single-exp.zdf35
-rw-r--r--qpdf/qtest/qpdf/a-08-single-exp.zdf35
-rw-r--r--qpdf/qtest/qpdf/a-09-single-exp.zdf35
-rw-r--r--qpdf/qtest/qpdf/a-10-single-exp.zdf35
-rw-r--r--qpdf/qtest/qpdf/a-11-single-exp.zdf35
-rw-r--r--qpdf/qtest/qpdf/single-exp-01.Pdfbin0 -> 755 bytes
-rw-r--r--qpdf/qtest/qpdf/single-exp-02.Pdfbin0 -> 755 bytes
-rw-r--r--qpdf/qtest/qpdf/single-exp-03.Pdfbin0 -> 755 bytes
-rw-r--r--qpdf/qtest/qpdf/single-exp-04.Pdfbin0 -> 755 bytes
-rw-r--r--qpdf/qtest/qpdf/single-exp-05.Pdfbin0 -> 755 bytes
-rw-r--r--qpdf/qtest/qpdf/single-exp-06.Pdfbin0 -> 755 bytes
-rw-r--r--qpdf/qtest/qpdf/single-exp-07.Pdfbin0 -> 755 bytes
-rw-r--r--qpdf/qtest/qpdf/single-exp-08.Pdfbin0 -> 755 bytes
-rw-r--r--qpdf/qtest/qpdf/single-exp-09.Pdfbin0 -> 755 bytes
-rw-r--r--qpdf/qtest/qpdf/single-exp-1bin0 -> 755 bytes
-rw-r--r--qpdf/qtest/qpdf/single-exp-10.Pdfbin0 -> 756 bytes
-rw-r--r--qpdf/qtest/qpdf/single-exp-11.Pdfbin0 -> 756 bytes
-rw-r--r--qpdf/qtest/qpdf/single-exp-2bin0 -> 755 bytes
-rw-r--r--qpdf/qtest/qpdf/single-exp-3bin0 -> 755 bytes
-rw-r--r--qpdf/qtest/qpdf/single-exp-4bin0 -> 799 bytes
-rw-r--r--qpdf/qtest/qpdf/single-exp.zdf_0190
-rw-r--r--qpdf/qtest/qpdf/single-exp.zdf_0290
-rw-r--r--qpdf/qtest/qpdf/single-exp.zdf_0390
-rw-r--r--qpdf/qtest/qpdf/single-exp.zdf_0490
-rw-r--r--qpdf/qtest/qpdf/single-exp.zdf_0590
-rw-r--r--qpdf/qtest/qpdf/single-exp.zdf_0690
-rw-r--r--qpdf/qtest/qpdf/single-exp.zdf_0790
-rw-r--r--qpdf/qtest/qpdf/single-exp.zdf_0890
-rw-r--r--qpdf/qtest/qpdf/single-exp.zdf_0990
-rw-r--r--qpdf/qtest/qpdf/single-exp.zdf_1090
-rw-r--r--qpdf/qtest/qpdf/single-exp.zdf_1190
-rw-r--r--qpdf/qtest/qpdf/single-pages-stdout.out6
51 files changed, 1437 insertions, 0 deletions
diff --git a/qpdf/qtest/qpdf.test b/qpdf/qtest/qpdf.test
index 0b75559c..25b5b160 100644
--- a/qpdf/qtest/qpdf.test
+++ b/qpdf/qtest/qpdf.test
@@ -664,6 +664,61 @@ $td->runtest("combine show and --pages",
show_ntests();
# ----------
+$td->notify("--- Single Page ---");
+# sp = single-pages
+my @sp_cases = (
+ [11, '%d at beginning', '', '%d_single-out.zdf'],
+ [11, '%d at end', '--qdf', 'single-out.zdf_%d'],
+ [11, '%d in middle', '--encrypt u o 128 --', 'a-%d-single-out.zdf'],
+ [11, 'pdf extension', '', 'single-out.Pdf'],
+ [4, 'fallback', '--pages 11-pages.pdf 1-3 minimal.pdf --', 'single-out'],
+ );
+$n_tests += 1;
+for (@sp_cases)
+{
+ $n_tests += 1 + $_->[0];
+}
+
+$td->runtest("no single-pages to stdout",
+ {$td->COMMAND => "qpdf --single-pages 11-pages.pdf -"},
+ {$td->FILE => "single-pages-stdout.out", $td->EXIT_STATUS => 2},
+ $td->NORMALIZE_NEWLINES);
+
+foreach my $d (@sp_cases)
+{
+ my ($n, $description, $xargs, $out) = @$d;
+ $td->runtest("single pages " . $description,
+ {$td->COMMAND =>
+ "qpdf --static-id --single-pages 11-pages.pdf" .
+ " $xargs $out"},
+ {$td->STRING => "", $td->EXIT_STATUS => 0});
+ my $pattern = $out;
+ my $nlen = length($n);
+ if ($pattern =~ m/\%d/)
+ {
+ $pattern =~ s/\%d/\%0${nlen}d/;
+ }
+ elsif ($pattern =~ m/\.pdf$/i)
+ {
+ $pattern =~ s/(\.pdf$)/-%0${nlen}d$1/i;
+ }
+ else
+ {
+ $pattern .= "-%0${nlen}d";
+ }
+ for (my $i = 1; $i <= $n; ++$i)
+ {
+ my $actual = sprintf($pattern, $i);
+ my $expected = $actual;
+ $expected =~ s/single-out/single-exp/;
+ $td->runtest("checkout output page $i",
+ {$td->FILE => $actual},
+ {$td->FILE => $expected});
+ }
+}
+
+show_ntests();
+# ----------
$td->notify("--- Numeric range parsing tests ---");
my @nrange_tests = (
[",5",
@@ -2426,4 +2481,5 @@ sub get_md5_checksum
sub cleanup
{
system("rm -rf *.ps *.pnm ?.pdf ?.qdf *.enc* tif1 tif2 tiff-cache");
+ system("rm -rf *single-out*");
}
diff --git a/qpdf/qtest/qpdf/01_single-exp.zdf b/qpdf/qtest/qpdf/01_single-exp.zdf
new file mode 100644
index 00000000..7c37942f
--- /dev/null
+++ b/qpdf/qtest/qpdf/01_single-exp.zdf
Binary files differ
diff --git a/qpdf/qtest/qpdf/02_single-exp.zdf b/qpdf/qtest/qpdf/02_single-exp.zdf
new file mode 100644
index 00000000..cced06c3
--- /dev/null
+++ b/qpdf/qtest/qpdf/02_single-exp.zdf
Binary files differ
diff --git a/qpdf/qtest/qpdf/03_single-exp.zdf b/qpdf/qtest/qpdf/03_single-exp.zdf
new file mode 100644
index 00000000..7206ff55
--- /dev/null
+++ b/qpdf/qtest/qpdf/03_single-exp.zdf
Binary files differ
diff --git a/qpdf/qtest/qpdf/04_single-exp.zdf b/qpdf/qtest/qpdf/04_single-exp.zdf
new file mode 100644
index 00000000..d8a652ef
--- /dev/null
+++ b/qpdf/qtest/qpdf/04_single-exp.zdf
Binary files differ
diff --git a/qpdf/qtest/qpdf/05_single-exp.zdf b/qpdf/qtest/qpdf/05_single-exp.zdf
new file mode 100644
index 00000000..498596f8
--- /dev/null
+++ b/qpdf/qtest/qpdf/05_single-exp.zdf
Binary files differ
diff --git a/qpdf/qtest/qpdf/06_single-exp.zdf b/qpdf/qtest/qpdf/06_single-exp.zdf
new file mode 100644
index 00000000..016d83a9
--- /dev/null
+++ b/qpdf/qtest/qpdf/06_single-exp.zdf
Binary files differ
diff --git a/qpdf/qtest/qpdf/07_single-exp.zdf b/qpdf/qtest/qpdf/07_single-exp.zdf
new file mode 100644
index 00000000..bb1ed0ba
--- /dev/null
+++ b/qpdf/qtest/qpdf/07_single-exp.zdf
Binary files differ
diff --git a/qpdf/qtest/qpdf/08_single-exp.zdf b/qpdf/qtest/qpdf/08_single-exp.zdf
new file mode 100644
index 00000000..bd6b7f22
--- /dev/null
+++ b/qpdf/qtest/qpdf/08_single-exp.zdf
Binary files differ
diff --git a/qpdf/qtest/qpdf/09_single-exp.zdf b/qpdf/qtest/qpdf/09_single-exp.zdf
new file mode 100644
index 00000000..1b63f675
--- /dev/null
+++ b/qpdf/qtest/qpdf/09_single-exp.zdf
Binary files differ
diff --git a/qpdf/qtest/qpdf/10_single-exp.zdf b/qpdf/qtest/qpdf/10_single-exp.zdf
new file mode 100644
index 00000000..f3d209a4
--- /dev/null
+++ b/qpdf/qtest/qpdf/10_single-exp.zdf
Binary files differ
diff --git a/qpdf/qtest/qpdf/11-pages.pdf b/qpdf/qtest/qpdf/11-pages.pdf
new file mode 100644
index 00000000..e4b14efd
--- /dev/null
+++ b/qpdf/qtest/qpdf/11-pages.pdf
Binary files differ
diff --git a/qpdf/qtest/qpdf/11_single-exp.zdf b/qpdf/qtest/qpdf/11_single-exp.zdf
new file mode 100644
index 00000000..158f9c78
--- /dev/null
+++ b/qpdf/qtest/qpdf/11_single-exp.zdf
Binary files differ
diff --git a/qpdf/qtest/qpdf/a-01-single-exp.zdf b/qpdf/qtest/qpdf/a-01-single-exp.zdf
new file mode 100644
index 00000000..eb9aafce
--- /dev/null
+++ b/qpdf/qtest/qpdf/a-01-single-exp.zdf
@@ -0,0 +1,35 @@
+%PDF-1.4
+%
+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 /MediaBox [ 0 0 612 792 ] /Parent 2 0 R /Resources << /Font << /F1 5 0 R >> /ProcSet [ /PDF /Text ] >> /Type /Page >>
+endobj
+4 0 obj
+<< /Filter /FlateDecode /Length 53 >>
+stream
+x 휏nyA?(=2?&ꍕ>(ٙ aȊ1endstream
+endobj
+5 0 obj
+<< /BaseFont /Times-Roman /Encoding /WinAnsiEncoding /Subtype /Type1 /Type /Font >>
+endobj
+6 0 obj
+<< /Filter /Standard /Length 128 /O <2a2f0a1990192c60114730bdcd39f37828a53c89a340dd473c85299dc5258e1c> /P -4 /R 3 /U <fbe50a471395e24b4e73472e36a4abf00122456a91bae5134273a6db134c87c4> /V 2 >>
+endobj
+xref
+0 7
+0000000000 65535 f
+0000000015 00000 n
+0000000064 00000 n
+0000000123 00000 n
+0000000275 00000 n
+0000000398 00000 n
+0000000497 00000 n
+trailer << /Root 1 0 R /Size 7 /ID [<31415926535897932384626433832795><31415926535897932384626433832795>] /Encrypt 6 0 R >>
+startxref
+704
+%%EOF
diff --git a/qpdf/qtest/qpdf/a-02-single-exp.zdf b/qpdf/qtest/qpdf/a-02-single-exp.zdf
new file mode 100644
index 00000000..d94d70d5
--- /dev/null
+++ b/qpdf/qtest/qpdf/a-02-single-exp.zdf
@@ -0,0 +1,35 @@
+%PDF-1.4
+%
+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 /MediaBox [ 0 0 612 792 ] /Parent 2 0 R /Resources << /Font << /F1 5 0 R >> /ProcSet [ /PDF /Text ] >> /Type /Page >>
+endobj
+4 0 obj
+<< /Filter /FlateDecode /Length 53 >>
+stream
+x 휏nyA?(=2?&ꍕ>(ٙʤ aȊ1endstream
+endobj
+5 0 obj
+<< /BaseFont /Times-Roman /Encoding /WinAnsiEncoding /Subtype /Type1 /Type /Font >>
+endobj
+6 0 obj
+<< /Filter /Standard /Length 128 /O <2a2f0a1990192c60114730bdcd39f37828a53c89a340dd473c85299dc5258e1c> /P -4 /R 3 /U <fbe50a471395e24b4e73472e36a4abf00122456a91bae5134273a6db134c87c4> /V 2 >>
+endobj
+xref
+0 7
+0000000000 65535 f
+0000000015 00000 n
+0000000064 00000 n
+0000000123 00000 n
+0000000275 00000 n
+0000000398 00000 n
+0000000497 00000 n
+trailer << /Root 1 0 R /Size 7 /ID [<31415926535897932384626433832795><31415926535897932384626433832795>] /Encrypt 6 0 R >>
+startxref
+704
+%%EOF
diff --git a/qpdf/qtest/qpdf/a-03-single-exp.zdf b/qpdf/qtest/qpdf/a-03-single-exp.zdf
new file mode 100644
index 00000000..c3b8ca0e
--- /dev/null
+++ b/qpdf/qtest/qpdf/a-03-single-exp.zdf
@@ -0,0 +1,35 @@
+%PDF-1.4
+%
+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 /MediaBox [ 0 0 612 792 ] /Parent 2 0 R /Resources << /Font << /F1 5 0 R >> /ProcSet [ /PDF /Text ] >> /Type /Page >>
+endobj
+4 0 obj
+<< /Filter /FlateDecode /Length 53 >>
+stream
+x 휏nyA?(=2?&ꍕ>(ٙ aȊ1endstream
+endobj
+5 0 obj
+<< /BaseFont /Times-Roman /Encoding /WinAnsiEncoding /Subtype /Type1 /Type /Font >>
+endobj
+6 0 obj
+<< /Filter /Standard /Length 128 /O <2a2f0a1990192c60114730bdcd39f37828a53c89a340dd473c85299dc5258e1c> /P -4 /R 3 /U <fbe50a471395e24b4e73472e36a4abf00122456a91bae5134273a6db134c87c4> /V 2 >>
+endobj
+xref
+0 7
+0000000000 65535 f
+0000000015 00000 n
+0000000064 00000 n
+0000000123 00000 n
+0000000275 00000 n
+0000000398 00000 n
+0000000497 00000 n
+trailer << /Root 1 0 R /Size 7 /ID [<31415926535897932384626433832795><31415926535897932384626433832795>] /Encrypt 6 0 R >>
+startxref
+704
+%%EOF
diff --git a/qpdf/qtest/qpdf/a-04-single-exp.zdf b/qpdf/qtest/qpdf/a-04-single-exp.zdf
new file mode 100644
index 00000000..c03531a7
--- /dev/null
+++ b/qpdf/qtest/qpdf/a-04-single-exp.zdf
@@ -0,0 +1,35 @@
+%PDF-1.4
+%
+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 /MediaBox [ 0 0 612 792 ] /Parent 2 0 R /Resources << /Font << /F1 5 0 R >> /ProcSet [ /PDF /Text ] >> /Type /Page >>
+endobj
+4 0 obj
+<< /Filter /FlateDecode /Length 53 >>
+stream
+x 휏nyA?(=2?&ꍕ>(ٙ aȊ1endstream
+endobj
+5 0 obj
+<< /BaseFont /Times-Roman /Encoding /WinAnsiEncoding /Subtype /Type1 /Type /Font >>
+endobj
+6 0 obj
+<< /Filter /Standard /Length 128 /O <2a2f0a1990192c60114730bdcd39f37828a53c89a340dd473c85299dc5258e1c> /P -4 /R 3 /U <fbe50a471395e24b4e73472e36a4abf00122456a91bae5134273a6db134c87c4> /V 2 >>
+endobj
+xref
+0 7
+0000000000 65535 f
+0000000015 00000 n
+0000000064 00000 n
+0000000123 00000 n
+0000000275 00000 n
+0000000398 00000 n
+0000000497 00000 n
+trailer << /Root 1 0 R /Size 7 /ID [<31415926535897932384626433832795><31415926535897932384626433832795>] /Encrypt 6 0 R >>
+startxref
+704
+%%EOF
diff --git a/qpdf/qtest/qpdf/a-05-single-exp.zdf b/qpdf/qtest/qpdf/a-05-single-exp.zdf
new file mode 100644
index 00000000..7fb266dd
--- /dev/null
+++ b/qpdf/qtest/qpdf/a-05-single-exp.zdf
@@ -0,0 +1,35 @@
+%PDF-1.4
+%
+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 /MediaBox [ 0 0 612 792 ] /Parent 2 0 R /Resources << /Font << /F1 5 0 R >> /ProcSet [ /PDF /Text ] >> /Type /Page >>
+endobj
+4 0 obj
+<< /Filter /FlateDecode /Length 53 >>
+stream
+x 휏nyA?(=2?&ꍕ>(ٙ aȊ1endstream
+endobj
+5 0 obj
+<< /BaseFont /Times-Roman /Encoding /WinAnsiEncoding /Subtype /Type1 /Type /Font >>
+endobj
+6 0 obj
+<< /Filter /Standard /Length 128 /O <2a2f0a1990192c60114730bdcd39f37828a53c89a340dd473c85299dc5258e1c> /P -4 /R 3 /U <fbe50a471395e24b4e73472e36a4abf00122456a91bae5134273a6db134c87c4> /V 2 >>
+endobj
+xref
+0 7
+0000000000 65535 f
+0000000015 00000 n
+0000000064 00000 n
+0000000123 00000 n
+0000000275 00000 n
+0000000398 00000 n
+0000000497 00000 n
+trailer << /Root 1 0 R /Size 7 /ID [<31415926535897932384626433832795><31415926535897932384626433832795>] /Encrypt 6 0 R >>
+startxref
+704
+%%EOF
diff --git a/qpdf/qtest/qpdf/a-06-single-exp.zdf b/qpdf/qtest/qpdf/a-06-single-exp.zdf
new file mode 100644
index 00000000..af3432f0
--- /dev/null
+++ b/qpdf/qtest/qpdf/a-06-single-exp.zdf
@@ -0,0 +1,35 @@
+%PDF-1.4
+%
+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 /MediaBox [ 0 0 612 792 ] /Parent 2 0 R /Resources << /Font << /F1 5 0 R >> /ProcSet [ /PDF /Text ] >> /Type /Page >>
+endobj
+4 0 obj
+<< /Filter /FlateDecode /Length 53 >>
+stream
+x 휏nyA?(=2?&ꍕ>(ٙڤ aȊ1endstream
+endobj
+5 0 obj
+<< /BaseFont /Times-Roman /Encoding /WinAnsiEncoding /Subtype /Type1 /Type /Font >>
+endobj
+6 0 obj
+<< /Filter /Standard /Length 128 /O <2a2f0a1990192c60114730bdcd39f37828a53c89a340dd473c85299dc5258e1c> /P -4 /R 3 /U <fbe50a471395e24b4e73472e36a4abf00122456a91bae5134273a6db134c87c4> /V 2 >>
+endobj
+xref
+0 7
+0000000000 65535 f
+0000000015 00000 n
+0000000064 00000 n
+0000000123 00000 n
+0000000275 00000 n
+0000000398 00000 n
+0000000497 00000 n
+trailer << /Root 1 0 R /Size 7 /ID [<31415926535897932384626433832795><31415926535897932384626433832795>] /Encrypt 6 0 R >>
+startxref
+704
+%%EOF
diff --git a/qpdf/qtest/qpdf/a-07-single-exp.zdf b/qpdf/qtest/qpdf/a-07-single-exp.zdf
new file mode 100644
index 00000000..fb86b06f
--- /dev/null
+++ b/qpdf/qtest/qpdf/a-07-single-exp.zdf
@@ -0,0 +1,35 @@
+%PDF-1.4
+%
+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 /MediaBox [ 0 0 612 792 ] /Parent 2 0 R /Resources << /Font << /F1 5 0 R >> /ProcSet [ /PDF /Text ] >> /Type /Page >>
+endobj
+4 0 obj
+<< /Filter /FlateDecode /Length 53 >>
+stream
+x 휏nyA?(=2?&ꍕ>(ٙ aȊ1endstream
+endobj
+5 0 obj
+<< /BaseFont /Times-Roman /Encoding /WinAnsiEncoding /Subtype /Type1 /Type /Font >>
+endobj
+6 0 obj
+<< /Filter /Standard /Length 128 /O <2a2f0a1990192c60114730bdcd39f37828a53c89a340dd473c85299dc5258e1c> /P -4 /R 3 /U <fbe50a471395e24b4e73472e36a4abf00122456a91bae5134273a6db134c87c4> /V 2 >>
+endobj
+xref
+0 7
+0000000000 65535 f
+0000000015 00000 n
+0000000064 00000 n
+0000000123 00000 n
+0000000275 00000 n
+0000000398 00000 n
+0000000497 00000 n
+trailer << /Root 1 0 R /Size 7 /ID [<31415926535897932384626433832795><31415926535897932384626433832795>] /Encrypt 6 0 R >>
+startxref
+704
+%%EOF
diff --git a/qpdf/qtest/qpdf/a-08-single-exp.zdf b/qpdf/qtest/qpdf/a-08-single-exp.zdf
new file mode 100644
index 00000000..ad0d7451
--- /dev/null
+++ b/qpdf/qtest/qpdf/a-08-single-exp.zdf
@@ -0,0 +1,35 @@
+%PDF-1.4
+%
+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 /MediaBox [ 0 0 612 792 ] /Parent 2 0 R /Resources << /Font << /F1 5 0 R >> /ProcSet [ /PDF /Text ] >> /Type /Page >>
+endobj
+4 0 obj
+<< /Filter /FlateDecode /Length 53 >>
+stream
+x 휏nyA?(=2?&ꍕ>(ٙ aȊ1endstream
+endobj
+5 0 obj
+<< /BaseFont /Times-Roman /Encoding /WinAnsiEncoding /Subtype /Type1 /Type /Font >>
+endobj
+6 0 obj
+<< /Filter /Standard /Length 128 /O <2a2f0a1990192c60114730bdcd39f37828a53c89a340dd473c85299dc5258e1c> /P -4 /R 3 /U <fbe50a471395e24b4e73472e36a4abf00122456a91bae5134273a6db134c87c4> /V 2 >>
+endobj
+xref
+0 7
+0000000000 65535 f
+0000000015 00000 n
+0000000064 00000 n
+0000000123 00000 n
+0000000275 00000 n
+0000000398 00000 n
+0000000497 00000 n
+trailer << /Root 1 0 R /Size 7 /ID [<31415926535897932384626433832795><31415926535897932384626433832795>] /Encrypt 6 0 R >>
+startxref
+704
+%%EOF
diff --git a/qpdf/qtest/qpdf/a-09-single-exp.zdf b/qpdf/qtest/qpdf/a-09-single-exp.zdf
new file mode 100644
index 00000000..76bf1db5
--- /dev/null
+++ b/qpdf/qtest/qpdf/a-09-single-exp.zdf
@@ -0,0 +1,35 @@
+%PDF-1.4
+%
+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 /MediaBox [ 0 0 612 792 ] /Parent 2 0 R /Resources << /Font << /F1 5 0 R >> /ProcSet [ /PDF /Text ] >> /Type /Page >>
+endobj
+4 0 obj
+<< /Filter /FlateDecode /Length 53 >>
+stream
+x 휏nyA?(=2?&ꍕ>(ٙ aȊ1endstream
+endobj
+5 0 obj
+<< /BaseFont /Times-Roman /Encoding /WinAnsiEncoding /Subtype /Type1 /Type /Font >>
+endobj
+6 0 obj
+<< /Filter /Standard /Length 128 /O <2a2f0a1990192c60114730bdcd39f37828a53c89a340dd473c85299dc5258e1c> /P -4 /R 3 /U <fbe50a471395e24b4e73472e36a4abf00122456a91bae5134273a6db134c87c4> /V 2 >>
+endobj
+xref
+0 7
+0000000000 65535 f
+0000000015 00000 n
+0000000064 00000 n
+0000000123 00000 n
+0000000275 00000 n
+0000000398 00000 n
+0000000497 00000 n
+trailer << /Root 1 0 R /Size 7 /ID [<31415926535897932384626433832795><31415926535897932384626433832795>] /Encrypt 6 0 R >>
+startxref
+704
+%%EOF
diff --git a/qpdf/qtest/qpdf/a-10-single-exp.zdf b/qpdf/qtest/qpdf/a-10-single-exp.zdf
new file mode 100644
index 00000000..7f9c55c2
--- /dev/null
+++ b/qpdf/qtest/qpdf/a-10-single-exp.zdf
@@ -0,0 +1,35 @@
+%PDF-1.4
+%
+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 /MediaBox [ 0 0 612 792 ] /Parent 2 0 R /Resources << /Font << /F1 5 0 R >> /ProcSet [ /PDF /Text ] >> /Type /Page >>
+endobj
+4 0 obj
+<< /Filter /FlateDecode /Length 54 >>
+stream
+x 휏nyA?(=2?&ꍕ>(ٙ|HM-endstream
+endobj
+5 0 obj
+<< /BaseFont /Times-Roman /Encoding /WinAnsiEncoding /Subtype /Type1 /Type /Font >>
+endobj
+6 0 obj
+<< /Filter /Standard /Length 128 /O <2a2f0a1990192c60114730bdcd39f37828a53c89a340dd473c85299dc5258e1c> /P -4 /R 3 /U <fbe50a471395e24b4e73472e36a4abf00122456a91bae5134273a6db134c87c4> /V 2 >>
+endobj
+xref
+0 7
+0000000000 65535 f
+0000000015 00000 n
+0000000064 00000 n
+0000000123 00000 n
+0000000275 00000 n
+0000000399 00000 n
+0000000498 00000 n
+trailer << /Root 1 0 R /Size 7 /ID [<31415926535897932384626433832795><31415926535897932384626433832795>] /Encrypt 6 0 R >>
+startxref
+705
+%%EOF
diff --git a/qpdf/qtest/qpdf/a-11-single-exp.zdf b/qpdf/qtest/qpdf/a-11-single-exp.zdf
new file mode 100644
index 00000000..be8f3a7f
--- /dev/null
+++ b/qpdf/qtest/qpdf/a-11-single-exp.zdf
@@ -0,0 +1,35 @@
+%PDF-1.4
+%
+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 /MediaBox [ 0 0 612 792 ] /Parent 2 0 R /Resources << /Font << /F1 5 0 R >> /ProcSet [ /PDF /Text ] >> /Type /Page >>
+endobj
+4 0 obj
+<< /Filter /FlateDecode /Length 54 >>
+stream
+x 휏nyA?(=2?&ꍕ>(ٙ|HM- endstream
+endobj
+5 0 obj
+<< /BaseFont /Times-Roman /Encoding /WinAnsiEncoding /Subtype /Type1 /Type /Font >>
+endobj
+6 0 obj
+<< /Filter /Standard /Length 128 /O <2a2f0a1990192c60114730bdcd39f37828a53c89a340dd473c85299dc5258e1c> /P -4 /R 3 /U <fbe50a471395e24b4e73472e36a4abf00122456a91bae5134273a6db134c87c4> /V 2 >>
+endobj
+xref
+0 7
+0000000000 65535 f
+0000000015 00000 n
+0000000064 00000 n
+0000000123 00000 n
+0000000275 00000 n
+0000000399 00000 n
+0000000498 00000 n
+trailer << /Root 1 0 R /Size 7 /ID [<31415926535897932384626433832795><31415926535897932384626433832795>] /Encrypt 6 0 R >>
+startxref
+705
+%%EOF
diff --git a/qpdf/qtest/qpdf/single-exp-01.Pdf b/qpdf/qtest/qpdf/single-exp-01.Pdf
new file mode 100644
index 00000000..7c37942f
--- /dev/null
+++ b/qpdf/qtest/qpdf/single-exp-01.Pdf
Binary files differ
diff --git a/qpdf/qtest/qpdf/single-exp-02.Pdf b/qpdf/qtest/qpdf/single-exp-02.Pdf
new file mode 100644
index 00000000..cced06c3
--- /dev/null
+++ b/qpdf/qtest/qpdf/single-exp-02.Pdf
Binary files differ
diff --git a/qpdf/qtest/qpdf/single-exp-03.Pdf b/qpdf/qtest/qpdf/single-exp-03.Pdf
new file mode 100644
index 00000000..7206ff55
--- /dev/null
+++ b/qpdf/qtest/qpdf/single-exp-03.Pdf
Binary files differ
diff --git a/qpdf/qtest/qpdf/single-exp-04.Pdf b/qpdf/qtest/qpdf/single-exp-04.Pdf
new file mode 100644
index 00000000..d8a652ef
--- /dev/null
+++ b/qpdf/qtest/qpdf/single-exp-04.Pdf
Binary files differ
diff --git a/qpdf/qtest/qpdf/single-exp-05.Pdf b/qpdf/qtest/qpdf/single-exp-05.Pdf
new file mode 100644
index 00000000..498596f8
--- /dev/null
+++ b/qpdf/qtest/qpdf/single-exp-05.Pdf
Binary files differ
diff --git a/qpdf/qtest/qpdf/single-exp-06.Pdf b/qpdf/qtest/qpdf/single-exp-06.Pdf
new file mode 100644
index 00000000..016d83a9
--- /dev/null
+++ b/qpdf/qtest/qpdf/single-exp-06.Pdf
Binary files differ
diff --git a/qpdf/qtest/qpdf/single-exp-07.Pdf b/qpdf/qtest/qpdf/single-exp-07.Pdf
new file mode 100644
index 00000000..bb1ed0ba
--- /dev/null
+++ b/qpdf/qtest/qpdf/single-exp-07.Pdf
Binary files differ
diff --git a/qpdf/qtest/qpdf/single-exp-08.Pdf b/qpdf/qtest/qpdf/single-exp-08.Pdf
new file mode 100644
index 00000000..bd6b7f22
--- /dev/null
+++ b/qpdf/qtest/qpdf/single-exp-08.Pdf
Binary files differ
diff --git a/qpdf/qtest/qpdf/single-exp-09.Pdf b/qpdf/qtest/qpdf/single-exp-09.Pdf
new file mode 100644
index 00000000..1b63f675
--- /dev/null
+++ b/qpdf/qtest/qpdf/single-exp-09.Pdf
Binary files differ
diff --git a/qpdf/qtest/qpdf/single-exp-1 b/qpdf/qtest/qpdf/single-exp-1
new file mode 100644
index 00000000..7c37942f
--- /dev/null
+++ b/qpdf/qtest/qpdf/single-exp-1
Binary files differ
diff --git a/qpdf/qtest/qpdf/single-exp-10.Pdf b/qpdf/qtest/qpdf/single-exp-10.Pdf
new file mode 100644
index 00000000..f3d209a4
--- /dev/null
+++ b/qpdf/qtest/qpdf/single-exp-10.Pdf
Binary files differ
diff --git a/qpdf/qtest/qpdf/single-exp-11.Pdf b/qpdf/qtest/qpdf/single-exp-11.Pdf
new file mode 100644
index 00000000..158f9c78
--- /dev/null
+++ b/qpdf/qtest/qpdf/single-exp-11.Pdf
Binary files differ
diff --git a/qpdf/qtest/qpdf/single-exp-2 b/qpdf/qtest/qpdf/single-exp-2
new file mode 100644
index 00000000..cced06c3
--- /dev/null
+++ b/qpdf/qtest/qpdf/single-exp-2
Binary files differ
diff --git a/qpdf/qtest/qpdf/single-exp-3 b/qpdf/qtest/qpdf/single-exp-3
new file mode 100644
index 00000000..7206ff55
--- /dev/null
+++ b/qpdf/qtest/qpdf/single-exp-3
Binary files differ
diff --git a/qpdf/qtest/qpdf/single-exp-4 b/qpdf/qtest/qpdf/single-exp-4
new file mode 100644
index 00000000..b8c692ed
--- /dev/null
+++ b/qpdf/qtest/qpdf/single-exp-4
Binary files differ
diff --git a/qpdf/qtest/qpdf/single-exp.zdf_01 b/qpdf/qtest/qpdf/single-exp.zdf_01
new file mode 100644
index 00000000..31a145aa
--- /dev/null
+++ b/qpdf/qtest/qpdf/single-exp.zdf_01
@@ -0,0 +1,90 @@
+%PDF-1.3
+%
+%QDF-1.0
+
+%% Original object ID: 1 0
+1 0 obj
+<<
+ /Pages 2 0 R
+ /Type /Catalog
+>>
+endobj
+
+%% Original object ID: 2 0
+2 0 obj
+<<
+ /Count 1
+ /Kids [
+ 3 0 R
+ ]
+ /Type /Pages
+>>
+endobj
+
+%% Page 1
+%% Original object ID: 3 0
+3 0 obj
+<<
+ /Contents 4 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 2 0 R
+ /Resources <<
+ /Font <<
+ /F1 6 0 R
+ >>
+ /ProcSet [
+ /PDF
+ /Text
+ ]
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Contents for page 1
+%% Original object ID: 4 0
+4 0 obj
+<<
+ /Length 5 0 R
+>>
+stream
+BT /F1 15 Tf 72 720 Td (Original page 1) Tj ET
+endstream
+endobj
+
+5 0 obj
+47
+endobj
+
+%% Original object ID: 5 0
+6 0 obj
+<<
+ /BaseFont /Times-Roman
+ /Encoding /WinAnsiEncoding
+ /Subtype /Type1
+ /Type /Font
+>>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000052 00000 n
+0000000133 00000 n
+0000000242 00000 n
+0000000509 00000 n
+0000000611 00000 n
+0000000657 00000 n
+trailer <<
+ /Root 1 0 R
+ /Size 7
+ /ID [<31415926535897932384626433832795><31415926535897932384626433832795>]
+>>
+startxref
+765
+%%EOF
diff --git a/qpdf/qtest/qpdf/single-exp.zdf_02 b/qpdf/qtest/qpdf/single-exp.zdf_02
new file mode 100644
index 00000000..d70facb1
--- /dev/null
+++ b/qpdf/qtest/qpdf/single-exp.zdf_02
@@ -0,0 +1,90 @@
+%PDF-1.3
+%
+%QDF-1.0
+
+%% Original object ID: 1 0
+1 0 obj
+<<
+ /Pages 2 0 R
+ /Type /Catalog
+>>
+endobj
+
+%% Original object ID: 2 0
+2 0 obj
+<<
+ /Count 1
+ /Kids [
+ 3 0 R
+ ]
+ /Type /Pages
+>>
+endobj
+
+%% Page 1
+%% Original object ID: 3 0
+3 0 obj
+<<
+ /Contents 4 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 2 0 R
+ /Resources <<
+ /Font <<
+ /F1 6 0 R
+ >>
+ /ProcSet [
+ /PDF
+ /Text
+ ]
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Contents for page 1
+%% Original object ID: 4 0
+4 0 obj
+<<
+ /Length 5 0 R
+>>
+stream
+BT /F1 15 Tf 72 720 Td (Original page 2) Tj ET
+endstream
+endobj
+
+5 0 obj
+47
+endobj
+
+%% Original object ID: 5 0
+6 0 obj
+<<
+ /BaseFont /Times-Roman
+ /Encoding /WinAnsiEncoding
+ /Subtype /Type1
+ /Type /Font
+>>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000052 00000 n
+0000000133 00000 n
+0000000242 00000 n
+0000000509 00000 n
+0000000611 00000 n
+0000000657 00000 n
+trailer <<
+ /Root 1 0 R
+ /Size 7
+ /ID [<31415926535897932384626433832795><31415926535897932384626433832795>]
+>>
+startxref
+765
+%%EOF
diff --git a/qpdf/qtest/qpdf/single-exp.zdf_03 b/qpdf/qtest/qpdf/single-exp.zdf_03
new file mode 100644
index 00000000..fbb491b5
--- /dev/null
+++ b/qpdf/qtest/qpdf/single-exp.zdf_03
@@ -0,0 +1,90 @@
+%PDF-1.3
+%
+%QDF-1.0
+
+%% Original object ID: 1 0
+1 0 obj
+<<
+ /Pages 2 0 R
+ /Type /Catalog
+>>
+endobj
+
+%% Original object ID: 2 0
+2 0 obj
+<<
+ /Count 1
+ /Kids [
+ 3 0 R
+ ]
+ /Type /Pages
+>>
+endobj
+
+%% Page 1
+%% Original object ID: 3 0
+3 0 obj
+<<
+ /Contents 4 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 2 0 R
+ /Resources <<
+ /Font <<
+ /F1 6 0 R
+ >>
+ /ProcSet [
+ /PDF
+ /Text
+ ]
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Contents for page 1
+%% Original object ID: 4 0
+4 0 obj
+<<
+ /Length 5 0 R
+>>
+stream
+BT /F1 15 Tf 72 720 Td (Original page 3) Tj ET
+endstream
+endobj
+
+5 0 obj
+47
+endobj
+
+%% Original object ID: 5 0
+6 0 obj
+<<
+ /BaseFont /Times-Roman
+ /Encoding /WinAnsiEncoding
+ /Subtype /Type1
+ /Type /Font
+>>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000052 00000 n
+0000000133 00000 n
+0000000242 00000 n
+0000000509 00000 n
+0000000611 00000 n
+0000000657 00000 n
+trailer <<
+ /Root 1 0 R
+ /Size 7
+ /ID [<31415926535897932384626433832795><31415926535897932384626433832795>]
+>>
+startxref
+765
+%%EOF
diff --git a/qpdf/qtest/qpdf/single-exp.zdf_04 b/qpdf/qtest/qpdf/single-exp.zdf_04
new file mode 100644
index 00000000..d0ab509e
--- /dev/null
+++ b/qpdf/qtest/qpdf/single-exp.zdf_04
@@ -0,0 +1,90 @@
+%PDF-1.3
+%
+%QDF-1.0
+
+%% Original object ID: 1 0
+1 0 obj
+<<
+ /Pages 2 0 R
+ /Type /Catalog
+>>
+endobj
+
+%% Original object ID: 2 0
+2 0 obj
+<<
+ /Count 1
+ /Kids [
+ 3 0 R
+ ]
+ /Type /Pages
+>>
+endobj
+
+%% Page 1
+%% Original object ID: 3 0
+3 0 obj
+<<
+ /Contents 4 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 2 0 R
+ /Resources <<
+ /Font <<
+ /F1 6 0 R
+ >>
+ /ProcSet [
+ /PDF
+ /Text
+ ]
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Contents for page 1
+%% Original object ID: 4 0
+4 0 obj
+<<
+ /Length 5 0 R
+>>
+stream
+BT /F1 15 Tf 72 720 Td (Original page 4) Tj ET
+endstream
+endobj
+
+5 0 obj
+47
+endobj
+
+%% Original object ID: 5 0
+6 0 obj
+<<
+ /BaseFont /Times-Roman
+ /Encoding /WinAnsiEncoding
+ /Subtype /Type1
+ /Type /Font
+>>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000052 00000 n
+0000000133 00000 n
+0000000242 00000 n
+0000000509 00000 n
+0000000611 00000 n
+0000000657 00000 n
+trailer <<
+ /Root 1 0 R
+ /Size 7
+ /ID [<31415926535897932384626433832795><31415926535897932384626433832795>]
+>>
+startxref
+765
+%%EOF
diff --git a/qpdf/qtest/qpdf/single-exp.zdf_05 b/qpdf/qtest/qpdf/single-exp.zdf_05
new file mode 100644
index 00000000..a2d861d6
--- /dev/null
+++ b/qpdf/qtest/qpdf/single-exp.zdf_05
@@ -0,0 +1,90 @@
+%PDF-1.3
+%
+%QDF-1.0
+
+%% Original object ID: 1 0
+1 0 obj
+<<
+ /Pages 2 0 R
+ /Type /Catalog
+>>
+endobj
+
+%% Original object ID: 2 0
+2 0 obj
+<<
+ /Count 1
+ /Kids [
+ 3 0 R
+ ]
+ /Type /Pages
+>>
+endobj
+
+%% Page 1
+%% Original object ID: 3 0
+3 0 obj
+<<
+ /Contents 4 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 2 0 R
+ /Resources <<
+ /Font <<
+ /F1 6 0 R
+ >>
+ /ProcSet [
+ /PDF
+ /Text
+ ]
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Contents for page 1
+%% Original object ID: 4 0
+4 0 obj
+<<
+ /Length 5 0 R
+>>
+stream
+BT /F1 15 Tf 72 720 Td (Original page 5) Tj ET
+endstream
+endobj
+
+5 0 obj
+47
+endobj
+
+%% Original object ID: 5 0
+6 0 obj
+<<
+ /BaseFont /Times-Roman
+ /Encoding /WinAnsiEncoding
+ /Subtype /Type1
+ /Type /Font
+>>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000052 00000 n
+0000000133 00000 n
+0000000242 00000 n
+0000000509 00000 n
+0000000611 00000 n
+0000000657 00000 n
+trailer <<
+ /Root 1 0 R
+ /Size 7
+ /ID [<31415926535897932384626433832795><31415926535897932384626433832795>]
+>>
+startxref
+765
+%%EOF
diff --git a/qpdf/qtest/qpdf/single-exp.zdf_06 b/qpdf/qtest/qpdf/single-exp.zdf_06
new file mode 100644
index 00000000..1d5b6e56
--- /dev/null
+++ b/qpdf/qtest/qpdf/single-exp.zdf_06
@@ -0,0 +1,90 @@
+%PDF-1.3
+%
+%QDF-1.0
+
+%% Original object ID: 1 0
+1 0 obj
+<<
+ /Pages 2 0 R
+ /Type /Catalog
+>>
+endobj
+
+%% Original object ID: 2 0
+2 0 obj
+<<
+ /Count 1
+ /Kids [
+ 3 0 R
+ ]
+ /Type /Pages
+>>
+endobj
+
+%% Page 1
+%% Original object ID: 3 0
+3 0 obj
+<<
+ /Contents 4 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 2 0 R
+ /Resources <<
+ /Font <<
+ /F1 6 0 R
+ >>
+ /ProcSet [
+ /PDF
+ /Text
+ ]
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Contents for page 1
+%% Original object ID: 4 0
+4 0 obj
+<<
+ /Length 5 0 R
+>>
+stream
+BT /F1 15 Tf 72 720 Td (Original page 6) Tj ET
+endstream
+endobj
+
+5 0 obj
+47
+endobj
+
+%% Original object ID: 5 0
+6 0 obj
+<<
+ /BaseFont /Times-Roman
+ /Encoding /WinAnsiEncoding
+ /Subtype /Type1
+ /Type /Font
+>>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000052 00000 n
+0000000133 00000 n
+0000000242 00000 n
+0000000509 00000 n
+0000000611 00000 n
+0000000657 00000 n
+trailer <<
+ /Root 1 0 R
+ /Size 7
+ /ID [<31415926535897932384626433832795><31415926535897932384626433832795>]
+>>
+startxref
+765
+%%EOF
diff --git a/qpdf/qtest/qpdf/single-exp.zdf_07 b/qpdf/qtest/qpdf/single-exp.zdf_07
new file mode 100644
index 00000000..10a72379
--- /dev/null
+++ b/qpdf/qtest/qpdf/single-exp.zdf_07
@@ -0,0 +1,90 @@
+%PDF-1.3
+%
+%QDF-1.0
+
+%% Original object ID: 1 0
+1 0 obj
+<<
+ /Pages 2 0 R
+ /Type /Catalog
+>>
+endobj
+
+%% Original object ID: 2 0
+2 0 obj
+<<
+ /Count 1
+ /Kids [
+ 3 0 R
+ ]
+ /Type /Pages
+>>
+endobj
+
+%% Page 1
+%% Original object ID: 3 0
+3 0 obj
+<<
+ /Contents 4 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 2 0 R
+ /Resources <<
+ /Font <<
+ /F1 6 0 R
+ >>
+ /ProcSet [
+ /PDF
+ /Text
+ ]
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Contents for page 1
+%% Original object ID: 4 0
+4 0 obj
+<<
+ /Length 5 0 R
+>>
+stream
+BT /F1 15 Tf 72 720 Td (Original page 7) Tj ET
+endstream
+endobj
+
+5 0 obj
+47
+endobj
+
+%% Original object ID: 5 0
+6 0 obj
+<<
+ /BaseFont /Times-Roman
+ /Encoding /WinAnsiEncoding
+ /Subtype /Type1
+ /Type /Font
+>>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000052 00000 n
+0000000133 00000 n
+0000000242 00000 n
+0000000509 00000 n
+0000000611 00000 n
+0000000657 00000 n
+trailer <<
+ /Root 1 0 R
+ /Size 7
+ /ID [<31415926535897932384626433832795><31415926535897932384626433832795>]
+>>
+startxref
+765
+%%EOF
diff --git a/qpdf/qtest/qpdf/single-exp.zdf_08 b/qpdf/qtest/qpdf/single-exp.zdf_08
new file mode 100644
index 00000000..9ccb696e
--- /dev/null
+++ b/qpdf/qtest/qpdf/single-exp.zdf_08
@@ -0,0 +1,90 @@
+%PDF-1.3
+%
+%QDF-1.0
+
+%% Original object ID: 1 0
+1 0 obj
+<<
+ /Pages 2 0 R
+ /Type /Catalog
+>>
+endobj
+
+%% Original object ID: 2 0
+2 0 obj
+<<
+ /Count 1
+ /Kids [
+ 3 0 R
+ ]
+ /Type /Pages
+>>
+endobj
+
+%% Page 1
+%% Original object ID: 3 0
+3 0 obj
+<<
+ /Contents 4 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 2 0 R
+ /Resources <<
+ /Font <<
+ /F1 6 0 R
+ >>
+ /ProcSet [
+ /PDF
+ /Text
+ ]
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Contents for page 1
+%% Original object ID: 4 0
+4 0 obj
+<<
+ /Length 5 0 R
+>>
+stream
+BT /F1 15 Tf 72 720 Td (Original page 8) Tj ET
+endstream
+endobj
+
+5 0 obj
+47
+endobj
+
+%% Original object ID: 5 0
+6 0 obj
+<<
+ /BaseFont /Times-Roman
+ /Encoding /WinAnsiEncoding
+ /Subtype /Type1
+ /Type /Font
+>>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000052 00000 n
+0000000133 00000 n
+0000000242 00000 n
+0000000509 00000 n
+0000000611 00000 n
+0000000657 00000 n
+trailer <<
+ /Root 1 0 R
+ /Size 7
+ /ID [<31415926535897932384626433832795><31415926535897932384626433832795>]
+>>
+startxref
+765
+%%EOF
diff --git a/qpdf/qtest/qpdf/single-exp.zdf_09 b/qpdf/qtest/qpdf/single-exp.zdf_09
new file mode 100644
index 00000000..82706bc1
--- /dev/null
+++ b/qpdf/qtest/qpdf/single-exp.zdf_09
@@ -0,0 +1,90 @@
+%PDF-1.3
+%
+%QDF-1.0
+
+%% Original object ID: 1 0
+1 0 obj
+<<
+ /Pages 2 0 R
+ /Type /Catalog
+>>
+endobj
+
+%% Original object ID: 2 0
+2 0 obj
+<<
+ /Count 1
+ /Kids [
+ 3 0 R
+ ]
+ /Type /Pages
+>>
+endobj
+
+%% Page 1
+%% Original object ID: 3 0
+3 0 obj
+<<
+ /Contents 4 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 2 0 R
+ /Resources <<
+ /Font <<
+ /F1 6 0 R
+ >>
+ /ProcSet [
+ /PDF
+ /Text
+ ]
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Contents for page 1
+%% Original object ID: 4 0
+4 0 obj
+<<
+ /Length 5 0 R
+>>
+stream
+BT /F1 15 Tf 72 720 Td (Original page 9) Tj ET
+endstream
+endobj
+
+5 0 obj
+47
+endobj
+
+%% Original object ID: 5 0
+6 0 obj
+<<
+ /BaseFont /Times-Roman
+ /Encoding /WinAnsiEncoding
+ /Subtype /Type1
+ /Type /Font
+>>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000052 00000 n
+0000000133 00000 n
+0000000242 00000 n
+0000000509 00000 n
+0000000611 00000 n
+0000000657 00000 n
+trailer <<
+ /Root 1 0 R
+ /Size 7
+ /ID [<31415926535897932384626433832795><31415926535897932384626433832795>]
+>>
+startxref
+765
+%%EOF
diff --git a/qpdf/qtest/qpdf/single-exp.zdf_10 b/qpdf/qtest/qpdf/single-exp.zdf_10
new file mode 100644
index 00000000..5deab6d7
--- /dev/null
+++ b/qpdf/qtest/qpdf/single-exp.zdf_10
@@ -0,0 +1,90 @@
+%PDF-1.3
+%
+%QDF-1.0
+
+%% Original object ID: 1 0
+1 0 obj
+<<
+ /Pages 2 0 R
+ /Type /Catalog
+>>
+endobj
+
+%% Original object ID: 2 0
+2 0 obj
+<<
+ /Count 1
+ /Kids [
+ 3 0 R
+ ]
+ /Type /Pages
+>>
+endobj
+
+%% Page 1
+%% Original object ID: 3 0
+3 0 obj
+<<
+ /Contents 4 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 2 0 R
+ /Resources <<
+ /Font <<
+ /F1 6 0 R
+ >>
+ /ProcSet [
+ /PDF
+ /Text
+ ]
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Contents for page 1
+%% Original object ID: 4 0
+4 0 obj
+<<
+ /Length 5 0 R
+>>
+stream
+BT /F1 15 Tf 72 720 Td (Original page 10) Tj ET
+endstream
+endobj
+
+5 0 obj
+48
+endobj
+
+%% Original object ID: 5 0
+6 0 obj
+<<
+ /BaseFont /Times-Roman
+ /Encoding /WinAnsiEncoding
+ /Subtype /Type1
+ /Type /Font
+>>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000052 00000 n
+0000000133 00000 n
+0000000242 00000 n
+0000000509 00000 n
+0000000612 00000 n
+0000000658 00000 n
+trailer <<
+ /Root 1 0 R
+ /Size 7
+ /ID [<31415926535897932384626433832795><31415926535897932384626433832795>]
+>>
+startxref
+766
+%%EOF
diff --git a/qpdf/qtest/qpdf/single-exp.zdf_11 b/qpdf/qtest/qpdf/single-exp.zdf_11
new file mode 100644
index 00000000..3a3105d5
--- /dev/null
+++ b/qpdf/qtest/qpdf/single-exp.zdf_11
@@ -0,0 +1,90 @@
+%PDF-1.3
+%
+%QDF-1.0
+
+%% Original object ID: 1 0
+1 0 obj
+<<
+ /Pages 2 0 R
+ /Type /Catalog
+>>
+endobj
+
+%% Original object ID: 2 0
+2 0 obj
+<<
+ /Count 1
+ /Kids [
+ 3 0 R
+ ]
+ /Type /Pages
+>>
+endobj
+
+%% Page 1
+%% Original object ID: 3 0
+3 0 obj
+<<
+ /Contents 4 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 2 0 R
+ /Resources <<
+ /Font <<
+ /F1 6 0 R
+ >>
+ /ProcSet [
+ /PDF
+ /Text
+ ]
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Contents for page 1
+%% Original object ID: 4 0
+4 0 obj
+<<
+ /Length 5 0 R
+>>
+stream
+BT /F1 15 Tf 72 720 Td (Original page 11) Tj ET
+endstream
+endobj
+
+5 0 obj
+48
+endobj
+
+%% Original object ID: 5 0
+6 0 obj
+<<
+ /BaseFont /Times-Roman
+ /Encoding /WinAnsiEncoding
+ /Subtype /Type1
+ /Type /Font
+>>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000052 00000 n
+0000000133 00000 n
+0000000242 00000 n
+0000000509 00000 n
+0000000612 00000 n
+0000000658 00000 n
+trailer <<
+ /Root 1 0 R
+ /Size 7
+ /ID [<31415926535897932384626433832795><31415926535897932384626433832795>]
+>>
+startxref
+766
+%%EOF
diff --git a/qpdf/qtest/qpdf/single-pages-stdout.out b/qpdf/qtest/qpdf/single-pages-stdout.out
new file mode 100644
index 00000000..1efa16f1
--- /dev/null
+++ b/qpdf/qtest/qpdf/single-pages-stdout.out
@@ -0,0 +1,6 @@
+
+qpdf: --single-pages may not be used when writing to standard output
+
+Usage: qpdf [options] infile outfile
+For detailed help, run qpdf --help
+