summaryrefslogtreecommitdiffstats
path: root/libqpdf/QPDFObjectHandle.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libqpdf/QPDFObjectHandle.cc')
-rw-r--r--libqpdf/QPDFObjectHandle.cc22
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()
{