form property

PdfForm get form

Gets the interactive form of the document.

Implementation

PdfForm get form {
  if (_helper.isLoadedDocument) {
    if (_form == null) {
      if (_helper.catalog.containsKey(PdfDictionaryProperties.acroForm)) {
        final IPdfPrimitive? formDictionary = PdfCrossTable.dereference(
          _helper.catalog[PdfDictionaryProperties.acroForm],
        );
        if (formDictionary is PdfDictionary) {
          _form = PdfFormHelper.internal(_helper.crossTable, formDictionary);
          if (_form != null && _form!.fields.count != 0) {
            _helper.catalog.form = _form;
            List<int>? widgetReference;
            if (PdfFormHelper.getHelper(_form!).crossTable!.document !=
                null) {
              for (
                int i = 0;
                i <
                    PdfFormHelper.getHelper(
                      _form!,
                    ).crossTable!.document!.pages.count;
                i++
              ) {
                final PdfPage page =
                    PdfFormHelper.getHelper(
                      _form!,
                    ).crossTable!.document!.pages[i];
                widgetReference ??=
                    PdfPageHelper.getHelper(page).getWidgetReferences();
                if (widgetReference.isNotEmpty) {
                  PdfPageHelper.getHelper(
                    page,
                  ).createAnnotations(widgetReference);
                }
              }
              if (widgetReference != null) {
                widgetReference.clear();
              }
              if (!PdfFormHelper.getHelper(_form!).formHasKids) {
                PdfFormFieldCollectionHelper.getHelper(
                  _form!.fields,
                ).createFormFieldsFromWidgets(_form!.fields.count);
              }
            }
          }
        }
      } else {
        _form = PdfFormHelper.internal(_helper.crossTable);
        _helper.catalog.setProperty(
          PdfDictionaryProperties.acroForm,
          PdfReferenceHolder(_form),
        );
        _helper.catalog.form = _form;
        return _form!;
      }
    } else {
      return _form!;
    }
  } else {
    return _helper.catalog.form ??= PdfForm();
  }
  return _form!;
}