Show / Hide Table of Contents

# Class FDFDoc

FDFDoc is a class representing Forms Data Format (FDF) documents. FDF is typically used when submitting form data to a server, receiving the response, and incorporating it into the interactive form. It can also be used to export form data to stand-alone files that can be stored, transmitted electronically, and imported back into the corresponding PDF interactive form. In addition, beginning in PDF 1.3, FDF can be used to define a container for annotations that are separate from the PDF document to which they apply.

##### Inheritance

object
FDFDoc

##### Implements

IDisposable

##### Inherited Members

object.Equals(object)
object.Equals(object, object)
object.GetHashCode()
object.GetType()
object.MemberwiseClone()
object.ReferenceEquals(object, object)
object.ToString()

###### Namespace: pdftron.FDF

###### Assembly: PDFTronDotNet.dll

##### Syntax

    public class FDFDoc : IDisposable

##### Remarks

While the constructor does not, a few methods in FDFDoc will cause it to count as a document for the consumption-based licensing if was not created through PDFDoc::FDFExtract(). Please consult individual API documentation for exact details.

### Constructors

#### FDFDoc()

Default constructor. Creates an empty FDF document.

##### Declaration

    public FDFDoc()

#### FDFDoc(byte[], int)

Open an existing FDF document from an InputStream.

##### Declaration

    public FDFDoc(byte[] buf, int buf_size)

##### Parameters

Type | Name | Description
--- | --- | ---
byte[] | buf | input stream containing a serialized document.
int | buf_size | the expected size of the input stream.

##### Remarks

Make sure to call InitSecurityHandler() after FDFDoc(...) for encrypted documents.

#### FDFDoc(string)

Create a new FDFDoc from XFDF input. Input can be either a XFDF file path, or the XFDF data itself.

##### Declaration

    public FDFDoc(string xfdf)

##### Parameters

Type | Name | Description
--- | --- | ---
string | xfdf | string containing either the file path to a XFDF file, or the XML buffer containing the XFDF.

#### FDFDoc(FDFDoc)

##### Declaration

    public FDFDoc(FDFDoc other)

##### Parameters

Type | Name | Description
--- | --- | ---
FDFDoc | other |

#### FDFDoc(Filter)

Open an existing FDF document from an InputStream.

##### Declaration

    public FDFDoc(Filter stream)

##### Parameters

Type | Name | Description
--- | --- | ---
Filter | stream | input stream containing a serialized document.

##### Remarks

Make sure to call InitSecurityHandler() after FDFDoc(...) for encrypted documents.

#### FDFDoc(SDFDoc)

Create a FDF document from an existing SDF/Cos document.

##### Declaration

    public FDFDoc(SDFDoc sdfdoc)

##### Parameters

Type | Name | Description
--- | --- | ---
SDFDoc | sdfdoc | An SDF document. Created FDFDoc will take the ownership of the low-level document.

### Methods

#### Close()

Close FDFDoc and release associated resources

##### Declaration

    public void Close()

#### CreateFromXFDF(string)

Create a new FDFDoc from XFDF input. Input can be either a XFDF file path, or the XFDF data itself.

##### Declaration

    public static FDFDoc CreateFromXFDF(string xfdf)

##### Parameters

Type | Name | Description
--- | --- | ---
string | xfdf | string containing either the file path to a XFDF file, or the XML buffer containing the XFDF.

##### Returns

Type | Description
--- | ---
FDFDoc | created FDFDoc

#### Destroy()

##### Declaration

    public void Destroy()

#### Dispose()

Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.

##### Declaration

    public void Dispose()

#### Dispose(bool)

##### Declaration

    protected void Dispose(bool disposing)

##### Parameters

Type | Name | Description
--- | --- | ---
bool | disposing |

#### FieldCreate(string, int)

Create a new interactive form FDFField.

##### Declaration

    public FDFField FieldCreate(string field_name, int type)

##### Parameters

Type | Name | Description
--- | --- | ---
string | field_name | the field_name
int | type | the field_type

##### Returns

Type | Description
--- | ---
FDFField | the fDF field

#### FieldCreate(string, int, string)

Create a FDFField with specified name, type and value

##### Declaration

    public FDFField FieldCreate(string field_name, int type, string field_value)

##### Parameters

Type | Name | Description
--- | --- | ---
string | field_name | the field_name
int | type | the field_type
string | field_value | the field_value

##### Returns

Type | Description
--- | ---
FDFField | the FDF field

#### FieldCreate(string, int, Obj)

Create a FDFField with specified name, type and string value

##### Declaration

    public FDFField FieldCreate(string field_name, int type, Obj field_value)

##### Parameters

Type | Name | Description
--- | --- | ---
string | field_name | the field_name
int | type | the field_type
Obj | field_value | the field_value

##### Returns

Type | Description
--- | ---
FDFField | the FDF field

#### ~FDFDoc()

Releases all resources used by the FDFDoc

##### Declaration

    protected ~FDFDoc()

#### GetFDF()

Get the FDF dictionary.

##### Declaration

    public Obj GetFDF()

##### Returns

Type | Description
--- | ---
Obj | the FDF dictionary located in "/Root" or NULL if dictionary is not present.

#### GetField(string)

field_name a string representing the fully qualified name of the field (e.g. "employee.name.first").

##### Declaration

    public FDFField GetField(string field_name)

##### Parameters

