aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf
diff options
context:
space:
mode:
Diffstat (limited to 'libqpdf')
-rw-r--r--libqpdf/QPDFWriter.cc8
-rw-r--r--libqpdf/QPDF_Stream.cc4
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)