diff options
Diffstat (limited to 'libqpdf/QPDFWriter.cc')
-rw-r--r-- | libqpdf/QPDFWriter.cc | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/libqpdf/QPDFWriter.cc b/libqpdf/QPDFWriter.cc index 116d493f..4397c3ad 100644 --- a/libqpdf/QPDFWriter.cc +++ b/libqpdf/QPDFWriter.cc @@ -1687,7 +1687,20 @@ QPDFWriter::unparseObject(QPDFObjectHandle object, int level, writeStringNoQDF(" "); writeString(QPDF_Name::normalizeName(key)); writeString(" "); - unparseChild(object.getKey(key), level + 1, child_flags); + if (key == "/Contents" && + object.hasKey("/Type") && + object.getKey("/Type").isName() && + object.getKey("/Type").getName() == "/Sig" && + object.hasKey("/ByteRange")) + { + QTC::TC("qpdf", "QPDFWriter no encryption sig contents"); + unparseChild(object.getKey(key), level + 1, + child_flags | f_hex_string); + } + else + { + unparseChild(object.getKey(key), level + 1, child_flags); + } writeStringQDF("\n"); } @@ -1882,6 +1895,10 @@ QPDFWriter::unparseObject(QPDFObjectHandle object, int level, val = QPDF_String(std::string(tmp, vlen)).unparse(); } } + else if (flags & f_hex_string) + { + val = QPDF_String(object.getStringValue()).unparse(true); + } else { val = object.unparseResolved(); |