aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf/QPDFAcroFormDocumentHelper.cc
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2021-02-18 17:18:24 +0100
committerJay Berkenbilt <ejb@ql.org>2021-02-18 18:25:48 +0100
commitde8929a41ce093a0c21ca48b2342a73cf67a51f0 (patch)
tree929a3aa71f51d032e8ad898ab71440c81a0f3bf5 /libqpdf/QPDFAcroFormDocumentHelper.cc
parent5cec6b4c3df09b59464c9a492b60b86ffd0d5311 (diff)
downloadqpdf-de8929a41ce093a0c21ca48b2342a73cf67a51f0.tar.zst
Add QPDFAcroFormDocumentHelper::addFormField
Diffstat (limited to 'libqpdf/QPDFAcroFormDocumentHelper.cc')
-rw-r--r--libqpdf/QPDFAcroFormDocumentHelper.cc20
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()
{