diff options
Diffstat (limited to 'libqpdf')
-rw-r--r-- | libqpdf/QPDFWriter.cc | 8 | ||||
-rw-r--r-- | libqpdf/QPDF_Stream.cc | 4 |
2 files changed, 12 insertions, 0 deletions
diff --git a/libqpdf/QPDFWriter.cc b/libqpdf/QPDFWriter.cc index fee287bc..0cc0547d 100644 --- a/libqpdf/QPDFWriter.cc +++ b/libqpdf/QPDFWriter.cc @@ -1604,6 +1604,14 @@ QPDFWriter::unparseObject(QPDFObjectHandle object, int level, // Suppress /Length since we will write it manually object.removeKey("/Length"); + // If /DecodeParms is an empty list, remove it. + if (object.getKey("/DecodeParms").isArray() && + (0 == object.getKey("/DecodeParms").getArrayNItems())) + { + QTC::TC("qpdf", "QPDFWriter remove empty DecodeParms"); + object.removeKey("/DecodeParms"); + } + if (flags & f_filtered) { // We will supply our own filter and decode diff --git a/libqpdf/QPDF_Stream.cc b/libqpdf/QPDF_Stream.cc index 3733940d..3ddb1498 100644 --- a/libqpdf/QPDF_Stream.cc +++ b/libqpdf/QPDF_Stream.cc @@ -391,6 +391,10 @@ QPDF_Stream::filterable(std::vector<std::string>& filters, QPDFObjectHandle decode_obj = this->stream_dict.getKey("/DecodeParms"); std::vector<QPDFObjectHandle> decode_parms; + if (decode_obj.isArray() && (decode_obj.getArrayNItems() == 0)) + { + decode_obj = QPDFObjectHandle::newNull(); + } if (decode_obj.isArray()) { for (int i = 0; i < decode_obj.getArrayNItems(); ++i) |