diff options
author | Jay Berkenbilt <ejb@ql.org> | 2009-10-18 16:09:10 +0200 |
---|---|---|
committer | Jay Berkenbilt <ejb@ql.org> | 2009-10-18 16:09:10 +0200 |
commit | 4ccc9330a8144660af5ac8f392d1fb8cb77422f0 (patch) | |
tree | 8a429b252b804ccde1f04419c6113b21413a234f /libqpdf/QPDFWriter.cc | |
parent | 67e353e4e4a9207e26171502f44fb2efbf7848c1 (diff) | |
download | qpdf-4ccc9330a8144660af5ac8f392d1fb8cb77422f0.tar.zst |
only seed randon number generater once for aes-cbc, try to avoid compressing Metadata streams
git-svn-id: svn+q:///qpdf/trunk@818 71b93d88-0707-0410-a8cf-f5a4172ac649
Diffstat (limited to 'libqpdf/QPDFWriter.cc')
-rw-r--r-- | libqpdf/QPDFWriter.cc | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/libqpdf/QPDFWriter.cc b/libqpdf/QPDFWriter.cc index 6cfa6fb9..76567db0 100644 --- a/libqpdf/QPDFWriter.cc +++ b/libqpdf/QPDFWriter.cc @@ -860,6 +860,12 @@ QPDFWriter::unparseObject(QPDFObjectHandle object, int level, } QPDFObjectHandle stream_dict = object.getDict(); + bool is_metadata = false; + if (stream_dict.getKey("/Type").isName() && + (stream_dict.getKey("/Type").getName() == "/Metadata")) + { + is_metadata = true; + } bool filter = (this->stream_data_mode != s_preserve); if (this->stream_data_mode == s_compress) { @@ -878,7 +884,14 @@ QPDFWriter::unparseObject(QPDFObjectHandle object, int level, } bool normalize = false; bool compress = false; - if (this->normalize_content && normalized_streams.count(old_id)) + if (is_metadata && + ((! this->encrypted) || (this->encrypt_metadata == false))) + { + QTC::TC("qpdf", "QPDFWriter not compressing metadata"); + filter = true; + compress = false; + } + else if (this->normalize_content && normalized_streams.count(old_id)) { normalize = true; filter = true; @@ -907,10 +920,7 @@ QPDFWriter::unparseObject(QPDFObjectHandle object, int level, } this->cur_stream_length = stream_data.getPointer()->getSize(); - if (this->encrypted && - stream_dict.getKey("/Type").isName() && - (stream_dict.getKey("/Type").getName() == "/Metadata") && - (! this->encrypt_metadata)) + if (is_metadata && this->encrypted && (! this->encrypt_metadata)) { // Don't encrypt stream data for the metadata stream this->cur_data_key.clear(); |