diff options
author | Jay Berkenbilt <ejb@ql.org> | 2021-02-21 12:35:53 +0100 |
---|---|---|
committer | Jay Berkenbilt <ejb@ql.org> | 2021-02-21 12:36:30 +0100 |
commit | 92fbc6fdf56bad6aff8c9f3f1a3032d5ad36ec51 (patch) | |
tree | 583522ecd2468ef78421fb91a99d866098c12625 /libqpdf/QPDFObjectHandle.cc | |
parent | 60afe4142e4399b12f21aced476df7ef719008b9 (diff) | |
download | qpdf-92fbc6fdf56bad6aff8c9f3f1a3032d5ad36ec51.tar.zst |
QPDFObjectHandle::copyStream
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() { |