aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf/QPDFFormFieldObjectHelper.cc
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2019-01-02 03:27:18 +0100
committerJay Berkenbilt <ejb@ql.org>2019-01-04 05:18:13 +0100
commite3144ac4177b7c38567f41a8e31a6c162d3b76f4 (patch)
tree94d2e557359b040cae83224a9c5e33f7cb46d7db /libqpdf/QPDFFormFieldObjectHelper.cc
parent26393f51373d95bb2fe5a99d1de9d04d8d7eb920 (diff)
downloadqpdf-e3144ac4177b7c38567f41a8e31a6c162d3b76f4.tar.zst
Add form fields to json output
Also add some additional methods for detecting form field types to assist in the json creation and for later use.
Diffstat (limited to 'libqpdf/QPDFFormFieldObjectHelper.cc')
-rw-r--r--libqpdf/QPDFFormFieldObjectHelper.cc64
1 files changed, 64 insertions, 0 deletions
diff --git a/libqpdf/QPDFFormFieldObjectHelper.cc b/libqpdf/QPDFFormFieldObjectHelper.cc
index 283b632d..1a04742a 100644
--- a/libqpdf/QPDFFormFieldObjectHelper.cc
+++ b/libqpdf/QPDFFormFieldObjectHelper.cc
@@ -190,6 +190,70 @@ QPDFFormFieldObjectHelper::getQuadding()
return result;
}
+int
+QPDFFormFieldObjectHelper::getFlags()
+{
+ QPDFObjectHandle f = getInheritableFieldValue("/Ff");
+ return f.isInteger() ? f.getIntValue() : 0;
+}
+
+bool
+QPDFFormFieldObjectHelper::isText()
+{
+ return (getFieldType() == "/Tx");
+}
+
+bool
+QPDFFormFieldObjectHelper::isCheckbox()
+{
+ return ((getFieldType() == "/Btn") &&
+ ((getFlags() & (ff_btn_radio | ff_btn_pushbutton)) == 0));
+}
+
+bool
+QPDFFormFieldObjectHelper::isRadioButton()
+{
+ return ((getFieldType() == "/Btn") &&
+ ((getFlags() & ff_btn_radio) == ff_btn_radio));
+}
+
+bool
+QPDFFormFieldObjectHelper::isPushbutton()
+{
+ return ((getFieldType() == "/Btn") &&
+ ((getFlags() & ff_btn_pushbutton) == ff_btn_pushbutton));
+}
+
+bool
+QPDFFormFieldObjectHelper::isChoice()
+{
+ return (getFieldType() == "/Ch");
+}
+
+std::vector<std::string>
+QPDFFormFieldObjectHelper::getChoices()
+{
+ std::vector<std::string> result;
+ if (! isChoice())
+ {
+ return result;
+ }
+ QPDFObjectHandle opt = getInheritableFieldValue("/Opt");
+ if (opt.isArray())
+ {
+ size_t n = opt.getArrayNItems();
+ for (size_t i = 0; i < n; ++i)
+ {
+ QPDFObjectHandle item = opt.getArrayItem(i);
+ if (item.isString())
+ {
+ result.push_back(item.getUTF8Value());
+ }
+ }
+ }
+ return result;
+}
+
void
QPDFFormFieldObjectHelper::setFieldAttribute(
std::string const& key, QPDFObjectHandle value)