diff options
author | Jay Berkenbilt <ejb@ql.org> | 2021-02-18 17:18:24 +0100 |
---|---|---|
committer | Jay Berkenbilt <ejb@ql.org> | 2021-02-18 18:25:48 +0100 |
commit | de8929a41ce093a0c21ca48b2342a73cf67a51f0 (patch) | |
tree | 929a3aa71f51d032e8ad898ab71440c81a0f3bf5 /libqpdf | |
parent | 5cec6b4c3df09b59464c9a492b60b86ffd0d5311 (diff) | |
download | qpdf-de8929a41ce093a0c21ca48b2342a73cf67a51f0.tar.zst |
Add QPDFAcroFormDocumentHelper::addFormField
Diffstat (limited to 'libqpdf')
-rw-r--r-- | libqpdf/QPDFAcroFormDocumentHelper.cc | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/libqpdf/QPDFAcroFormDocumentHelper.cc b/libqpdf/QPDFAcroFormDocumentHelper.cc index 0fcc81f6..9f800a8e 100644 --- a/libqpdf/QPDFAcroFormDocumentHelper.cc +++ b/libqpdf/QPDFAcroFormDocumentHelper.cc @@ -32,6 +32,26 @@ QPDFAcroFormDocumentHelper::hasAcroForm() return this->qpdf.getRoot().hasKey("/AcroForm"); } +void +QPDFAcroFormDocumentHelper::addFormField(QPDFFormFieldObjectHelper ff) +{ + invalidateCache(); + auto acroform = this->qpdf.getRoot().getKey("/AcroForm"); + if (! acroform.isDictionary()) + { + acroform = this->qpdf.makeIndirectObject( + QPDFObjectHandle::newDictionary()); + this->qpdf.getRoot().replaceKey("/AcroForm", acroform); + } + auto fields = acroform.getKey("/Fields"); + if (! fields.isArray()) + { + fields = QPDFObjectHandle::newArray(); + acroform.replaceKey("/Fields", fields); + } + fields.appendItem(ff.getObjectHandle()); +} + std::vector<QPDFFormFieldObjectHelper> QPDFAcroFormDocumentHelper::getFormFields() { |