Type | Name | Description
--- | --- | ---
string | field_name | the field_name

##### Returns

Type | Description
--- | ---
FDFField | a FDFFieldIterator referring to the given interactive FDFField or if the field name was not found HasNext() will return false.

#### GetFieldIterator()

An interactive form (sometimes referred to as an AcroForm) is a collection of fields for gathering information interactively from the user. A FDF document may contain any number of fields appearing on any combination of pages, all of which make up a single, global interactive form spanning the entire document.

The following methods are used to access and manipulate Interactive form fields (sometimes referred to as AcroForms).

##### Declaration

    public FDFFieldIterator GetFieldIterator()

##### Returns

Type | Description
--- | ---
FDFFieldIterator | an iterator to the first Filed in the document.

##### Remarks

if the document has no AcroForms, `HasNext()`

#### GetFieldIterator(string)

Get the field iterator.

##### Declaration

    public FDFFieldIterator GetFieldIterator(string field_name)

##### Parameters

Type | Name | Description
--- | --- | ---
string | field_name | the field_name

##### Returns

Type | Description
--- | ---
FDFFieldIterator | the field iterator

#### GetID()

Get the ID entry from "/Root/FDF" dictionary.

##### Declaration

    public Obj GetID()

##### Returns

Type | Description
--- | ---
Obj | An object representing the ID entry in "/Root/FDF" dictionary.

#### GetPdfFileName()

Get the PDF document file that this FDF file was exported from or is intended to be imported into.

##### Declaration

    public string GetPdfFileName()

##### Returns

Type | Description
--- | ---
string | a String with the PDF document file name.

#### GetRoot()

Get the root.

##### Declaration

    public Obj GetRoot()

##### Returns

Type | Description
--- | ---
Obj | A dictionary representing the Cos root of the document (/Root entry within the trailer dictionary)

##### Remarks

This method will count as a document usage for consumption-based licensing if the current document has not yet been counted.

#### GetSDFDoc()

Get the SDFDoc object in FDFDoc

##### Declaration

    public SDFDoc GetSDFDoc()

##### Returns

Type | Description
--- | ---
SDFDoc | document's SDF/Cos document

##### Remarks

This method will count as a document usage for consumption-based licensing if the current document has not yet been counted.

#### GetTrailer()

Get the trailer.

##### Declaration

    public Obj GetTrailer()

##### Returns

Type | Description
--- | ---
Obj | A dictionary representing the Cos root of the document (document's trailer)

##### Remarks

This method will count as a document usage for consumption-based licensing if the current document has not yet been counted.

#### IsModified()

determine whether the document is modified

##### Declaration

    public bool IsModified()

##### Returns

Type | Description
--- | ---
bool | true if document was modified, false otherwise

#### MergeAnnots(string)

Merge annotations into FDF document from an XML command.

##### Declaration

    public void MergeAnnots(string command_file)

##### Parameters

Type | Name | Description
--- | --- | ---
string | command_file | the path to XML command file, or the XML command itself

#### MergeAnnots(string, string)

Merge annotations into FDF document from an XML command.

##### Declaration

    public void MergeAnnots(string command_file, string permitted_user)

##### Parameters

Type | Name | Description
--- | --- | ---
string | command_file | the path to XML command file, or the XML command itself
string | permitted_user | the user name of the permitted user

#### Save()

Saves the document to a memory buffer.

##### Declaration

    public byte[] Save()

##### Returns

Type | Description
--- | ---
byte[] |

##### Remarks

This method will count as a document usage for consumption-based licensing if the current document has not yet been counted.

#### Save(string)

Saves the document to a file.

If a full save is requested to the original path, the file is saved to a file system-determined temporary file, the old file is deleted, and the temporary file is renamed to path.

A full save with remove unused or linearization option may re-arrange object in the cross reference table. Therefore all pointers and references to document objects and resources should be re acquired in order to continue document editing.

In order to use incremental save the specified path must match original path and e_incremental flag bit should be set.

##### Declaration

    public void Save(string path)

##### Parameters

Type | Name | Description
--- | --- | ---
string | path | The full path name to which the file is saved.

##### Remarks

This method will count as a document usage for consumption-based licensing if the current document has not yet been counted.

#### SaveAsXFDF(string, XFDFExportOptions)

Save a FDF document in XFDF format.

##### Declaration

    public void SaveAsXFDF(string file_name, XFDFExportOptions options = null)

##### Parameters

Type | Name | Description
--- | --- | ---
string | file_name | the path
XFDFExportOptions | options |

#### SaveAsXFDF(XFDFExportOptions)

Save a FDF document into a XFDF string.

##### Declaration

    public string SaveAsXFDF(XFDFExportOptions options = null)

##### Parameters

Type | Name | Description
--- | --- | ---
XFDFExportOptions | options |

##### Returns

Type | Description
--- | ---
string | String containing the XFDF representation of the FDF document

#### SetID(Obj)

Set the ID entry in "/Root/FDF" dictionary.

##### Declaration

    public void SetID(Obj id)

##### Parameters

Type | Name | Description
--- | --- | ---
Obj | id | ID array object.

#### SetPdfFileName(string)

Set the PDF document file that this FDF file was exported from or is intended to be imported into.

##### Declaration

    public void SetPdfFileName(string filepath)

##### Parameters

Type | Name | Description
--- | --- | ---
string | filepath | pathname to the file.

### Implements

IDisposable