aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog12
-rw-r--r--qpdf/qpdf-ctest.c107
-rw-r--r--qpdf/qtest/qpdf.test50
-rw-r--r--qpdf/qtest/qpdf/c-ignore-xref-streams.pdfbin0 -> 9976 bytes
-rw-r--r--qpdf/qtest/qpdf/c-linearized.pdfbin0 -> 10402 bytes
-rw-r--r--qpdf/qtest/qpdf/c-no-options.pdfbin0 -> 9668 bytes
-rw-r--r--qpdf/qtest/qpdf/c-no-original-object-ids.pdf1512
-rw-r--r--qpdf/qtest/qpdf/c-normalized-content.pdfbin0 -> 8917 bytes
-rw-r--r--qpdf/qtest/qpdf/c-object-streams.pdfbin0 -> 5195 bytes
-rw-r--r--qpdf/qtest/qpdf/c-qdf.pdf1576
-rw-r--r--qpdf/qtest/qpdf/c-uncompressed-streams.pdf434
-rw-r--r--qpdf/qtest/qpdf/c-write-damaged.out3
12 files changed, 3694 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 23354fb6..2d5adb70 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2009-09-27 Jay Berkenbilt <ejb@ql.org>
+
+ * The function QPDF::getUserPassword returned the user password
+ with the required padding as specified by the PDF specification.
+ This is seldom useful to users. This function has been replaced
+ by QPDF::getPaddedUserPassword. Call the new
+ QPDF::getTrimmedUserPassword to retreive the user password in a
+ human-readable format.
+
+ * qpdf/qpdf.cc (main): qpdf --check now prints the PDF version
+ number in addition to its other output.
+
2009-09-26 Jay Berkenbilt <ejb@ql.org>
* Removed all references to QEXC; now using std::runtime_error and
diff --git a/qpdf/qpdf-ctest.c b/qpdf/qpdf-ctest.c
index 23947b6b..d491b2a5 100644
--- a/qpdf/qpdf-ctest.c
+++ b/qpdf/qpdf-ctest.c
@@ -33,6 +33,105 @@ static void test01(char const* infile,
report_errors();
}
+static void test02(char const* infile,
+ char const* password,
+ char const* outfile)
+{
+ qpdf_set_suppress_warnings(qpdf, QPDF_TRUE);
+ qpdf_read(qpdf, infile, password);
+ if (qpdf_init_write(qpdf, outfile) == QPDF_SUCCESS)
+ {
+ qpdf_set_static_ID(qpdf, QPDF_TRUE);
+ qpdf_write(qpdf);
+ }
+ report_errors();
+}
+
+static void test03(char const* infile,
+ char const* password,
+ char const* outfile)
+{
+ qpdf_read(qpdf, infile, password);
+ qpdf_init_write(qpdf, outfile);
+ qpdf_set_static_ID(qpdf, QPDF_TRUE);
+ qpdf_set_content_normalization(qpdf, QPDF_TRUE);
+ qpdf_write(qpdf);
+ report_errors();
+}
+
+static void test04(char const* infile,
+ char const* password,
+ char const* outfile)
+{
+ qpdf_set_ignore_xref_streams(qpdf, QPDF_TRUE);
+ qpdf_read(qpdf, infile, password);
+ qpdf_init_write(qpdf, outfile);
+ qpdf_set_static_ID(qpdf, QPDF_TRUE);
+ qpdf_write(qpdf);
+ report_errors();
+}
+
+static void test05(char const* infile,
+ char const* password,
+ char const* outfile)
+{
+ qpdf_read(qpdf, infile, password);
+ qpdf_init_write(qpdf, outfile);
+ qpdf_set_static_ID(qpdf, QPDF_TRUE);
+ qpdf_set_linearization(qpdf, QPDF_TRUE);
+ qpdf_write(qpdf);
+ report_errors();
+}
+
+static void test06(char const* infile,
+ char const* password,
+ char const* outfile)
+{
+ qpdf_read(qpdf, infile, password);
+ qpdf_init_write(qpdf, outfile);
+ qpdf_set_static_ID(qpdf, QPDF_TRUE);
+ qpdf_set_object_stream_mode(qpdf, QPDF_OBJECT_STREAM_GENERATE);
+ qpdf_write(qpdf);
+ report_errors();
+}
+
+static void test07(char const* infile,
+ char const* password,
+ char const* outfile)
+{
+ qpdf_read(qpdf, infile, password);
+ qpdf_init_write(qpdf, outfile);
+ qpdf_set_static_ID(qpdf, QPDF_TRUE);
+ qpdf_set_qdf_mode(qpdf, QPDF_TRUE);
+ qpdf_write(qpdf);
+ report_errors();
+}
+
+static void test08(char const* infile,
+ char const* password,
+ char const* outfile)
+{
+ qpdf_read(qpdf, infile, password);
+ qpdf_init_write(qpdf, outfile);
+ qpdf_set_static_ID(qpdf, QPDF_TRUE);
+ qpdf_set_qdf_mode(qpdf, QPDF_TRUE);
+ qpdf_set_suppress_original_object_IDs(qpdf, QPDF_TRUE);
+ qpdf_write(qpdf);
+ report_errors();
+}
+
+static void test09(char const* infile,
+ char const* password,
+ char const* outfile)
+{
+ qpdf_read(qpdf, infile, password);
+ qpdf_init_write(qpdf, outfile);
+ qpdf_set_static_ID(qpdf, QPDF_TRUE);
+ qpdf_set_stream_data_mode(qpdf, QPDF_STREAM_DATA_UNCOMPRESS);
+ qpdf_write(qpdf);
+ report_errors();
+}
+
int main(int argc, char* argv[])
{
char* whoami = 0;
@@ -67,6 +166,14 @@ int main(int argc, char* argv[])
outfile = argv[4];
fn = ((n == 1) ? test01 :
+ (n == 2) ? test02 :
+ (n == 3) ? test03 :
+ (n == 4) ? test04 :
+ (n == 5) ? test05 :
+ (n == 6) ? test06 :
+ (n == 7) ? test07 :
+ (n == 8) ? test08 :
+ (n == 9) ? test09 :
0);
if (fn == 0)
diff --git a/qpdf/qtest/qpdf.test b/qpdf/qtest/qpdf.test
index 53cb08f5..6b576191 100644
--- a/qpdf/qtest/qpdf.test
+++ b/qpdf/qtest/qpdf.test
@@ -298,6 +298,56 @@ check_pdf("no recompression",
show_ntests();
# ----------
+$td->notify("--- C API Tests ---");
+
+my @capi = (
+ [2, 'no options'],
+ [3, 'normalized content'],
+ [4, 'ignore xref streams'],
+ [5, 'linearized'],
+ [6, 'object streams'],
+ [7, 'qdf'],
+ [8, 'no original object ids'],
+ [9, 'uncompressed streams'],
+ );
+$n_tests += (2 * @capi) + 3;
+foreach my $d (@capi)
+{
+ my ($n, $description) = @$d;
+ my $outfile = $description;
+ $outfile =~ s/ /-/g;
+ $outfile = "c-$outfile.pdf";
+ $td->runtest($description,
+ {$td->COMMAND => "qpdf-ctest $n hybrid-xref.pdf '' a.pdf"},
+ {$td->STRING => "", $td->EXIT_STATUS => 0});
+ $td->runtest("check $description",
+ {$td->FILE => "a.pdf"},
+ {$td->FILE => $outfile});
+}
+$td->runtest("write to bad file name",
+ {$td->COMMAND => "qpdf-ctest 2 hybrid-xref.pdf '' /:a:/:b:"},
+ {$td->REGEXP => "error: open /:a:/:b:: .*",
+ $td->EXIT_STATUS => 0},
+ $td->NORMALIZE_NEWLINES);
+
+$td->runtest("write damaged to bad file name",
+ {$td->COMMAND => "qpdf-ctest 2 append-page-content-damaged.pdf" .
+ " '' /:a:/:b:"},
+ {$td->REGEXP =>
+ "warning:(?s:.*)\n" .
+ "error: open /:a:/:b:: .*",
+ $td->EXIT_STATUS => 0},
+ $td->NORMALIZE_NEWLINES);
+
+$td->runtest("write damaged",
+ {$td->COMMAND => "qpdf-ctest 2 append-page-content-damaged.pdf" .
+ " '' a.pdf"},
+ {$td->FILE => "c-write-damaged.out",
+ $td->EXIT_STATUS => 0},
+ $td->NORMALIZE_NEWLINES);
+
+show_ntests();
+# ----------
$td->notify("--- Object Stream Tests ---");
$n_tests += (36 * 4) + (12 * 2);
$n_compare_pdfs += 36;
diff --git a/qpdf/qtest/qpdf/c-ignore-xref-streams.pdf b/qpdf/qtest/qpdf/c-ignore-xref-streams.pdf
new file mode 100644
index 00000000..c3d17dce
--- /dev/null
+++ b/qpdf/qtest/qpdf/c-ignore-xref-streams.pdf
Binary files differ
diff --git a/qpdf/qtest/qpdf/c-linearized.pdf b/qpdf/qtest/qpdf/c-linearized.pdf
new file mode 100644
index 00000000..f25cd6a8
--- /dev/null
+++ b/qpdf/qtest/qpdf/c-linearized.pdf
Binary files differ
diff --git a/qpdf/qtest/qpdf/c-no-options.pdf b/qpdf/qtest/qpdf/c-no-options.pdf
new file mode 100644
index 00000000..4c777c61
--- /dev/null
+++ b/qpdf/qtest/qpdf/c-no-options.pdf
Binary files differ
diff --git a/qpdf/qtest/qpdf/c-no-original-object-ids.pdf b/qpdf/qtest/qpdf/c-no-original-object-ids.pdf
new file mode 100644
index 00000000..d46bf042
--- /dev/null
+++ b/qpdf/qtest/qpdf/c-no-original-object-ids.pdf
@@ -0,0 +1,1512 @@
+%PDF-1.5
+%¿÷¢þ
+%QDF-1.0
+
+1 0 obj
+<<
+ /Outlines 3 0 R
+ /PageLabels 15 0 R
+ /PageMode /UseOutlines
+ /Pages 16 0 R
+ /Type /Catalog
+>>
+endobj
+
+2 0 obj
+<<
+ /Type /ObjStm
+ /Length 3176
+ /N 13
+ /First 126
+>>
+stream
+3 0
+4 100
+5 335
+6 520
+7 718
+8 1044
+9 1262
+10 1508
+11 1715
+12 1922
+13 2115
+14 2329
+15 2535
+%% Object stream: object 3, index 0
+<<
+ /Count 6
+ /First 4 0 R
+ /Last 5 0 R
+ /Type /Outlines
+>>
+%% Object stream: object 4, index 1
+<<
+ /Count 4
+ /Dest [
+ 17 0 R
+ /XYZ
+ null
+ null
+ null
+ ]
+ /First 6 0 R
+ /Last 7 0 R
+ /Next 5 0 R
+ /Parent 3 0 R
+ /Title (Isís 1 -> 5: /XYZ null null null)
+ /Type /Outline
+>>
+%% Object stream: object 5, index 2
+<<
+ /Dest [
+ 18 0 R
+ /XYZ
+ 66
+ 756
+ 3
+ ]
+ /Parent 3 0 R
+ /Prev 4 0 R
+ /Title (Trepak 2 -> 15: /XYZ 66 756 3)
+ /Type /Outline
+>>
+%% Object stream: object 6, index 3
+<<
+ /Count -3
+ /Dest [
+ 19 0 R
+ /Fit
+ ]
+ /First 8 0 R
+ /Last 9 0 R
+ /Next 7 0 R
+ /Parent 4 0 R
+ /Title (Amanda 1.1 -> 11: /Fit)
+ /Type /Outline
+>>
+%% Object stream: object 7, index 4
+<<
+ /Count 2
+ /Dest [
+ 20 0 R
+ /FitH
+ 792
+ ]
+ /First 13 0 R
+ /Last 14 0 R
+ /Parent 4 0 R
+ /Prev 6 0 R
+ /Title <feff00530061006e00640079002000f703a303b103bd03b403b900f700200031002e00320020002d003e002000310033003a0020002f00460069007400480020003700390032>
+ /Type /Outline
+>>
+%% Object stream: object 8, index 5
+<<
+ /Count -2
+ /Dest [
+ 21 0 R
+ /FitV
+ 100
+ ]
+ /First 10 0 R
+ /Last 11 0 R
+ /Next 9 0 R
+ /Parent 6 0 R
+ /Title (Isosicle 1.1.1 -> 12: /FitV 100)
+ /Type /Outline
+>>
+%% Object stream: object 9, index 6
+<<
+ /Count 1
+ /Dest [
+ 21 0 R
+ /XYZ
+ null
+ null
+ null
+ ]
+ /First 12 0 R
+ /Last 12 0 R
+ /Parent 6 0 R
+ /Prev 8 0 R
+ /Title (Isosicle 1.1.2 -> 12: /XYZ null null null)
+ /Type /Outline
+>>
+%% Object stream: object 10, index 7
+<<
+ /Dest [
+ 22 0 R
+ /XYZ
+ null
+ null
+ null
+ ]
+ /Next 11 0 R
+ /Parent 8 0 R
+ /Title (Isosicle 1.1.1.1 -> 18: /XYZ null null null)
+ /Type /Outline
+>>
+%% Object stream: object 11, index 8
+<<
+ /Dest [
+ 23 0 R
+ /XYZ
+ null
+ null
+ null
+ ]
+ /Parent 8 0 R
+ /Prev 10 0 R
+ /Title (Isosicle 1.1.1.2 -> 19: /XYZ null null null)
+ /Type /Outline
+>>
+%% Object stream: object 12, index 9
+<<
+ /Dest [
+ 24 0 R
+ /XYZ
+ null
+ null
+ null
+ ]
+ /Parent 9 0 R
+ /Title (Isosicle 1.1.2.1 -> 22: /XYZ null null null)
+ /Type /Outline
+>>
+%% Object stream: object 13, index 10
+<<
+ /Dest [
+ 25 0 R
+ /FitR
+ 66
+ 714
+ 180
+ 770
+ ]
+ /Next 14 0 R
+ /Parent 7 0 R
+ /Title (Trepsichord 1.2.1 -> 1: /FitR 66 714 180 770)
+ /Type /Outline
+>>
+%% Object stream: object 14, index 11
+<<
+ /Dest [
+ 26 0 R
+ /XYZ
+ null
+ null
+ null
+ ]
+ /Parent 7 0 R
+ /Prev 13 0 R
+ /Title (Trepsicle 1.2.2 -> 0: /XYZ null null null)
+ /Type /Outline
+>>
+%% Object stream: object 15, index 12
+<<
+ /Nums [
+ 0
+ <<
+ /P ()
+ >>
+ 2
+ <<
+ /S /r
+ /St 1
+ >>
+ 7
+ <<
+ /P ()
+ >>
+ 9
+ <<
+ /S /r
+ /St 6
+ >>
+ 11
+ <<
+ /P ()
+ >>
+ 12
+ <<
+ /S /D
+ /St 2
+ >>
+ 15
+ <<
+ /S /D
+ /St 6
+ >>
+ 19
+ <<
+ /P ()
+ >>
+ 20
+ <<
+ /S /D
+ /St 12
+ >>
+ 22
+ <<
+ /S /D
+ /St 16059
+ >>
+ 23
+ <<
+ /S /r
+ /St 50
+ >>
+ 29
+ <<
+ /S /r
+ /St 54
+ >>
+ ]
+>>
+endstream
+endobj
+
+16 0 obj
+<<
+ /Count 30
+ /Kids [
+ 26 0 R
+ 25 0 R
+ 27 0 R
+ 28 0 R
+ 29 0 R
+ 17 0 R
+ 30 0 R
+ 31 0 R
+ 32 0 R
+ 33 0 R
+ 34 0 R
+ 19 0 R
+ 21 0 R
+ 20 0 R
+ 35 0 R
+ 18 0 R
+ 36 0 R
+ 37 0 R
+ 22 0 R
+ 23 0 R
+ 38 0 R
+ 39 0 R
+ 24 0 R
+ 40 0 R
+ 41 0 R
+ 42 0 R
+ 43 0 R
+ 44 0 R
+ 45 0 R
+ 46 0 R
+ ]
+ /Type /Pages
+>>
+endobj
+
+%% Page 6
+17 0 obj
+<<
+ /Contents 47 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 16
+18 0 obj
+<<
+ /Contents 51 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 12
+19 0 obj
+<<
+ /Contents 53 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 14
+20 0 obj
+<<
+ /Contents 55 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 13
+21 0 obj
+<<
+ /Contents 57 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 19
+22 0 obj
+<<
+ /Contents 59 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 20
+23 0 obj
+<<
+ /Contents 61 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 23
+24 0 obj
+<<
+ /Contents 63 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 2
+25 0 obj
+<<
+ /Contents 65 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 1
+26 0 obj
+<<
+ /Contents 67 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 3
+27 0 obj
+<<
+ /Contents 69 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 4
+28 0 obj
+<<
+ /Contents 71 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 5
+29 0 obj
+<<
+ /Contents 73 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 7
+30 0 obj
+<<
+ /Contents 75 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 8
+31 0 obj
+<<
+ /Contents 77 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 9
+32 0 obj
+<<
+ /Contents 79 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 10
+33 0 obj
+<<
+ /Contents 81 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 11
+34 0 obj
+<<
+ /Contents 83 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 15
+35 0 obj
+<<
+ /Contents 85 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 17
+36 0 obj
+<<
+ /Contents 87 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 18
+37 0 obj
+<<
+ /Contents 89 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 21
+38 0 obj
+<<
+ /Contents 91 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 22
+39 0 obj
+<<
+ /Contents 93 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 24
+40 0 obj
+<<
+ /Contents 95 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 25
+41 0 obj
+<<
+ /Contents 97 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 26
+42 0 obj
+<<
+ /Contents 99 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 27
+43 0 obj
+<<
+ /Contents 101 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 28
+44 0 obj
+<<
+ /Contents 103 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 29
+45 0 obj
+<<
+ /Contents 105 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 30
+46 0 obj
+<<
+ /Contents 107 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Contents for page 6
+47 0 obj
+<<
+ /Length 48 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 5) Tj
+ET
+endstream
+endobj
+
+48 0 obj
+46
+endobj
+
+49 0 obj
+<<
+ /BaseFont /Helvetica
+ /Encoding /WinAnsiEncoding
+ /Name /F1
+ /Subtype /Type1
+ /Type /Font
+>>
+endobj
+
+50 0 obj
+[
+ /PDF
+ /Text
+]
+endobj
+
+%% Contents for page 16
+51 0 obj
+<<
+ /Length 52 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 15) Tj
+ET
+endstream
+endobj
+
+52 0 obj
+47
+endobj
+
+%% Contents for page 12
+53 0 obj
+<<
+ /Length 54 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 11) Tj
+ET
+endstream
+endobj
+
+54 0 obj
+47
+endobj
+
+%% Contents for page 14
+55 0 obj
+<<
+ /Length 56 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 13) Tj
+ET
+endstream
+endobj
+
+56 0 obj
+47
+endobj
+
+%% Contents for page 13
+57 0 obj
+<<
+ /Length 58 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 12) Tj
+ET
+endstream
+endobj
+
+58 0 obj
+47
+endobj
+
+%% Contents for page 19
+59 0 obj
+<<
+ /Length 60 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 18) Tj
+ET
+endstream
+endobj
+
+60 0 obj
+47
+endobj
+
+%% Contents for page 20
+61 0 obj
+<<
+ /Length 62 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 19) Tj
+ET
+endstream
+endobj
+
+62 0 obj
+47
+endobj
+
+%% Contents for page 23
+63 0 obj
+<<
+ /Length 64 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 22) Tj
+ET
+endstream
+endobj
+
+64 0 obj
+47
+endobj
+
+%% Contents for page 2
+65 0 obj
+<<
+ /Length 66 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 1) Tj
+ET
+endstream
+endobj
+
+66 0 obj
+46
+endobj
+
+%% Contents for page 1
+67 0 obj
+<<
+ /Length 68 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 0) Tj
+ET
+endstream
+endobj
+
+68 0 obj
+46
+endobj
+
+%% Contents for page 3
+69 0 obj
+<<
+ /Length 70 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 2) Tj
+ET
+endstream
+endobj
+
+70 0 obj
+46
+endobj
+
+%% Contents for page 4
+71 0 obj
+<<
+ /Length 72 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 3) Tj
+ET
+endstream
+endobj
+
+72 0 obj
+46
+endobj
+
+%% Contents for page 5
+73 0 obj
+<<
+ /Length 74 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 4) Tj
+ET
+endstream
+endobj
+
+74 0 obj
+46
+endobj
+
+%% Contents for page 7
+75 0 obj
+<<
+ /Length 76 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 6) Tj
+ET
+endstream
+endobj
+
+76 0 obj
+46
+endobj
+
+%% Contents for page 8
+77 0 obj
+<<
+ /Length 78 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 7) Tj
+ET
+endstream
+endobj
+
+78 0 obj
+46
+endobj
+
+%% Contents for page 9
+79 0 obj
+<<
+ /Length 80 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 8) Tj
+ET
+endstream
+endobj
+
+80 0 obj
+46
+endobj
+
+%% Contents for page 10
+81 0 obj
+<<
+ /Length 82 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 9) Tj
+ET
+endstream
+endobj
+
+82 0 obj
+46
+endobj
+
+%% Contents for page 11
+83 0 obj
+<<
+ /Length 84 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 10) Tj
+ET
+endstream
+endobj
+
+84 0 obj
+47
+endobj
+
+%% Contents for page 15
+85 0 obj
+<<
+ /Length 86 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 14) Tj
+ET
+endstream
+endobj
+
+86 0 obj
+47
+endobj
+
+%% Contents for page 17
+87 0 obj
+<<
+ /Length 88 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 16) Tj
+ET
+endstream
+endobj
+
+88 0 obj
+47
+endobj
+
+%% Contents for page 18
+89 0 obj
+<<
+ /Length 90 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 17) Tj
+ET
+endstream
+endobj
+
+90 0 obj
+47
+endobj
+
+%% Contents for page 21
+91 0 obj
+<<
+ /Length 92 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 20) Tj
+ET
+endstream
+endobj
+
+92 0 obj
+47
+endobj
+
+%% Contents for page 22
+93 0 obj
+<<
+ /Length 94 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 21) Tj
+ET
+endstream
+endobj
+
+94 0 obj
+47
+endobj
+
+%% Contents for page 24
+95 0 obj
+<<
+ /Length 96 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 23) Tj
+ET
+endstream
+endobj
+
+96 0 obj
+47
+endobj
+
+%% Contents for page 25
+97 0 obj
+<<
+ /Length 98 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 24) Tj
+ET
+endstream
+endobj
+
+98 0 obj
+47
+endobj
+
+%% Contents for page 26
+99 0 obj
+<<
+ /Length 100 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 25) Tj
+ET
+endstream
+endobj
+
+100 0 obj
+47
+endobj
+
+%% Contents for page 27
+101 0 obj
+<<
+ /Length 102 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 26) Tj
+ET
+endstream
+endobj
+
+102 0 obj
+47
+endobj
+
+%% Contents for page 28
+103 0 obj
+<<
+ /Length 104 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 27) Tj
+ET
+endstream
+endobj
+
+104 0 obj
+47
+endobj
+
+%% Contents for page 29
+105 0 obj
+<<
+ /Length 106 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 28) Tj
+ET
+endstream
+endobj
+
+106 0 obj
+47
+endobj
+
+%% Contents for page 30
+107 0 obj
+<<
+ /Length 108 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 29) Tj
+ET
+endstream
+endobj
+
+108 0 obj
+47
+endobj
+
+109 0 obj
+<<
+ /Type /XRef
+ /Length 440
+ /W [ 1 2 1 ]
+ /Root 1 0 R
+ /Size 110
+ /ID [<31415926535897932384626433832795><31415926535897932384626433832795>]
+>>
+stream
+
+
+endstream
+endobj
+
+startxref
+14630
+%%EOF
diff --git a/qpdf/qtest/qpdf/c-normalized-content.pdf b/qpdf/qtest/qpdf/c-normalized-content.pdf
new file mode 100644
index 00000000..77e22068
--- /dev/null
+++ b/qpdf/qtest/qpdf/c-normalized-content.pdf
Binary files differ
diff --git a/qpdf/qtest/qpdf/c-object-streams.pdf b/qpdf/qtest/qpdf/c-object-streams.pdf
new file mode 100644
index 00000000..ae91ea7f
--- /dev/null
+++ b/qpdf/qtest/qpdf/c-object-streams.pdf
Binary files differ
diff --git a/qpdf/qtest/qpdf/c-qdf.pdf b/qpdf/qtest/qpdf/c-qdf.pdf
new file mode 100644
index 00000000..8eeb28a3
--- /dev/null
+++ b/qpdf/qtest/qpdf/c-qdf.pdf
@@ -0,0 +1,1576 @@
+%PDF-1.5
+%¿÷¢þ
+%QDF-1.0
+
+%% Original object ID: 1 0
+1 0 obj
+<<
+ /Outlines 3 0 R
+ /PageLabels 15 0 R
+ /PageMode /UseOutlines
+ /Pages 16 0 R
+ /Type /Catalog
+>>
+endobj
+
+2 0 obj
+<<
+ /Type /ObjStm
+ /Length 3496
+ /N 13
+ /First 150
+>>
+stream
+3 0
+4 124
+5 383
+6 592
+7 814
+8 1165
+9 1408
+10 1679
+11 1911
+12 2143
+13 2361
+14 2600
+15 2831
+%% Object stream: object 3, index 0; original object ID: 95
+<<
+ /Count 6
+ /First 4 0 R
+ /Last 5 0 R
+ /Type /Outlines
+>>
+%% Object stream: object 4, index 1; original object ID: 96
+<<
+ /Count 4
+ /Dest [
+ 17 0 R
+ /XYZ
+ null
+ null
+ null
+ ]
+ /First 6 0 R
+ /Last 7 0 R
+ /Next 5 0 R
+ /Parent 3 0 R
+ /Title (Isís 1 -> 5: /XYZ null null null)
+ /Type /Outline
+>>
+%% Object stream: object 5, index 2; original object ID: 97
+<<
+ /Dest [
+ 18 0 R
+ /XYZ
+ 66
+ 756
+ 3
+ ]
+ /Parent 3 0 R
+ /Prev 4 0 R
+ /Title (Trepak 2 -> 15: /XYZ 66 756 3)
+ /Type /Outline
+>>
+%% Object stream: object 6, index 3; original object ID: 98
+<<
+ /Count -3
+ /Dest [
+ 19 0 R
+ /Fit
+ ]
+ /First 8 0 R
+ /Last 9 0 R
+ /Next 7 0 R
+ /Parent 4 0 R
+ /Title (Amanda 1.1 -> 11: /Fit)
+ /Type /Outline
+>>
+%% Object stream: object 7, index 4; original object ID: 99
+<<
+ /Count 2
+ /Dest [
+ 20 0 R
+ /FitH
+ 792
+ ]
+ /First 13 0 R
+ /Last 14 0 R
+ /Parent 4 0 R
+ /Prev 6 0 R
+ /Title <feff00530061006e00640079002000f703a303b103bd03b403b900f700200031002e00320020002d003e002000310033003a0020002f00460069007400480020003700390032>
+ /Type /Outline
+>>
+%% Object stream: object 8, index 5; original object ID: 100
+<<
+ /Count -2
+ /Dest [
+ 21 0 R
+ /FitV
+ 100
+ ]
+ /First 10 0 R
+ /Last 11 0 R
+ /Next 9 0 R
+ /Parent 6 0 R
+ /Title (Isosicle 1.1.1 -> 12: /FitV 100)
+ /Type /Outline
+>>
+%% Object stream: object 9, index 6; original object ID: 101
+<<
+ /Count 1
+ /Dest [
+ 21 0 R
+ /XYZ
+ null
+ null
+ null
+ ]
+ /First 12 0 R
+ /Last 12 0 R
+ /Parent 6 0 R
+ /Prev 8 0 R
+ /Title (Isosicle 1.1.2 -> 12: /XYZ null null null)
+ /Type /Outline
+>>
+%% Object stream: object 10, index 7; original object ID: 102
+<<
+ /Dest [
+ 22 0 R
+ /XYZ
+ null
+ null
+ null
+ ]
+ /Next 11 0 R
+ /Parent 8 0 R
+ /Title (Isosicle 1.1.1.1 -> 18: /XYZ null null null)
+ /Type /Outline
+>>
+%% Object stream: object 11, index 8; original object ID: 103
+<<
+ /Dest [
+ 23 0 R
+ /XYZ
+ null
+ null
+ null
+ ]
+ /Parent 8 0 R
+ /Prev 10 0 R
+ /Title (Isosicle 1.1.1.2 -> 19: /XYZ null null null)
+ /Type /Outline
+>>
+%% Object stream: object 12, index 9; original object ID: 104
+<<
+ /Dest [
+ 24 0 R
+ /XYZ
+ null
+ null
+ null
+ ]
+ /Parent 9 0 R
+ /Title (Isosicle 1.1.2.1 -> 22: /XYZ null null null)
+ /Type /Outline
+>>
+%% Object stream: object 13, index 10; original object ID: 105
+<<
+ /Dest [
+ 25 0 R
+ /FitR
+ 66
+ 714
+ 180
+ 770
+ ]
+ /Next 14 0 R
+ /Parent 7 0 R
+ /Title (Trepsichord 1.2.1 -> 1: /FitR 66 714 180 770)
+ /Type /Outline
+>>
+%% Object stream: object 14, index 11; original object ID: 106
+<<
+ /Dest [
+ 26 0 R
+ /XYZ
+ null
+ null
+ null
+ ]
+ /Parent 7 0 R
+ /Prev 13 0 R
+ /Title (Trepsicle 1.2.2 -> 0: /XYZ null null null)
+ /Type /Outline
+>>
+%% Object stream: object 15, index 12; original object ID: 107
+<<
+ /Nums [
+ 0
+ <<
+ /P ()
+ >>
+ 2
+ <<
+ /S /r
+ /St 1
+ >>
+ 7
+ <<
+ /P ()
+ >>
+ 9
+ <<
+ /S /r
+ /St 6
+ >>
+ 11
+ <<
+ /P ()
+ >>
+ 12
+ <<
+ /S /D
+ /St 2
+ >>
+ 15
+ <<
+ /S /D
+ /St 6
+ >>
+ 19
+ <<
+ /P ()
+ >>
+ 20
+ <<
+ /S /D
+ /St 12
+ >>
+ 22
+ <<
+ /S /D
+ /St 16059
+ >>
+ 23
+ <<
+ /S /r
+ /St 50
+ >>
+ 29
+ <<
+ /S /r
+ /St 54
+ >>
+ ]
+>>
+endstream
+endobj
+
+%% Original object ID: 2 0
+16 0 obj
+<<
+ /Count 30
+ /Kids [
+ 26 0 R
+ 25 0 R
+ 27 0 R
+ 28 0 R
+ 29 0 R
+ 17 0 R
+ 30 0 R
+ 31 0 R
+ 32 0 R
+ 33 0 R
+ 34 0 R
+ 19 0 R
+ 21 0 R
+ 20 0 R
+ 35 0 R
+ 18 0 R
+ 36 0 R
+ 37 0 R
+ 22 0 R
+ 23 0 R
+ 38 0 R
+ 39 0 R
+ 24 0 R
+ 40 0 R
+ 41 0 R
+ 42 0 R
+ 43 0 R
+ 44 0 R
+ 45 0 R
+ 46 0 R
+ ]
+ /Type /Pages
+>>
+endobj
+
+%% Page 6
+%% Original object ID: 8 0
+17 0 obj
+<<
+ /Contents 47 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 16
+%% Original object ID: 18 0
+18 0 obj
+<<
+ /Contents 51 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 12
+%% Original object ID: 14 0
+19 0 obj
+<<
+ /Contents 53 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 14
+%% Original object ID: 16 0
+20 0 obj
+<<
+ /Contents 55 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 13
+%% Original object ID: 15 0
+21 0 obj
+<<
+ /Contents 57 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 19
+%% Original object ID: 21 0
+22 0 obj
+<<
+ /Contents 59 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 20
+%% Original object ID: 22 0
+23 0 obj
+<<
+ /Contents 61 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 23
+%% Original object ID: 25 0
+24 0 obj
+<<
+ /Contents 63 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 2
+%% Original object ID: 4 0
+25 0 obj
+<<
+ /Contents 65 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 1
+%% Original object ID: 3 0
+26 0 obj
+<<
+ /Contents 67 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 3
+%% Original object ID: 5 0
+27 0 obj
+<<
+ /Contents 69 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 4
+%% Original object ID: 6 0
+28 0 obj
+<<
+ /Contents 71 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 5
+%% Original object ID: 7 0
+29 0 obj
+<<
+ /Contents 73 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 7
+%% Original object ID: 9 0
+30 0 obj
+<<
+ /Contents 75 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 8
+%% Original object ID: 10 0
+31 0 obj
+<<
+ /Contents 77 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 9
+%% Original object ID: 11 0
+32 0 obj
+<<
+ /Contents 79 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 10
+%% Original object ID: 12 0
+33 0 obj
+<<
+ /Contents 81 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 11
+%% Original object ID: 13 0
+34 0 obj
+<<
+ /Contents 83 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 15
+%% Original object ID: 17 0
+35 0 obj
+<<
+ /Contents 85 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 17
+%% Original object ID: 19 0
+36 0 obj
+<<
+ /Contents 87 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 18
+%% Original object ID: 20 0
+37 0 obj
+<<
+ /Contents 89 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 21
+%% Original object ID: 23 0
+38 0 obj
+<<
+ /Contents 91 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 22
+%% Original object ID: 24 0
+39 0 obj
+<<
+ /Contents 93 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 24
+%% Original object ID: 26 0
+40 0 obj
+<<
+ /Contents 95 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 25
+%% Original object ID: 27 0
+41 0 obj
+<<
+ /Contents 97 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 26
+%% Original object ID: 28 0
+42 0 obj
+<<
+ /Contents 99 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 27
+%% Original object ID: 29 0
+43 0 obj
+<<
+ /Contents 101 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 28
+%% Original object ID: 30 0
+44 0 obj
+<<
+ /Contents 103 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 29
+%% Original object ID: 31 0
+45 0 obj
+<<
+ /Contents 105 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 30
+%% Original object ID: 32 0
+46 0 obj
+<<
+ /Contents 107 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 16 0 R
+ /Resources <<
+ /Font <<
+ /F1 49 0 R
+ >>
+ /ProcSet 50 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Contents for page 6
+%% Original object ID: 45 0
+47 0 obj
+<<
+ /Length 48 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 5) Tj
+ET
+endstream
+endobj
+
+48 0 obj
+46
+endobj
+
+%% Original object ID: 35 0
+49 0 obj
+<<
+ /BaseFont /Helvetica
+ /Encoding /WinAnsiEncoding
+ /Name /F1
+ /Subtype /Type1
+ /Type /Font
+>>
+endobj
+
+%% Original object ID: 36 0
+50 0 obj
+[
+ /PDF
+ /Text
+]
+endobj
+
+%% Contents for page 16
+%% Original object ID: 65 0
+51 0 obj
+<<
+ /Length 52 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 15) Tj
+ET
+endstream
+endobj
+
+52 0 obj
+47
+endobj
+
+%% Contents for page 12
+%% Original object ID: 57 0
+53 0 obj
+<<
+ /Length 54 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 11) Tj
+ET
+endstream
+endobj
+
+54 0 obj
+47
+endobj
+
+%% Contents for page 14
+%% Original object ID: 61 0
+55 0 obj
+<<
+ /Length 56 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 13) Tj
+ET
+endstream
+endobj
+
+56 0 obj
+47
+endobj
+
+%% Contents for page 13
+%% Original object ID: 59 0
+57 0 obj
+<<
+ /Length 58 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 12) Tj
+ET
+endstream
+endobj
+
+58 0 obj
+47
+endobj
+
+%% Contents for page 19
+%% Original object ID: 71 0
+59 0 obj
+<<
+ /Length 60 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 18) Tj
+ET
+endstream
+endobj
+
+60 0 obj
+47
+endobj
+
+%% Contents for page 20
+%% Original object ID: 73 0
+61 0 obj
+<<
+ /Length 62 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 19) Tj
+ET
+endstream
+endobj
+
+62 0 obj
+47
+endobj
+
+%% Contents for page 23
+%% Original object ID: 79 0
+63 0 obj
+<<
+ /Length 64 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 22) Tj
+ET
+endstream
+endobj
+
+64 0 obj
+47
+endobj
+
+%% Contents for page 2
+%% Original object ID: 37 0
+65 0 obj
+<<
+ /Length 66 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 1) Tj
+ET
+endstream
+endobj
+
+66 0 obj
+46
+endobj
+
+%% Contents for page 1
+%% Original object ID: 33 0
+67 0 obj
+<<
+ /Length 68 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 0) Tj
+ET
+endstream
+endobj
+
+68 0 obj
+46
+endobj
+
+%% Contents for page 3
+%% Original object ID: 39 0
+69 0 obj
+<<
+ /Length 70 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 2) Tj
+ET
+endstream
+endobj
+
+70 0 obj
+46
+endobj
+
+%% Contents for page 4
+%% Original object ID: 41 0
+71 0 obj
+<<
+ /Length 72 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 3) Tj
+ET
+endstream
+endobj
+
+72 0 obj
+46
+endobj
+
+%% Contents for page 5
+%% Original object ID: 43 0
+73 0 obj
+<<
+ /Length 74 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 4) Tj
+ET
+endstream
+endobj
+
+74 0 obj
+46
+endobj
+
+%% Contents for page 7
+%% Original object ID: 47 0
+75 0 obj
+<<
+ /Length 76 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 6) Tj
+ET
+endstream
+endobj
+
+76 0 obj
+46
+endobj
+
+%% Contents for page 8
+%% Original object ID: 49 0
+77 0 obj
+<<
+ /Length 78 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 7) Tj
+ET
+endstream
+endobj
+
+78 0 obj
+46
+endobj
+
+%% Contents for page 9
+%% Original object ID: 51 0
+79 0 obj
+<<
+ /Length 80 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 8) Tj
+ET
+endstream
+endobj
+
+80 0 obj
+46
+endobj
+
+%% Contents for page 10
+%% Original object ID: 53 0
+81 0 obj
+<<
+ /Length 82 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 9) Tj
+ET
+endstream
+endobj
+
+82 0 obj
+46
+endobj
+
+%% Contents for page 11
+%% Original object ID: 55 0
+83 0 obj
+<<
+ /Length 84 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 10) Tj
+ET
+endstream
+endobj
+
+84 0 obj
+47
+endobj
+
+%% Contents for page 15
+%% Original object ID: 63 0
+85 0 obj
+<<
+ /Length 86 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 14) Tj
+ET
+endstream
+endobj
+
+86 0 obj
+47
+endobj
+
+%% Contents for page 17
+%% Original object ID: 67 0
+87 0 obj
+<<
+ /Length 88 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 16) Tj
+ET
+endstream
+endobj
+
+88 0 obj
+47
+endobj
+
+%% Contents for page 18
+%% Original object ID: 69 0
+89 0 obj
+<<
+ /Length 90 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 17) Tj
+ET
+endstream
+endobj
+
+90 0 obj
+47
+endobj
+
+%% Contents for page 21
+%% Original object ID: 75 0
+91 0 obj
+<<
+ /Length 92 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 20) Tj
+ET
+endstream
+endobj
+
+92 0 obj
+47
+endobj
+
+%% Contents for page 22
+%% Original object ID: 77 0
+93 0 obj
+<<
+ /Length 94 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 21) Tj
+ET
+endstream
+endobj
+
+94 0 obj
+47
+endobj
+
+%% Contents for page 24
+%% Original object ID: 81 0
+95 0 obj
+<<
+ /Length 96 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 23) Tj
+ET
+endstream
+endobj
+
+96 0 obj
+47
+endobj
+
+%% Contents for page 25
+%% Original object ID: 83 0
+97 0 obj
+<<
+ /Length 98 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 24) Tj
+ET
+endstream
+endobj
+
+98 0 obj
+47
+endobj
+
+%% Contents for page 26
+%% Original object ID: 85 0
+99 0 obj
+<<
+ /Length 100 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 25) Tj
+ET
+endstream
+endobj
+
+100 0 obj
+47
+endobj
+
+%% Contents for page 27
+%% Original object ID: 87 0
+101 0 obj
+<<
+ /Length 102 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 26) Tj
+ET
+endstream
+endobj
+
+102 0 obj
+47
+endobj
+
+%% Contents for page 28
+%% Original object ID: 89 0
+103 0 obj
+<<
+ /Length 104 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 27) Tj
+ET
+endstream
+endobj
+
+104 0 obj
+47
+endobj
+
+%% Contents for page 29
+%% Original object ID: 91 0
+105 0 obj
+<<
+ /Length 106 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 28) Tj
+ET
+endstream
+endobj
+
+106 0 obj
+47
+endobj
+
+%% Contents for page 30
+%% Original object ID: 93 0
+107 0 obj
+<<
+ /Length 108 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 29) Tj
+ET
+endstream
+endobj
+
+108 0 obj
+47
+endobj
+
+109 0 obj
+<<
+ /Type /XRef
+ /Length 440
+ /W [ 1 2 1 ]
+ /Root 1 0 R
+ /Size 110
+ /ID [<31415926535897932384626433832795><31415926535897932384626433832795>]
+>>
+stream
+
+
+endstream
+endobj
+
+startxref
+16733
+%%EOF
diff --git a/qpdf/qtest/qpdf/c-uncompressed-streams.pdf b/qpdf/qtest/qpdf/c-uncompressed-streams.pdf
new file mode 100644
index 00000000..28b3aa0a
--- /dev/null
+++ b/qpdf/qtest/qpdf/c-uncompressed-streams.pdf
@@ -0,0 +1,434 @@
+%PDF-1.5
+%¿÷¢þ
+1 0 obj
+<< /Outlines 3 0 R /PageLabels 15 0 R /PageMode /UseOutlines /Pages 16 0 R /Type /Catalog >>
+endobj
+2 0 obj
+<< /Type /ObjStm /Length 2064 /N 13 /First 87 >>
+stream
+3 0 4 56 5 217 6 334 7 470 8 730 9 882 10 1053 11 1191 12 1329 13 1454 14 1594 15 1730
+<< /Count 6 /First 4 0 R /Last 5 0 R /Type /Outlines >>
+<< /Count 4 /Dest [ 17 0 R /XYZ null null null ] /First 6 0 R /Last 7 0 R /Next 5 0 R /Parent 3 0 R /Title (Isís 1 -> 5: /XYZ null null null) /Type /Outline >>
+<< /Dest [ 18 0 R /XYZ 66 756 3 ] /Parent 3 0 R /Prev 4 0 R /Title (Trepak 2 -> 15: /XYZ 66 756 3) /Type /Outline >>
+<< /Count -3 /Dest [ 19 0 R /Fit ] /First 8 0 R /Last 9 0 R /Next 7 0 R /Parent 4 0 R /Title (Amanda 1.1 -> 11: /Fit) /Type /Outline >>
+<< /Count 2 /Dest [ 20 0 R /FitH 792 ] /First 13 0 R /Last 14 0 R /Parent 4 0 R /Prev 6 0 R /Title <feff00530061006e00640079002000f703a303b103bd03b403b900f700200031002e00320020002d003e002000310033003a0020002f00460069007400480020003700390032> /Type /Outline >>
+<< /Count -2 /Dest [ 21 0 R /FitV 100 ] /First 10 0 R /Last 11 0 R /Next 9 0 R /Parent 6 0 R /Title (Isosicle 1.1.1 -> 12: /FitV 100) /Type /Outline >>
+<< /Count 1 /Dest [ 21 0 R /XYZ null null null ] /First 12 0 R /Last 12 0 R /Parent 6 0 R /Prev 8 0 R /Title (Isosicle 1.1.2 -> 12: /XYZ null null null) /Type /Outline >>
+<< /Dest [ 22 0 R /XYZ null null null ] /Next 11 0 R /Parent 8 0 R /Title (Isosicle 1.1.1.1 -> 18: /XYZ null null null) /Type /Outline >>
+<< /Dest [ 23 0 R /XYZ null null null ] /Parent 8 0 R /Prev 10 0 R /Title (Isosicle 1.1.1.2 -> 19: /XYZ null null null) /Type /Outline >>
+<< /Dest [ 24 0 R /XYZ null null null ] /Parent 9 0 R /Title (Isosicle 1.1.2.1 -> 22: /XYZ null null null) /Type /Outline >>
+<< /Dest [ 25 0 R /FitR 66 714 180 770 ] /Next 14 0 R /Parent 7 0 R /Title (Trepsichord 1.2.1 -> 1: /FitR 66 714 180 770) /Type /Outline >>
+<< /Dest [ 26 0 R /XYZ null null null ] /Parent 7 0 R /Prev 13 0 R /Title (Trepsicle 1.2.2 -> 0: /XYZ null null null) /Type /Outline >>
+<< /Nums [ 0 << /P () >> 2 << /S /r /St 1 >> 7 << /P () >> 9 << /S /r /St 6 >> 11 << /P () >> 12 << /S /D /St 2 >> 15 << /S /D /St 6 >> 19 << /P () >> 20 << /S /D /St 12 >> 22 << /S /D /St 16059 >> 23 << /S /r /St 50 >> 29 << /S /r /St 54 >> ] >>
+endstream
+endobj
+16 0 obj
+<< /Count 30 /Kids [ 26 0 R 25 0 R 27 0 R 28 0 R 29 0 R 17 0 R 30 0 R 31 0 R 32 0 R 33 0 R 34 0 R 19 0 R 21 0 R 20 0 R 35 0 R 18 0 R 36 0 R 37 0 R 22 0 R 23 0 R 38 0 R 39 0 R 24 0 R 40 0 R 41 0 R 42 0 R 43 0 R 44 0 R 45 0 R 46 0 R ] /Type /Pages >>
+endobj
+17 0 obj
+<< /Contents 47 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >>
+endobj
+18 0 obj
+<< /Contents 50 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >>
+endobj
+19 0 obj
+<< /Contents 51 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >>
+endobj
+20 0 obj
+<< /Contents 52 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >>
+endobj
+21 0 obj
+<< /Contents 53 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >>
+endobj
+22 0 obj
+<< /Contents 54 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >>
+endobj
+23 0 obj
+<< /Contents 55 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >>
+endobj
+24 0 obj
+<< /Contents 56 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >>
+endobj
+25 0 obj
+<< /Contents 57 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >>
+endobj
+26 0 obj
+<< /Contents 58 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >>
+endobj
+27 0 obj
+<< /Contents 59 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >>
+endobj
+28 0 obj
+<< /Contents 60 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >>
+endobj
+29 0 obj
+<< /Contents 61 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >>
+endobj
+30 0 obj
+<< /Contents 62 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >>
+endobj
+31 0 obj
+<< /Contents 63 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >>
+endobj
+32 0 obj
+<< /Contents 64 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >>
+endobj
+33 0 obj
+<< /Contents 65 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >>
+endobj
+34 0 obj
+<< /Contents 66 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >>
+endobj
+35 0 obj
+<< /Contents 67 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >>
+endobj
+36 0 obj
+<< /Contents 68 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >>
+endobj
+37 0 obj
+<< /Contents 69 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >>
+endobj
+38 0 obj
+<< /Contents 70 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >>
+endobj
+39 0 obj
+<< /Contents 71 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >>
+endobj
+40 0 obj
+<< /Contents 72 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >>
+endobj
+41 0 obj
+<< /Contents 73 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >>
+endobj
+42 0 obj
+<< /Contents 74 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >>
+endobj
+43 0 obj
+<< /Contents 75 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >>
+endobj
+44 0 obj
+<< /Contents 76 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >>
+endobj
+45 0 obj
+<< /Contents 77 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >>
+endobj
+46 0 obj
+<< /Contents 78 0 R /MediaBox [ 0 0 612 792 ] /Parent 16 0 R /Resources << /Font << /F1 48 0 R >> /ProcSet 49 0 R >> /Type /Page >>
+endobj
+47 0 obj
+<< /Length 46 >>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 5) Tj
+ET
+endstream
+endobj
+48 0 obj
+<< /BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font >>
+endobj
+49 0 obj
+[ /PDF /Text ]
+endobj
+50 0 obj
+<< /Length 47 >>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 15) Tj
+ET
+endstream
+endobj
+51 0 obj
+<< /Length 47 >>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 11) Tj
+ET
+endstream
+endobj
+52 0 obj
+<< /Length 47 >>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 13) Tj
+ET
+endstream
+endobj
+53 0 obj
+<< /Length 47 >>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 12) Tj
+ET
+endstream
+endobj
+54 0 obj
+<< /Length 47 >>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 18) Tj
+ET
+endstream
+endobj
+55 0 obj
+<< /Length 47 >>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 19) Tj
+ET
+endstream
+endobj
+56 0 obj
+<< /Length 47 >>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 22) Tj
+ET
+endstream
+endobj
+57 0 obj
+<< /Length 46 >>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 1) Tj
+ET
+endstream
+endobj
+58 0 obj
+<< /Length 46 >>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 0) Tj
+ET
+endstream
+endobj
+59 0 obj
+<< /Length 46 >>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 2) Tj
+ET
+endstream
+endobj
+60 0 obj
+<< /Length 46 >>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 3) Tj
+ET
+endstream
+endobj
+61 0 obj
+<< /Length 46 >>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 4) Tj
+ET
+endstream
+endobj
+62 0 obj
+<< /Length 46 >>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 6) Tj
+ET
+endstream
+endobj
+63 0 obj
+<< /Length 46 >>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 7) Tj
+ET
+endstream
+endobj
+64 0 obj
+<< /Length 46 >>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 8) Tj
+ET
+endstream
+endobj
+65 0 obj
+<< /Length 46 >>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 9) Tj
+ET
+endstream
+endobj
+66 0 obj
+<< /Length 47 >>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 10) Tj
+ET
+endstream
+endobj
+67 0 obj
+<< /Length 47 >>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 14) Tj
+ET
+endstream
+endobj
+68 0 obj
+<< /Length 47 >>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 16) Tj
+ET
+endstream
+endobj
+69 0 obj
+<< /Length 47 >>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 17) Tj
+ET
+endstream
+endobj
+70 0 obj
+<< /Length 47 >>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 20) Tj
+ET
+endstream
+endobj
+71 0 obj
+<< /Length 47 >>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 21) Tj
+ET
+endstream
+endobj
+72 0 obj
+<< /Length 47 >>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 23) Tj
+ET
+endstream
+endobj
+73 0 obj
+<< /Length 47 >>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 24) Tj
+ET
+endstream
+endobj
+74 0 obj
+<< /Length 47 >>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 25) Tj
+ET
+endstream
+endobj
+75 0 obj
+<< /Length 47 >>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 26) Tj
+ET
+endstream
+endobj
+76 0 obj
+<< /Length 47 >>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 27) Tj
+ET
+endstream
+endobj
+77 0 obj
+<< /Length 47 >>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 28) Tj
+ET
+endstream
+endobj
+78 0 obj
+<< /Length 47 >>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 29) Tj
+ET
+endstream
+endobj
+79 0 obj
+<< /Type /XRef /Length 320 /W [ 1 2 1 ] /Root 1 0 R /Size 80 /ID [<31415926535897932384626433832795><31415926535897932384626433832795>] >>
+stream
+
+
+y
+endstream
+endobj
+startxref
+10012
+%%EOF
diff --git a/qpdf/qtest/qpdf/c-write-damaged.out b/qpdf/qtest/qpdf/c-write-damaged.out
new file mode 100644
index 00000000..783c651b
--- /dev/null
+++ b/qpdf/qtest/qpdf/c-write-damaged.out
@@ -0,0 +1,3 @@
+warning: append-page-content-damaged.pdf: offset 0: file is damaged
+warning: append-page-content-damaged.pdf: can't find startxref
+warning: Attempting to reconstruct cross-reference table