diff options
author | Jay Berkenbilt <ejb@ql.org> | 2018-01-31 22:45:52 +0100 |
---|---|---|
committer | Jay Berkenbilt <ejb@ql.org> | 2018-02-19 02:18:40 +0100 |
commit | ebd5ed63decb90e26ae9129164214f9d7d684621 (patch) | |
tree | a4d8960a1c9f270315f9c9c3fff884b0198d9087 /qpdf | |
parent | a0fd8875aabb244d35e2ddf785f546c336ed9622 (diff) | |
download | qpdf-ebd5ed63decb90e26ae9129164214f9d7d684621.tar.zst |
Add option to save pass 1 of lineariziation
This is useful only for debugging the linearization code.
Diffstat (limited to 'qpdf')
-rw-r--r-- | qpdf/qpdf.cc | 16 | ||||
-rw-r--r-- | qpdf/qtest/qpdf.test | 13 | ||||
-rw-r--r-- | qpdf/qtest/qpdf/minimal-linearize-pass1.pdf | bin | 0 -> 1274 bytes | |||
-rw-r--r-- | qpdf/qtest/qpdf/minimal-linearized.pdf | bin | 0 -> 1310 bytes |
4 files changed, 28 insertions, 1 deletions
diff --git a/qpdf/qpdf.cc b/qpdf/qpdf.cc index 183d6d19..1c56a345 100644 --- a/qpdf/qpdf.cc +++ b/qpdf/qpdf.cc @@ -153,6 +153,7 @@ struct Options bool qdf_mode; bool preserve_unreferenced_objects; bool newline_before_endstream; + std::string linearize_pass1; std::string min_version; std::string force_version; bool show_npages; @@ -391,6 +392,8 @@ familiar with the PDF file format or who are PDF developers.\n\ --preserve-unreferenced preserve unreferenced objects\n\ --newline-before-endstream always put a newline before endstream\n\ --qdf turns on \"QDF mode\" (below)\n\ +--linearize-pass1=file write intermediate pass of linearized file\n\ + for debugging\n\ --min-version=version sets the minimum PDF version of the output file\n\ --force-version=version forces this to be the PDF version of the output file\n\ \n\ @@ -1531,6 +1534,15 @@ static void parse_options(int argc, char* argv[], Options& o) { o.newline_before_endstream = true; } + else if (strcmp(arg, "linearize-pass1") == 0) + { + if (parameter == 0) + { + usage("--linearize-pass1 be given as" + "--linearize-pass1=filename"); + } + o.linearize_pass1 = parameter; + } else if (strcmp(arg, "min-version") == 0) { if (parameter == 0) @@ -2214,6 +2226,10 @@ static void set_writer_options(QPDF& pdf, Options& o, QPDFWriter& w) { w.setLinearization(true); } + if (! o.linearize_pass1.empty()) + { + w.setLinearizationPass1Filename(o.linearize_pass1); + } if (o.object_stream_set) { w.setObjectStreamMode(o.object_stream_mode); diff --git a/qpdf/qtest/qpdf.test b/qpdf/qtest/qpdf.test index b4d926e2..f0dde70f 100644 --- a/qpdf/qtest/qpdf.test +++ b/qpdf/qtest/qpdf.test @@ -240,7 +240,7 @@ foreach my $d (@bug_tests) show_ntests(); # ---------- $td->notify("--- Miscellaneous Tests ---"); -$n_tests += 93; +$n_tests += 96; $td->runtest("qpdf version", {$td->COMMAND => "qpdf --version"}, @@ -252,6 +252,17 @@ $td->runtest("C API: qpdf version", $td->EXIT_STATUS => 0}, $td->NORMALIZE_NEWLINES); +$td->runtest("linearize pass 1 file", + {$td->COMMAND => "qpdf --linearize --static-id" . + " --linearize-pass1=b.pdf minimal.pdf a.pdf"}, + {$td->STRING => "", $td->EXIT_STATUS => 0}); +$td->runtest("check output", + {$td->FILE => "a.pdf"}, + {$td->FILE => "minimal-linearized.pdf"}); +$td->runtest("check pass1 file", + {$td->FILE => "b.pdf"}, + {$td->FILE => "minimal-linearize-pass1.pdf"}); + foreach (my $i = 1; $i <= 3; ++$i) { $td->runtest("misc tests", diff --git a/qpdf/qtest/qpdf/minimal-linearize-pass1.pdf b/qpdf/qtest/qpdf/minimal-linearize-pass1.pdf Binary files differnew file mode 100644 index 00000000..e851063a --- /dev/null +++ b/qpdf/qtest/qpdf/minimal-linearize-pass1.pdf diff --git a/qpdf/qtest/qpdf/minimal-linearized.pdf b/qpdf/qtest/qpdf/minimal-linearized.pdf Binary files differnew file mode 100644 index 00000000..15f643d4 --- /dev/null +++ b/qpdf/qtest/qpdf/minimal-linearized.pdf |