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.