diff options
author | Jay Berkenbilt <ejb@ql.org> | 2021-02-21 22:06:58 +0100 |
---|---|---|
committer | Jay Berkenbilt <ejb@ql.org> | 2021-02-21 23:13:09 +0100 |
commit | a9ae8cadc66daf631f6cbfe7fc3c7c602ac665d8 (patch) | |
tree | 0b38abc0fb2fbdcb64d2a3c959a9b9b6ec92a11f /libqpdf/QPDFPageObjectHelper.cc | |
parent | a76decd2d59f8d23791013d822e65b4363d450cd (diff) | |
download | qpdf-a9ae8cadc66daf631f6cbfe7fc3c7c602ac665d8.tar.zst |
Add transformAnnotations and fix flattenRotations to use it
Diffstat (limited to 'libqpdf/QPDFPageObjectHelper.cc')
-rw-r--r-- | libqpdf/QPDFPageObjectHelper.cc | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/libqpdf/QPDFPageObjectHelper.cc b/libqpdf/QPDFPageObjectHelper.cc index 748d865d..18ac4d02 100644 --- a/libqpdf/QPDFPageObjectHelper.cc +++ b/libqpdf/QPDFPageObjectHelper.cc @@ -7,6 +7,7 @@ #include <qpdf/QPDFExc.hh> #include <qpdf/QPDFMatrix.hh> #include <qpdf/QIntC.hh> +#include <qpdf/QPDFAcroFormDocumentHelper.hh> class ContentProvider: public QPDFObjectHandle::StreamDataProvider { @@ -1081,6 +1082,12 @@ QPDFPageObjectHelper::placeFormXObject( void QPDFPageObjectHelper::flattenRotation() { + flattenRotation(nullptr); +} + +void +QPDFPageObjectHelper::flattenRotation(QPDFAcroFormDocumentHelper* afdh) +{ QPDF* qpdf = this->oh.getOwningQPDF(); if (! qpdf) { @@ -1206,4 +1213,26 @@ QPDFPageObjectHelper::flattenRotation() QTC::TC("qpdf", "QPDFPageObjectHelper flatten inherit rotate"); this->oh.replaceKey("/Rotate", QPDFObjectHandle::newInteger(0)); } + + QPDFObjectHandle annots = this->oh.getKey("/Annots"); + if (annots.isArray()) + { + std::vector<QPDFObjectHandle> new_annots; + std::vector<QPDFObjectHandle> new_fields; + std::set<QPDFObjGen> old_fields; + PointerHolder<QPDFAcroFormDocumentHelper> afdhph; + if (! afdh) + { + afdhph = new QPDFAcroFormDocumentHelper(*qpdf); + afdh = afdhph.getPointer(); + } + afdh->transformAnnotations( + annots, new_annots, new_fields, old_fields, cm); + afdh->removeFormFields(old_fields); + for (auto const& f: new_fields) + { + afdh->addFormField(QPDFFormFieldObjectHelper(f)); + } + this->oh.replaceKey("/Annots", QPDFObjectHandle::newArray(new_annots)); + } } |