c# save pdf : How to add bookmark in pdf software SDK dll winforms wpf azure web forms AcroJSGuide10-part331

Acrobat JavaScript Scripting Guide
101
Using Acrobat JavaScript in Forms
Forms Essentials
6
Validation Options
You may use validation to enforce valid ranges, values, or characters entered in form fields. 
The main reason to use validation is to ensure that users are only permitted to enter valid 
data into a form field. 
To apply validation to a field action, invoke the field’s 
setAction
method, and pass 
"Validate"
as the first parameter and a script containing a call to 
AFRange_Validate
as the second parameter. The function 
AFRange_Validate
is 
located in 
Javascripts\aform.js
, and requires 4 parameters: 
bGreaterThan
(boolean 
value), 
nGreaterThan
(first value in the range), 
bLessThan
(boolean value), and 
nLessThan
(last value in the range).
For example, the following code ensures that all values entered in the form field are from 0 
to 100, inclusive:
f.setAction( 
"Validate", 
‘AFRange_Validate(true, 0, true, 100)’
);
Calculation Options
Calculation options make it possible to automate mathematical calculations associated 
with form fields. To apply a calculation to a form field action, invoke the form field’s 
setAction
method, pass 
"Calculate"
as the first parameter, and pass a script 
containing a call to a calculation script as the second parameter.
If you would like to perform simple calculations on an array of form field values, you may 
use a convenient script already written for you called 
AFSimple_Calculate
in the 
second parameter. The function 
AFSimple_Calculate
is located in 
Javascripts\aform.js
, and requires 2 parameters: 
cFunction
(the type of calculation 
to be performed) and 
cFields
(a field list that may be separated by commas or spaces, or 
may be an array). The first parameter specifies the type of calculation, which may be a sum 
(
"SUM"
), product (
"PRD"
), average (
"AVG"
), minimum (
"MIN"
), or maximum (
"MAX"
).
For example, the following code calculates the sum of the values entered into two text 
areas on a form:
var arr = new Array("line.1", "line.2");
f.setAction( 
"Calculate", 
‘AFSimple_Calculate("SUM",arr)’
);
How to add bookmark in pdf - add, remove, update PDF bookmarks in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Empower Your C# Project with Rapid PDF Internal Navigation Via Bookmark and Outline
bookmarks pdf documents; create bookmarks pdf file
How to add bookmark in pdf - VB.NET PDF bookmark library: add, remove, update PDF bookmarks in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Empower Your VB.NET Project with Rapid PDF Internal Navigation Via Bookmark and Outline
create bookmark in pdf automatically; bookmark a pdf file
Using Acrobat JavaScript in Forms
Forms Essentials
6
102
Acrobat JavaScript Scripting Guide
Highlighting Required Form Fields
Some text fields on a form may not be left blank: these are called required form fields. It is 
helpful to the user to highlight them so that they can be easily recognized. To do this, 
create a Highlight annotation as shown in the following example:
this.addAnnot({
page: 2, 
strokeColor: color.yellow, 
type: "Highlight", 
quads: this.getPageNthWordQuads(2, 3), 
});
Alerting Users Automatically for Required Form Fields
A user action such as clicking a Submit button or leaving a page could trigger validation 
scripts detecting either bad input or blank form fields that alert the user to the fact that 
some required form fields require their attention. 
For example, suppose the user has forgotten to fill in the text field 
myText
and has clicked 
the Submit button. The following script would alert the user to the problem, and could be 
followed with code that highlights the text:
app.alert("You forgot the field shown in yellow.");
Making a Form Fillable
In order for a form to be fillable, its text fields or combo boxes must be formatted so that 
the user can edit them.
Enabling Typing
If you would like a text area to be enabled for typing, set its 
readonly
property to 
false
as shown in the following code:
f.readonly = false;
If you would like a combo box to be enabled for typing, set its 
editable
property to 
true
, as shown in the following code:
f.editable = true;
VB.NET PDF insert image library: insert images into PDF in vb.net
VB.NET PDF - Add Image to PDF Page in VB.NET. Guide VB.NET Programmers How to Add Images in PDF Document Using XDoc.PDF SDK for VB.NET.
pdf export bookmarks; adding bookmarks to pdf document
C# PDF Password Library: add, remove, edit PDF file password in C#
C# Sample Code: Add Password to PDF with Permission Settings Applied in C#.NET. This example shows how to add PDF file password with access permission setting.
excel hyperlink to pdf bookmark; bookmark pdf reader
Acrobat JavaScript Scripting Guide
103
Using Acrobat JavaScript in Forms
Forms Essentials
6
Setting the Hierarchy of Form Fields
The hierarchy of form fields is determined according to a naming strategy that uses "dot" 
notation. For example, suppose you have 4 radio buttons that all belong to the same group. 
The group could be named 
myGroup
. The 4 radio buttons would then be named 
myGroup.0
myGroup.1
myGroup.2
, and 
myGroup.3
. The convenience of this 
naming system becomes most apparent when you decide that all members of the group 
should have the same property characteristics. For example, to set the glyph style of all 4 
radio buttons, you can do this with one line of code as shown below:
var f = this.getField("myGroup");
f.style = style.ch; // glyph style for all radio buttons
This notation is certainly more convenient than typing in 4 nearly identical lines of code.
Suppose that you have 3 different groups, each of which has several radio buttons. You can 
extend the hierarchical naming to this situation as well. Suppose that you would like to be 
able to assign common property values to all 3 groups. To do this, you could create a parent 
name for all the groups, such as 
mySet
. The 3 groups would be named 
mySet.0
mySet.1
, and 
mySet.2
. Suppose the first group, 
mySet.0
, has 2 radio buttons in it. 
They would be named 
mySet.0.0
and 
mySet.0.1
. To set the glyph style for all 3 groups 
of radio buttons, you can do this, again, with just a single line of code as shown below:
var f = this.getField("mySet");
f.style = style.ch; // glyph style for all 3 groups
You can also differentiate the groups within the hierarchy. Suppose you would like to 
designate a yellow background color for the third set. You could do so with the following 
statements:
var f = this.getField("mySet.2");
f.fillColor = color.yellow; // affects only the 3rd group
Creating Forms From Scratch
Positioning Form Form Fields
Remember that form field positioning takes place in Rotated User Space, in which the origin 
of a page is located at the bottom left corner. This differs from Info Space and may require 
that you occasionally perform transformations.
For example, suppose that you use the Info panel to obtain the coordinates of a given 
rectangle. Use the 
doc
object’s 
getPageBox
method to obtain the coordinates in Rotated 
User Space for the page, and then subtract the Info Space y-coordinates from the page 
height provided by the 
getPageBox
method.
C# PDF Sticky Note Library: add, delete, update PDF note in C#.net
C#.NET PDF SDK - Add Sticky Note to PDF Page in C#.NET. Able to add notes to PDF using C# source code in Visual Studio .NET framework.
create bookmarks in pdf from excel; create bookmarks pdf files
C# PDF insert image Library: insert images into PDF in C#.net, ASP
C#.NET PDF SDK - Add Image to PDF Page in C#.NET. How to Insert & Add Image, Picture or Logo on PDF Page Using C#.NET. Add Image to PDF Page Using C#.NET.
how to bookmark a pdf file; create bookmarks in pdf reader
Using Acrobat JavaScript in Forms
Forms Essentials
6
104
Acrobat JavaScript Scripting Guide
If you are accustomed to calculating the positions of form fields from the top left corner of a 
page, the following example will serve as a template for obtaining the correct position. In 
this example, we will position a 1 inch by 2 inch form field 0.5 inches from the top of the 
page and 1 inch from the left side:
// 1 inch = 72 points
var inch = 72; 
// obtain the page coordinates in Rotated User Space
var aRect = this.getPageBox({nPage: 2}); 
// position the top left corner 1 inch from the left side
aRect[0] += 1 * inch; 
// make the rectangle 1 inch wide
aRect[2] = aRect[0] + 1*inch; 
// top left corner is 0.5 inch down from the top of the page
aRect[1] -= 0.5*inch; 
// make the rectangle 2 inches tall
aRect[3] = aRect[1] - 2*inch;
// draw the button
var f = this.addField("myButton", "button", 2, aRect);
Duplicating Form Fields
It may sometimes be useful to duplicate information typed in by the user in other pages of 
the document. For example, you might wish to display the user’s name on every page of 
the document.
To automate this, give all such form fields the same name and actions. Then whenever the 
user triggers a related action, the same information appears in all form fields containing 
that name.
To duplicate form fields in general, assign the same name and actions to each of them. In 
the example below, we will create duplicate text fields, each named 
myField
, on page 2 of 
the document, and we will set the background color of every instance to yellow:
for (var i = 0; i < 5; p++)
{
var aRect = [36, 36+100*i, 72, 144+100*i];
var f = this.addField("myField", "text", 2, aRect);
f.fillColor = yellow;
}
VB.NET PDF Password Library: add, remove, edit PDF file password
VB: Add Password to PDF with Permission Settings Applied. This VB.NET example shows how to add PDF file password with access permission setting.
create pdf with bookmarks from word; how to add bookmarks to a pdf
VB.NET Create PDF from Excel Library to convert xlsx, xls to PDF
to PDF. Image: Remove Image from PDF Page. Image Link: Edit URL. Bookmark: Edit Bookmark. Metadata: Edit, Delete Redact Pages. Annotation & Drawing. Add Sticky Note
how to create bookmarks in pdf file; bookmarks in pdf from word
Acrobat JavaScript Scripting Guide
105
Using Acrobat JavaScript in Forms
Forms Essentials
6
Creating Multiple Form Fields
The best approach to creating a row, column, or grid of form fields is to use array notation 
in combination with hierarchical naming.
For example, the following code creates a column of 3 text fields:
var myColumn = new Array(3);
myColumn[0] = "myFieldCol.name";
myColumn[1] = "myFieldCol.birthday";
myColumn[2] = "myFieldCol.ssn";
var aRect = [36, 36, 72, 144];
for (var i=0; i<myColumn.length; i++)
{
aRect[1] += 100; // move the next field down 100 points
aRect[3] += 100; // move the next field down 100 points
var f = this.addField(myColumn[i], "text", 0, aRect);
Creating Form Fields That Span Multiple Pages
From a programmatic standpoint, duplicating form fields across multiple pages requires 
the same steps as duplicating form fields in general (see Duplicating Form Fields). The only 
difference is specifying the page number.
To duplicate form fields in general, assign the same name and actions to each of them. In 
the example below, we will create duplicate text fields, each named 
myField
, on every 
page of the document, and we will set the background color of every instance to yellow:
for (var p = 0; p < this.numPages; p++)
{
var aRect = [36, 36, 72, 144];
var f = this.addField("myField", "text", p, aRect);
f.fillColor = yellow;
}
Defining the Tabbing Order
You may specify the tabbing order on a given page by invoking the 
doc
object’s 
setPageTabOrder
method, which requires two parameters: the page number and the 
order to be used.
There are three options for tabbing order: you may specify tabbing by rows (
"rows"
), 
columns (
"columns"
), or document structure (
"structure"
).
For example, the following code sets up tabbing by rows for page 2 of the document:
this.setPageTabOrder(2, "rows");
C# PDF Library SDK to view, edit, convert, process PDF file for C#
editing PDF document hyperlink (url) and quick navigation link in PDF bookmark. C#.NET: Edit PDF Metadata. PDF SDK for .NET allows you to read, add, edit, update
bookmark template pdf; add bookmark pdf
C# PDF Annotate Library: Draw, edit PDF annotation, markups in C#.
framework. Support to add flatten comments to PDF document online in ASPX webpage. Support C#.NET: Add Text to PDF Document. This page
excel print to pdf with bookmarks; creating bookmarks in pdf documents
Using Acrobat JavaScript in Forms
Forms Essentials
6
106
Acrobat JavaScript Scripting Guide
Defining Form Field Calculation Order
When you add a text field or combo box that has a calculation script to a document, the 
new form field’s name is appended to the calculation order array. When a calculation event 
occurs, the calculation script for each of the form fields in the array runs, beginning with the 
first element in the array (array index 0) and continuing in sequence to the end of the array.
If you would like one form field to have calculation precedence over another, you can 
change its calculation index, accessed through the 
field
object’s 
calcOrderIndex
property. A form field script with a lower calculation index executes first. The following 
code guarantees that the calculation script for form field 
a
will run before the one for form 
field 
b
:
b.calcOrderIndex = a.calcOrderIndex + 1;
Acrobat JavaScript Scripting Guide
107
Using Acrobat JavaScript in Forms
Forms Essentials
6
Making PDF Forms Web-Ready
PDF forms can be used in workflows that require the exchange of information over the 
Web. You can create forms that run in Web browsers, and can submit and retrieve 
information between the client and server by making a Submit button available in the 
form. The button can perform similar tasks to those of HTML scripting macros.
You will need a CGI application on the Web server that can facilitate the exchange of your 
form’s information with a database. The CGI application must be able to retrieve 
information from forms in HTML, FDF, or XML formats.
In order to enable your PDF forms for data exchange over the Web, be sure to name your 
form fields so that they match those in the CGI application. In addition, be sure to specify 
the export values for radio buttons and check boxes.
The client side form data may be posted to the server using the HTML, FDF, XFDF, or PDF 
formats. Note that the use of XFDF format results in the submission of XML-formatted data 
to the server, which will need an XML parser or library to read the XFDF data. The 
equivalent MIME types for all posted form data are shown below in Table 6.5.
Creating Submit Buttons
When you use the Button tool, use the 
MouseUp
trigger and select Submit a Form. You 
may specify which data format is used when you select the Export Format option. If it is 
necessary for the server to be able to recognize and reconstruct a digital signature, it is 
advisable that you choose the Incremental Changes to the PDF option.
Creating Reset Form Buttons
In this case, when you create the 
MouseUp
trigger, select Reset a Form. Now you will be 
able to specify which form fields are reset.
Creating Import Data Buttons
First set up an FDF file with common data. In this case, when you create the 
MouseUp
trigger, select Import Form Data.
T
ABLE
6.5
MIME Types for Data Formats
Data Format
MIME Type
HTML
application/x-www-form-urlencoded
FDF
application/vnd.fdf
XFDF
application/vnd.adobe.xfdf
PDF
application/pdf
XML
application/xml
Using Acrobat JavaScript in Forms
Forms Essentials
6
108
Acrobat JavaScript Scripting Guide
Defining CGI Export Values
If you are storing the form data in a database and the data is either different from the item 
designated by the form field (such as those in combo boxes or list boxes) or the form field is 
a radio button or check box (all of which must have different export values), then you will 
need to define CGI export values, which represents identifying information about the form 
field to the CGI application.
Using Custom JavaScripts in Forms
The most common uses for Acrobat JavaScript in enhancing the interactive behavior of 
forms are in formatting, calculating, and validating data. In addition, you may write custom 
scripts for different types of mouse actions, as well as database connectivity.
Introduction to XML Forms Architecture (XFA)
The XML Forms Architecture (XFA) is an XML-based architecture which supports the 
production of business form documents through the use of templates based on the XML 
language. Its features address a variety of workflow needs including dynamic reflow, 
dynamic actions based on user interaction or automated server events, headers, footers, 
and complex representations of forms capable of large-scale data processing.
XFA can be understood in terms of two major components: templates and content. The 
templates define presentation, calculation, and interaction rules, and are based on XML. 
Content is the static or dynamic data, stored in the document, that is bound to the 
templates.
Dynamic XFA indicates that the content will be defined later after binding to a template. 
This also means that the following is possible:
Form fields may be moved or resized.
Form fields automatically grow or shrink according to the amount of text added or 
removed.
As a form field grows, it can span multiple pages.
Repeating subforms may be spawned as needed, and page contents shift accordingly.
Elements on the page are shown or hidden as needed.
To take advantage of the rich forms functionality offered by the XFA plug-in, use Adobe 
LiveCycle Designer
®
to create or edit the templates and save your forms in the XML Data 
Package format (XDP) or as a PDF document. Use XDP if the data is processed by server 
applications, and PDF if the data is processed by Acrobat.
Acrobat JavaScript Scripting Guide
109
Using Acrobat JavaScript in Forms
Forms Essentials
6
Enabling Dynamic Layout and Rendering
In order to enable dynamic layout and rendering for a form, save it from LiveCycle Designer 
as a "Dynamic PDF Form File".
Growable Form Fields
The elements, which include Fields, Subforms, Areas, Content Areas, and Exclusion Groups, 
expand to fit the data they contain. They may relocate in response to changes in the 
location or extent of their containing elements, or if they flow together with other elements 
in the same container.
If the element reaches the nominal content region of the containing page, then it splits so 
that it may be contained across both pages.
Variable-Size Rows and Tables
Subforms may repeat to accommodate incoming data. For example, when importing a 
variable number of subforms containing entries for name, address, and telephone number, 
form fields need to be added or removed based on the volume of data. This means that the 
number of rows in a table may increase.
Multiple Customized Forms within a Form Based on User Input
Subforms may also be subject to conditions. For example, form fields for dependent 
children would become visible if the user checks a box indicating that there are dependent 
children. In addition, XFA allows multiple form fields with the same name and multiple 
copies of the same form.
Handling Image Data
Images are handled as data and are considered to have their own field type. There is 
automatic support for browsing images in all standard raster image formats (including 
PNG, GIF, TIFF, and JPEG).
Dynamic Tooltips
XFA forms support dynamic tooltips, including support for individual radio buttons in a 
group.
XFA-Specific JavaScript Methods
Acrobat JavaScript provides access to the XFA 
appModel
container, which provides the 
properties and methods indicated below in Table 6.6 and Table 6.7.
T
ABLE
6.6
appModel Properties
appModel Property
Description
aliasNode
The node represented by the alias for this model
all
Returns all nodes with the same name or class
appModelName
Returns xfa
Using Acrobat JavaScript in Forms
Forms Essentials
6
110
Acrobat JavaScript Scripting Guide
classAll
Returns all nodes with the same class name
classIndex
Returns the position of this node in the collection of 
nodes having the same class name
className
Returns the class name of the object
context
The current node (needed for resolveNode and 
resolveNodes)
id
The ID of the current node
index
Returns the position of this node in the collection of 
nodes having the same name
isContainer
Returns true if this is a container object
isNull
Returns true if the node has a null value
model
Returns the XFA model for this node
name
The name of this node
nodes
A list of child nodes for this node
ns
The namespace for this node (or XFAModel)
oneOfChild
Retrieves or sets the child that has the XFA::oneOfChild 
relationship to its parent
parent
Retrieves the parent of this node
somExpression
Retrieves the SOM expression for this node
this
Retrieves the current node (starting node for 
resolveNode and resolveNodes)
T
ABLE
6.6
appModel Properties
appModel Property
Description
Documents you may be interested
Documents you may be interested