aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf/QPDFWriter.cc
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2017-07-29 01:18:57 +0200
committerJay Berkenbilt <ejb@ql.org>2017-07-29 01:19:11 +0200
commit3a1ff5ded9cf22e114991b5a49857b54f8e56b02 (patch)
tree3a3ef059215f619946c316fa6c94d31c6f6b076f /libqpdf/QPDFWriter.cc
parenta94a729fee946947db7a056f02b326dfce681128 (diff)
downloadqpdf-3a1ff5ded9cf22e114991b5a49857b54f8e56b02.tar.zst
Add option to preserve unreferenced objects
Diffstat (limited to 'libqpdf/QPDFWriter.cc')
-rw-r--r--libqpdf/QPDFWriter.cc18
1 files changed, 18 insertions, 0 deletions
diff --git a/libqpdf/QPDFWriter.cc b/libqpdf/QPDFWriter.cc
index 59e306fc..01309f43 100644
--- a/libqpdf/QPDFWriter.cc
+++ b/libqpdf/QPDFWriter.cc
@@ -58,6 +58,7 @@ QPDFWriter::init()
stream_data_mode = qpdf_s_compress;
qdf_mode = false;
precheck_streams = false;
+ preserve_unreferenced_objects = false;
static_id = false;
suppress_original_object_ids = false;
direct_stream_lengths = true;
@@ -184,6 +185,12 @@ QPDFWriter::setPrecheckStreams(bool val)
}
void
+QPDFWriter::setPreserveUnreferencedObjects(bool val)
+{
+ this->preserve_unreferenced_objects = val;
+}
+
+void
QPDFWriter::setMinimumPDFVersion(std::string const& version)
{
setMinimumPDFVersion(version, 0);
@@ -3074,6 +3081,17 @@ QPDFWriter::writeStandard()
writeHeader();
writeString(this->extra_header_text);
+ if (this->preserve_unreferenced_objects)
+ {
+ QTC::TC("qpdf", "QPDFWriter preserve unreferenced standard");
+ std::vector<QPDFObjectHandle> all = this->pdf.getAllObjects();
+ for (std::vector<QPDFObjectHandle>::iterator iter = all.begin();
+ iter != all.end(); ++iter)
+ {
+ enqueueObject(*iter);
+ }
+ }
+
// Put root first on queue.
QPDFObjectHandle trailer = getTrimmedTrailer();
enqueueObject(trailer.getKey("/Root"));