diff options
author | Jay Berkenbilt <ejb@ql.org> | 2020-12-27 01:45:01 +0100 |
---|---|---|
committer | Jay Berkenbilt <ejb@ql.org> | 2020-12-28 18:58:19 +0100 |
commit | 12ecd2019a3186d11ebb6083b3813ce722fb2329 (patch) | |
tree | cce0595cc82bef7a66c2b8ed6d0e9bf726334500 /libqpdf/QPDFWriter.cc | |
parent | 3f9191a34456e79ec6d98bfe46546d9df9abdcba (diff) | |
download | qpdf-12ecd2019a3186d11ebb6083b3813ce722fb2329.tar.zst |
Add QPDFObjectHandle::setFilterOnWrite
Diffstat (limited to 'libqpdf/QPDFWriter.cc')
-rw-r--r-- | libqpdf/QPDFWriter.cc | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/libqpdf/QPDFWriter.cc b/libqpdf/QPDFWriter.cc index 7057930b..689fef74 100644 --- a/libqpdf/QPDFWriter.cc +++ b/libqpdf/QPDFWriter.cc @@ -1470,6 +1470,7 @@ QPDFWriter::willFilterStream(QPDFObjectHandle stream, { compress_stream = false; is_metadata = false; + QPDFObjGen old_og = stream.getObjGen(); QPDFObjectHandle stream_dict = stream.getDict(); @@ -1481,7 +1482,13 @@ QPDFWriter::willFilterStream(QPDFObjectHandle stream, bool filter = (stream.isDataModified() || this->m->compress_streams || this->m->stream_decode_level); - if (this->m->compress_streams) + bool filter_on_write = stream.getFilterOnWrite(); + if (! filter_on_write) + { + QTC::TC("qpdf", "QPDFWriter getFilterOnWrite false"); + filter = false; + } + if (filter_on_write && this->m->compress_streams) { // Don't filter if the stream is already compressed with // FlateDecode. This way we don't make it worse if the @@ -1502,7 +1509,7 @@ QPDFWriter::willFilterStream(QPDFObjectHandle stream, } bool normalize = false; bool uncompress = false; - if (is_metadata && + if (filter_on_write && is_metadata && ((! this->m->encrypted) || (this->m->encrypt_metadata == false))) { QTC::TC("qpdf", "QPDFWriter not compressing metadata"); @@ -1510,13 +1517,13 @@ QPDFWriter::willFilterStream(QPDFObjectHandle stream, compress_stream = false; uncompress = true; } - else if (this->m->normalize_content && + else if (filter_on_write && this->m->normalize_content && this->m->normalized_streams.count(old_og)) { normalize = true; filter = true; } - else if (filter && this->m->compress_streams) + else if (filter_on_write && filter && this->m->compress_streams) { compress_stream = true; QTC::TC("qpdf", "QPDFWriter compressing uncompressed stream"); |