diff options
Diffstat (limited to 'libqpdf/QPDFObjectHandle.cc')
-rw-r--r-- | libqpdf/QPDFObjectHandle.cc | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/libqpdf/QPDFObjectHandle.cc b/libqpdf/QPDFObjectHandle.cc index ceb91630..f6ba3093 100644 --- a/libqpdf/QPDFObjectHandle.cc +++ b/libqpdf/QPDFObjectHandle.cc @@ -2877,6 +2877,28 @@ QPDFObjectHandle::copyObject(std::set<QPDFObjGen>& visited, } } +QPDFObjectHandle +QPDFObjectHandle::copyStream() +{ + assertStream(); + QPDFObjectHandle result = newStream(this->getOwningQPDF()); + QPDFObjectHandle dict = result.getDict(); + QPDFObjectHandle old_dict = getDict(); + for (auto& iter: QPDFDictItems(old_dict)) + { + if (iter.second.isIndirect()) + { + dict.replaceKey(iter.first, iter.second); + } + else + { + dict.replaceKey(iter.first, iter.second.shallowCopy()); + } + } + QPDF::StreamCopier::copyStreamData(getOwningQPDF(), result, *this); + return result; +} + void QPDFObjectHandle::makeDirect() { |