![]() |
#include <Field.h>
Public Types | |
enum | Type { e_button, e_check, e_radio, e_text, e_choice, e_signature, e_null } |
Interactive forms support the following field types:
| |
enum | Flag { e_read_only, e_required, e_no_export, e_pushbutton_flag, e_radio_flag, e_toggle_to_off, e_radios_in_unison, e_multiline, e_password, e_file_select, e_no_spellcheck, e_no_scroll, e_comb, e_rich_text, e_combo, e_edit, e_sort, e_multiselect, e_commit_on_sel_change } |
Flags specifying various characteristics of the fields. More... | |
enum | TextJustification { e_left_justified, e_centered, e_right_justified } |
Public Member Functions | |
Field (SDF::Obj field_dict) | |
Construct a PDF::Field from a SDF dictionary representing a terminal field node. | |
Field (const Field &p) | |
Field & | operator= (const Field &p) |
~Field () | |
bool | IsValid () const |
Type | GetType () const |
SDF::Obj | GetValue () |
UString | GetValueAsString () |
bool | GetValueAsBool () |
void | SetValue (const UString &value) |
Sets the value of the field (i.e. | |
void | SetValue (SDF::Obj value) |
void | SetValue (const char *value) |
void | SetValue (bool value) |
Sets the value of a check-box or radio-button field. | |
void | RefreshAppearance () |
Regenerates the appearance stream for the Widget Annotation containing variable text. | |
void | EraseAppearance () |
Removes any appearances associated with the field. | |
SDF::Obj | GetDefaultValue () |
UString | GetDefaultValueAsString () |
UString | GetName () |
UString | GetPartialName () |
void | Rename (const UString &field_name) |
Modifies the field name. | |
bool | IsAnnot () const |
bool | GetFlag (Flag flag) const |
void | SetFlag (Flag flag, bool value) |
Set the value of given FieldFlag. | |
TextJustification | GetJustification () |
void | SetJustification (TextJustification j) |
Sets the justification to be used in displaying the text field. | |
void | SetMaxLen (int max_len) |
Sets the maximum length of the field's text, in characters. | |
int | GetMaxLen () const |
void | Flatten (class Page page) |
Flatten/Merge existing form field appearances with the page content and remove widget annotation. | |
SDF::Obj | FindInheritedAttribute (const char *attrib) const |
Some of the Field attributes are designated as inheritable. | |
SDF::Obj | GetSDFObj () const |
operator bool () |
A PDF 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.
PDFNet fully supports reading, writing, and editing PDF forms and provides many utility methods so that work with forms is simple and efficient. Using PDFNet forms API arbitrary subsets of form fields can be imported or exported from the document, new forms can be created from scratch, and the appearance of existing forms can be modified.
In PDFNet Fields are accessed through FieldIterator-s. The list of all Fields present in the document can be traversed as follows:
FieldIterator itr = pdfdoc.GetFieldIterator(); for(; itr.HasNext(); itr.Next()) { Field field = itr.Current(); Console.WriteLine("Field name: {0}", field.GetName()); }
For a full sample, please refer to 'InteractiveForms' sample project.
To search field by name use FieldFind method. For example:
FieldIterator itr = pdfdoc.FieldFind("name"); if (itr.HasNext()) { Console.WriteLine("Field name: {0}", itr.Current().GetName()); } else { ...field was not found... }
If a given field name was not found or if the end of the field list was reached the iterator HasNext() will return false.
If you have a valid iterator you can access the Field using Current() method. For example: Field field = itr.Current();
Using Flatten(...) method it is possible to merge field appearances with the page content. Form 'flattening' refers to the operation that changes active form fields into a static area that is part of the PDF document, just like the other text and images in the document. A completely flattened PDF form does not have any widget annotations or interactive fields.
Interactive forms support the following field types:
They include pushbuttons, check-boxes, and radio buttons.
Flags specifying various characteristics of the fields.
Field flags common to all field types: ----------------------------------------------
Field flags specific to radio buttons: ----------------------------------------------
Field flags specific to text fields: ----------------------------------------------
Field flags specific to choice fields: ----------------------------------------------
pdftron::PDF::Field::Field | ( | SDF::Obj | field_dict | ) |
Construct a PDF::Field from a SDF dictionary representing a terminal field node.
pdftron::PDF::Field::Field | ( | const Field & | p | ) |
pdftron::PDF::Field::~Field | ( | ) |
bool pdftron::PDF::Field::IsValid | ( | ) | const |
Referenced by operator bool().
Type pdftron::PDF::Field::GetType | ( | ) | const |
SDF::Obj pdftron::PDF::Field::GetValue | ( | ) |
UString pdftron::PDF::Field::GetValueAsString | ( | ) |
bool pdftron::PDF::Field::GetValueAsBool | ( | ) |
void pdftron::PDF::Field::SetValue | ( | const UString & | value | ) |
Sets the value of the field (i.e.
the value of the field's /V key). The format of field's value varies depending on the field type.
value | the new field value. |
Alternatively, you can delete "AP" entry from the Widget annotation and set "NeedAppearances" flag in AcroForm dictionary (i.e. doc.GetAcroForm().Put("NeedAppearances", Obj.CreateBool(true)); ) This will force viewer application to auto-generate new field appearances every time the document is opened.
Yet another option is to generate a custom annotation appearance using ElementBuilder and ElementWriter and then set the "AP" entry in the widget dictionary to the new appearance stream. This functionality is useful in applications that need advanced control over how the form fields are rendered.
void pdftron::PDF::Field::SetValue | ( | SDF::Obj | value | ) |
void pdftron::PDF::Field::SetValue | ( | const char * | value | ) |
void pdftron::PDF::Field::SetValue | ( | bool | value | ) |
Sets the value of a check-box or radio-button field.
value | If true, the filed will be set to 'True', if false the field will be set to 'False'. |
void pdftron::PDF::Field::RefreshAppearance | ( | ) |
Regenerates the appearance stream for the Widget Annotation containing variable text.
Call this method if you modified field's value and would like to update field's appearance.
void pdftron::PDF::Field::EraseAppearance | ( | ) |
Removes any appearances associated with the field.
SDF::Obj pdftron::PDF::Field::GetDefaultValue | ( | ) |
UString pdftron::PDF::Field::GetDefaultValueAsString | ( | ) |
UString pdftron::PDF::Field::GetName | ( | ) |
UString pdftron::PDF::Field::GetPartialName | ( | ) |
void pdftron::PDF::Field::Rename | ( | const UString & | field_name | ) |
Modifies the field name.
field_name | a string representing the fully qualified name of the field (e.g. "employee.name.first"). |
bool pdftron::PDF::Field::IsAnnot | ( | ) | const |
bool pdftron::PDF::Field::GetFlag | ( | Flag | flag | ) | const |
void pdftron::PDF::Field::SetFlag | ( | Flag | flag, | |
bool | value | |||
) |
Set the value of given FieldFlag.
TextJustification pdftron::PDF::Field::GetJustification | ( | ) |
void pdftron::PDF::Field::SetJustification | ( | TextJustification | j | ) |
Sets the justification to be used in displaying the text field.
void pdftron::PDF::Field::SetMaxLen | ( | int | max_len | ) |
Sets the maximum length of the field's text, in characters.
int pdftron::PDF::Field::GetMaxLen | ( | ) | const |
void pdftron::PDF::Field::Flatten | ( | class Page | page | ) |
Flatten/Merge existing form field appearances with the page content and remove widget annotation.
Form 'flattening' refers to the operation that changes active form fields into a static area that is part of the PDF document, just like the other text and images in the document. A completely flattened PDF form does not have any widget annotations or interactive fields.
SDF::Obj pdftron::PDF::Field::FindInheritedAttribute | ( | const char * | attrib | ) | const |
Some of the Field attributes are designated as inheritable.
If such an attribute is omitted from a Field object, its value is inherited from an ancestor node in the Field tree. If the attribute is a required one, a value must be supplied in an ancestor node; if it is optional and no inherited value is specified, the default value should be used.
The function walks up the Field inheritance tree in search for specified attribute.
SDF::Obj pdftron::PDF::Field::GetSDFObj | ( | ) | const |
pdftron::PDF::Field::operator bool | ( | ) | [inline] |