diff --git a/ChangeLog b/ChangeLog index 17c7a1c4..a0838606 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2018-05-12 Jay Berkenbilt + + * In newline before endstream mode, an extra newline was not + inserted prior to the endstream that ends object streams. + Fixes #205. + 2018-04-15 Jay Berkenbilt * Arbitrarily limit the depth of data structures represented by diff --git a/libqpdf/QPDFWriter.cc b/libqpdf/QPDFWriter.cc index f277189a..77968078 100644 --- a/libqpdf/QPDFWriter.cc +++ b/libqpdf/QPDFWriter.cc @@ -1907,6 +1907,10 @@ QPDFWriter::writeObjectStream(QPDFObjectHandle object) pushEncryptionFilter(); writeBuffer(stream_buffer); popPipelineStack(); + if (this->m->newline_before_endstream) + { + writeString("\n"); + } writeString("endstream"); this->m->cur_data_key.clear(); closeObject(new_id); diff --git a/qpdf/qtest/qpdf.test b/qpdf/qtest/qpdf.test index b27b4c82..a3b6cb59 100644 --- a/qpdf/qtest/qpdf.test +++ b/qpdf/qtest/qpdf.test @@ -964,7 +964,7 @@ $td->runtest("check output", show_ntests(); # ---------- $td->notify("--- Newline before endstream ---"); -$n_tests += 10; +$n_tests += 12; # From issue 133, http://verapdf.org/software/ is an open source # package that can verify PDF/A compliance. This could potentially be @@ -975,6 +975,8 @@ foreach my $d ( ['--qdf', 'qdf', 'qdf'], ['--newline-before-endstream', 'newline', 'nl'], ['--qdf --newline-before-endstream', 'newline and qdf', 'nl-qdf'], + ['--object-streams=generate --newline-before-endstream', + 'newline and object streams', 'nl-objstm'], ) { my ($flags, $description, $suffix) = @$d; diff --git a/qpdf/qtest/qpdf/newline-before-endstream-nl-objstm.pdf b/qpdf/qtest/qpdf/newline-before-endstream-nl-objstm.pdf new file mode 100644 index 00000000..f412feda Binary files /dev/null and b/qpdf/qtest/qpdf/newline-before-endstream-nl-objstm.pdf differ