22enum class PdfAcroFormSigFlags
29class PODOFO_API PdfAcroForm final :
public PdfDictionaryElement
31 friend class PdfField;
32 friend class PdfDocument;
33 friend class PdfSigningContext;
34 friend class PdfSignature;
41 PdfAcroForm(PdfDocument & doc,
42 PdfAcroFormDefaulAppearance defaultAppearance = PdfAcroFormDefaulAppearance::ArialBlack);
47 PdfAcroForm(PdfObject& obj);
57 void SetNeedAppearances(
bool needAppearances);
66 bool GetNeedAppearances()
const;
70 PdfAcroFormSigFlags GetSigFlags()
const;
72 template <
typename TField>
73 TField& CreateField(
const std::string_view& name);
75 PdfField& CreateField(
const std::string_view& name, PdfFieldType fieldType);
84 PdfField& GetFieldAt(
unsigned index);
86 const PdfField& GetFieldAt(
unsigned index)
const;
88 PdfField& GetField(
const PdfReference& ref);
90 const PdfField& GetField(
const PdfReference& ref)
const;
95 void RemoveFieldAt(
unsigned index);
100 void RemoveField(
const PdfReference& ref);
102 unsigned GetFieldCount()
const;
105 using FieldList = std::vector<std::shared_ptr<PdfField>>;
107 template <
typename TObject,
typename TListIterator>
110 friend class PdfAcroForm;
112 using difference_type = void;
113 using value_type = TObject*;
114 using pointer = void;
115 using reference = void;
116 using iterator_category = std::forward_iterator_tag;
120 Iterator(
const TListIterator& iterator) : m_iterator(iterator) { }
122 Iterator(
const Iterator&) =
default;
123 Iterator& operator=(
const Iterator&) =
default;
124 bool operator==(
const Iterator& rhs)
const
126 return m_iterator == rhs.m_iterator;
128 bool operator!=(
const Iterator& rhs)
const
130 return m_iterator != rhs.m_iterator;
132 Iterator& operator++()
137 Iterator operator++(
int)
143 value_type operator*()
145 return (*m_iterator).get();
147 value_type operator->()
149 return (*m_iterator).get();
152 TListIterator m_iterator;
155 using iterator = Iterator<PdfField, FieldList::iterator>;
156 using const_iterator = Iterator<const PdfField, FieldList::const_iterator>;
161 const_iterator begin()
const;
162 const_iterator end()
const;
166 PdfField& CreateField(PdfObject& obj, PdfFieldType type);
167 PdfField& AddField(std::unique_ptr<PdfField>&& field);
168 std::shared_ptr<PdfField> GetFieldPtr(
const PdfReference& ref);
171 void SetSigFlags(PdfAcroFormSigFlags flags);
178 void init(PdfAcroFormDefaulAppearance defaultAppearance);
180 PdfArray* getFieldArray()
const;
184 PdfField& getField(
unsigned index)
const;
185 PdfField& getField(
const PdfReference& ref)
const;
187 void fixIndices(
unsigned index);
190 using FieldMap = std::map<PdfReference, unsigned>;
194 std::unique_ptr<FieldMap> m_fieldMap;
195 PdfArray* m_fieldArray;
198template<
typename TField>
199TField& PdfAcroForm::CreateField(
const std::string_view& name)
201 return static_cast<TField&
>(CreateField(name, PdfField::GetFieldType<TField>()));
206ENABLE_BITMASK_OPERATORS(PoDoFo::PdfAcroFormSigFlags);
Convenient type for char array storage and/or buffer with std::string compatibility.
Definition basetypes.h:38
SPDX-FileCopyrightText: (C) 2022 Francesco Pretto ceztko@gmail.com SPDX-License-Identifier: LGPL-2....
Definition basetypes.h:16
PdfAcroFormDefaulAppearance
Definition PdfAcroForm.h:17
@ None
Do not add a default appearrance.
@ ArialBlack
Add a default appearance with Arial embedded and black text if no other DA key is present.