20enum class PdfAcroFormSigFlags
27class PODOFO_API PdfAcroForm final :
public PdfDictionaryElement
29 friend class PdfField;
30 friend class PdfDocument;
31 friend class PdfSigningContext;
32 friend class PdfSignature;
38 PdfAcroForm(PdfDocument & doc,
39 PdfAcroFormDefaulAppearance defaultAppearance = PdfAcroFormDefaulAppearance::ArialBlack);
43 PdfAcroForm(PdfObject& obj);
52 void SetNeedAppearances(
bool needAppearances);
60 bool GetNeedAppearances()
const;
65 PdfAcroFormSigFlags GetSigFlags()
const;
67 template <
typename TField>
68 TField& CreateField(
const std::string_view& name);
70 PdfField& CreateField(
const std::string_view& name, PdfFieldType fieldType);
78 PdfField& GetFieldAt(
unsigned index);
80 const PdfField& GetFieldAt(
unsigned index)
const;
82 PdfField& GetField(
const PdfReference& ref);
84 const PdfField& GetField(
const PdfReference& ref)
const;
88 void RemoveFieldAt(
unsigned index);
92 void RemoveField(
const PdfReference& ref);
94 unsigned GetFieldCount()
const;
97 using FieldList = std::vector<std::shared_ptr<PdfField>>;
99 template <
typename TObject,
typename TListIterator>
102 friend class PdfAcroForm;
104 using difference_type = void;
105 using value_type = TObject*;
106 using pointer = void;
107 using reference = void;
108 using iterator_category = std::forward_iterator_tag;
112 Iterator(
const TListIterator& iterator) : m_iterator(iterator) { }
114 Iterator(
const Iterator&) =
default;
115 Iterator& operator=(
const Iterator&) =
default;
116 bool operator==(
const Iterator& rhs)
const
118 return m_iterator == rhs.m_iterator;
120 bool operator!=(
const Iterator& rhs)
const
122 return m_iterator != rhs.m_iterator;
124 Iterator& operator++()
129 Iterator operator++(
int)
135 value_type operator*()
137 return (*m_iterator).get();
139 value_type operator->()
141 return (*m_iterator).get();
144 TListIterator m_iterator;
147 using iterator = Iterator<PdfField, FieldList::iterator>;
148 using const_iterator = Iterator<const PdfField, FieldList::const_iterator>;
153 const_iterator begin()
const;
154 const_iterator end()
const;
158 PdfField& CreateField(PdfObject& obj, PdfFieldType type);
159 PdfField& AddField(std::unique_ptr<PdfField>&& field);
160 std::shared_ptr<PdfField> GetFieldPtr(
const PdfReference& ref);
163 void SetSigFlags(PdfAcroFormSigFlags flags);
169 void init(PdfAcroFormDefaulAppearance defaultAppearance);
171 PdfArray* getFieldArray()
const;
175 PdfField& getField(
unsigned index)
const;
176 PdfField& getField(
const PdfReference& ref)
const;
178 void fixIndices(
unsigned index);
181 using FieldMap = std::map<PdfReference, unsigned>;
185 std::unique_ptr<FieldMap> m_fieldMap;
186 PdfArray* m_fieldArray;
189template<
typename TField>
190TField& PdfAcroForm::CreateField(
const std::string_view& name)
192 return static_cast<TField&
>(CreateField(name, PdfField::GetFieldType<TField>()));
197ENABLE_BITMASK_OPERATORS(PoDoFo::PdfAcroFormSigFlags);
Convenient type for char array storage and/or buffer with std::string compatibility.
Definition basetypes.h:30
All classes, functions, types and enums of PoDoFo are members of these namespace.
Definition basetypes.h:13
PdfAcroFormDefaulAppearance
Definition PdfAcroForm.h:15
@ None
Do not add a default appearance.
@ ArialBlack
Add a default appearance with Arial embedded and black text if no other DA key is present.