# Forms Extension

> Forms Extension: 2 components, 19 items.

- Product: Adobe PDF Library 21
- Language: Adobe C++
- Version: APDFL21.0.0PlusP1e
- HTML page: https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/formsextension
- Version index: https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/llms.txt

## General

### Functions (2)

#### GetFormsExtensionVersionNumber

```cpp
void GetFormsExtensionVersionNumber(FormsExtensionVersion version)
```

Header: `DLExtrasProcs.h:1425`

Retrieves the Forms Extension Version Number.

**Parameters**

- `version` ([`FormsExtensionVersion`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/formsextension.md#FormsExtensionVersion)): OUT - Structure that holds the version number sub-components.

**Returns:** `void`

#### IsFormsExtensionSupported

```cpp
ASBool IsFormsExtensionSupported(void)
```

Header: `DLExtrasProcs.h:1276`

Validate the Forms Extension for APDFL dependencies are present.

**Parameters**

- (unnamed) (`void`)

**Returns:** [`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/plugins.md#ASBool)

### Structures (1)

#### FormsExtensionVersion

```cpp
typedef  struct FormsExtensionVersionRec * FormsExtensionVersion
```

Header: `DLExtrasExpT.h:572`

## PDDoc

### Functions (12)

#### PDDocConvertXFAFieldsToAcroFormFields

```cpp
void PDDocConvertXFAFieldsToAcroFormFields(PDDoc doc, ASUns32 *pagesConverted)
```

Header: `DLExtrasProcs.h:1308`

Convert a XFA document into a document with only AcroForms. XFA content is not widely supported by PDF processors, converting this content transforms XFA fields into AcroForm fields which are more widely supported by PDF processors. All XFA fields are removed.

**Parameters**

- `doc` ([`PDDoc`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdlayer.md#PDDoc)): IN/OUT The PDF document object.
- `pagesConverted` ([`ASUns32 *`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/aslayer.md#ASUns32)): OUT The number of output pages created in the converted document.

**Returns:** `void`

#### PDDocExportAcroFormsData

```cpp
ASBool PDDocExportAcroFormsData(PDDoc doc, ASFileSys fileSys, ASPathName pathName, AcroFormExportType acroFormExportType)
```

Header: `DLExtrasProcs.h:1349`

Export the AcroForms data. AcroForms data is exported to a format that can later be imported into another AcroForms document.

**Parameters**

- `doc` ([`PDDoc`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdlayer.md#PDDoc)): IN The PDF document object.
- `fileSys` ([`ASFileSys`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/aslayer.md#ASFileSys)): IN The file system to write the data to (May be NULL, in which case the default file system will be used)
- `pathName` ([`ASPathName`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/aslayer.md#ASPathName)): OUT The path on disk of the file the AcroForms data is exported to.
- `acroFormExportType` ([`AcroFormExportType`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/formsextension.md#AcroFormExportType)): IN The format type the AcroForm data should be exported to. The supported types are XFDF, FDF, and XML.

**Returns:** [`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/plugins.md#ASBool)

#### PDDocExportXFAFormsData

```cpp
ASBool PDDocExportXFAFormsData(PDDoc doc, ASFileSys fileSys, ASPathName pathName, XFAFormExportType exportType)
```

Header: `DLExtrasProcs.h:1322`

Export the XFA Forms data. XFA forms data is exported to a format that can later be imported into another XFA document.

**Parameters**

- `doc` ([`PDDoc`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdlayer.md#PDDoc)): IN The PDF document object.
- `fileSys` ([`ASFileSys`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/aslayer.md#ASFileSys)): IN The file system to write the document to (May be NULL, in which case the default file system will be used)
- `pathName` ([`ASPathName`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/aslayer.md#ASPathName)): OUT The path on disk of the file the XFA form data is exported to.
- `exportType` ([`XFAFormExportType`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/formsextension.md#XFAFormExportType)): IN The format type the XFA data should be exported to. The supported types are XDP, XML, and XFD.

**Returns:** [`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/plugins.md#ASBool)

#### PDDocFlattenAcroFormFields

```cpp
void PDDocFlattenAcroFormFields(PDDoc doc)
```

Header: `DLExtrasProcs.h:1296`

Flatten an AcroForms document. Interactive AcroForm fields are flattened into static PDF page content. All AcroForm fields are removed.

**Parameters**

- `doc` ([`PDDoc`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdlayer.md#PDDoc))

**Returns:** `void`

#### PDDocFlattenNonFormAnnotations

```cpp
void PDDocFlattenNonFormAnnotations(PDDoc doc)
```

Header: `DLExtrasProcs.h:1407`

Flatten a Non-Form (no AcroForm, no XFA) document's Annotations. Annotations are flattened into static PDF page content.

**Parameters**

- `doc` ([`PDDoc`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdlayer.md#PDDoc)): IN/OUT The PDF document object.

**Returns:** `void`

#### PDDocFlattenXFAFields

```cpp
void PDDocFlattenXFAFields(PDDoc doc, ASUns32 *pagesOutput)
```

Header: `DLExtrasProcs.h:1288`

Flatten a XFA Document (Static or Dynamic). XFA content is not widely supported by PDF processors. Flattening this content transforms into static PDF page content that is part of typical PDF files that can easily be understood by PDF processors. All XFA fields are removed.

**Parameters**

- `doc` ([`PDDoc`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdlayer.md#PDDoc)): IN/OUT The PDF document object.
- `pagesOutput` ([`ASUns32 *`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/aslayer.md#ASUns32))

**Returns:** `void`

#### PDDocFlattenXFAFieldsAsIfPrinted

```cpp
void PDDocFlattenXFAFieldsAsIfPrinted(PDDoc doc, ASUns32 *pagesOutput)
```

Header: `DLExtrasProcs.h:1397`

Flatten a XFA Document (Static or Dynamic) as if printed. XFA content is not widely supported by PDF processors. Flattening this content transforms into static PDF page content that is part of typical PDF files that can easily be understood by PDF processors. All XFA fields are removed. The Flattened appearance will take into consideration how the document's appearance should appear when printed.

**Parameters**

- `doc` ([`PDDoc`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdlayer.md#PDDoc)): IN/OUT The PDF document object.
- `pagesOutput` ([`ASUns32 *`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/aslayer.md#ASUns32)): OUT The number of output pages created in the flattened document.

**Returns:** `void`

#### PDDocGetFormsType

```cpp
void PDDocGetFormsType(PDDoc doc, PDDocFormsType *formsType)
```

Header: `DLExtrasProcs.h:1417`

Returns the document's Forms Type. This method is more versatile than the related PDDocIsDynamicXFA() and PDDocIsStaticXFA() methods.

**Parameters**

- `doc` ([`PDDoc`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdlayer.md#PDDoc)): IN The PDF document object.
- `formsType` ([`PDDocFormsType *`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/formsextension.md#PDDocFormsType)): OUT The type of forms the document contains.

**Returns:** `void`

#### PDDocImportAcroFormsData

```cpp
ASBool PDDocImportAcroFormsData(PDDoc doc, ASFileSys fileSys, ASPathName pathName, AcroFormImportType acroFormImportType)
```

Header: `DLExtrasProcs.h:1363`

Import the AcroForms data. AcroForms data is imported from a supported format into the AcroForms document so its existing fields can be populated for example.

**Parameters**

- `doc` ([`PDDoc`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdlayer.md#PDDoc)): IN/OUT The PDF document object.
- `fileSys` ([`ASFileSys`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/aslayer.md#ASFileSys)): IN The file system to import the data from (May be NULL, in which case the default file system will be used)
- `pathName` ([`ASPathName`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/aslayer.md#ASPathName)): IN The path on disk of the AcroFormsdata file to be imported.
- `acroFormImportType` ([`AcroFormImportType`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/formsextension.md#AcroFormImportType)): IN The format type the data type should be imported to. The supported types are XFDF, FDF, and XML.

**Returns:** [`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/plugins.md#ASBool)

#### PDDocImportXFAFormsData

```cpp
ASBool PDDocImportXFAFormsData(PDDoc doc, ASFileSys fileSys, ASPathName pathName)
```

Header: `DLExtrasProcs.h:1335`

Import the XFA Forms data. XFA forms data is imported from a supported format into the XFA document so its existing fields can be populated for example.

**Parameters**

- `doc` ([`PDDoc`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdlayer.md#PDDoc)): IN/OUT The PDF document object.
- `fileSys` ([`ASFileSys`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/aslayer.md#ASFileSys)): IN The file system to import the document from (May be NULL, in which case the default file system will be used)
- `pathName` ([`ASPathName`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/aslayer.md#ASPathName)): IN The path on disk of the XFA form data file to be imported. The supported types are XDP, XML, and XFD.

**Returns:** [`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/plugins.md#ASBool)

#### PDDocIsDynamicXFA

```cpp
ASBool PDDocIsDynamicXFA(PDDoc doc)
```

Header: `DLExtrasProcs.h:1373`

Check if document is Dynamic XFA

**Parameters**

- `doc` ([`PDDoc`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdlayer.md#PDDoc)): IN The PDF document object.

**Returns:** [`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/plugins.md#ASBool)

#### PDDocIsStaticXFA

```cpp
ASBool PDDocIsStaticXFA(PDDoc doc)
```

Header: `DLExtrasProcs.h:1383`

Check if document is Static XFA

**Parameters**

- `doc` ([`PDDoc`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdlayer.md#PDDoc)): IN The PDF document object.

**Returns:** [`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/plugins.md#ASBool)

### Enums (4)

#### AcroFormExportType

Header: `DLExtrasExpT.h:542`

AcroForm Export Data type options.

**Values**

- `AcroFormExportTypeXFDF = 1`: XFDF (XML Forms Data Format) representing form field data.
- `AcroFormExportTypeFDF = 2`: FDF (Forms Data Format) representing form field data.
- `AcroFormExportTypeXML = 3`: XML (Extensible Markup Language) representing form field data.

#### AcroFormImportType

Header: `DLExtrasExpT.h:532`

AcroForm Import Data type options.

**Values**

- `AcroFormImportTypeXFDF = 1`: XFDF (XML Forms Data Format) representing form field data.
- `AcroFormImportTypeFDF = 2`: FDF (Forms Data Format) representing form field data.
- `AcroFormImportTypeXML = 3`: XML (Extensible Markup Language) representing form field data.

#### PDDocFormsType

Header: `DLExtrasExpT.h:553`

Document Forms Type options.

**Values**

- `PDDocFormsTypeNone = 1`: Document contains no Forms.
- `PDDocFormsTypeDynamicXFA = 2`: Document contains Dynamic XFA Forms.
- `PDDocFormsTypeStaticXFA = 3`: Document contains Static XFA Forms.
- `PDDocFormsTypeAcroForms = 4`: Document contains AcroForms.

#### XFAFormExportType

Header: `DLExtrasExpT.h:522`

XFA Form Export Data type options.

**Values**

- `XFAFormExportTypeXML = 1`: XML (Extensible Markup Language) representing form field data.
- `XFAFormExportTypeXFD = 2`: XFD (Extensible Forms Description language) representing form field data.
- `XFAFormExportTypeXDP = 3`: XDP (XML Data Package) representing form field data.
