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