diff options
author | Jay Berkenbilt <ejb@ql.org> | 2019-01-02 03:27:18 +0100 |
---|---|---|
committer | Jay Berkenbilt <ejb@ql.org> | 2019-01-04 05:18:13 +0100 |
commit | e3144ac4177b7c38567f41a8e31a6c162d3b76f4 (patch) | |
tree | 94d2e557359b040cae83224a9c5e33f7cb46d7db /libqpdf/QPDFFormFieldObjectHelper.cc | |
parent | 26393f51373d95bb2fe5a99d1de9d04d8d7eb920 (diff) | |
download | qpdf-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.cc | 64 |
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) |