Acrobat JavaScript Scripting Guide
111
Using Acrobat JavaScript in Forms
Forms Essentials
6
T
ABLE
6.7
XFA appModel Methods
appModel Method
Description
applyXSL
Performs an XSL transformation of the current node
assignNode
Sets the value of the node, and creates one if necessary
clearErrorList
Clears the current list of errors
clone
Clones a node (and its subtree if specified)
createNode
Creates a new XFA node based on a valid classname
getAttribute
Retrieves a specified attribute value
getElement
Retrieves a specified property element
isCompatibleNS
Determines if two namespaces are equivalent
isPropertySpecified
Checks if a specific property has been defined for the 
node
loadXML
Loads and appends the current XML document to the 
node
resolveNode
Obtains the node corresponding to the SOM 
expression
resolveNodes
Obtains the XFATreeList corresponding to the SOM 
expression
saveXML
Saves the current node to a string
setAttribute
Sets a specified attribute value
setElement
Sets a specified property element
Pdf reader with bookmarks - 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
creating bookmarks pdf files; bookmark pdf acrobat
Pdf reader with bookmarks - 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
delete bookmarks pdf; how to add bookmarks to pdf document
Using Acrobat JavaScript in Forms
Forms Essentials
6
112
Acrobat JavaScript Scripting Guide
The XFA DOM model contains a root object that consists of either a 
treeList
or a 
Tree
treeList
consists of a list of nodes (which is why it is sometimes called a 
NodeList
). 
Tree
consists of a hierarchical structure of nodes, each of which may contain content, a 
model, or a 
textNode
The following properties and methods are available in a 
treeList
object:
Properties: 
length
Methods: 
append
insert
item
namedItem
, and 
remove
.
The following properties and methods are available in a 
Tree
object:
Properties: 
all
classAll
classIndex
index
name
nodes
,
parent
somExpression
Methods: 
resolveNode
resolveNodes
Each 
Node
element represents an element and its children in the XML DOM. To obtain a 
string representation of the node, invoke its 
saveXML
method. To apply an XSL transform 
(XSLT) to the node and its children, invoke its 
applyXSL
method. The following properties 
and methods are available in a 
Node
object:
Properties: 
id
isContainer
isNull
model
ns
oneOfChild
Methods:
applyXSL
assignNode
clone
getAttribute
getElement
isPropertySpecified
loadXML
saveXML
setAttribute
,
setElement
There are two approaches to accessing content in an XML stream. In the first approach, XFA 
syntax may be used to manipulate the XML DOM. In the second approach, you may use 
standard XPath syntax. 
The Acrobat JavaScript 
XML
object provides two methods useful for manipulating XML 
documents: 
applyXPath
and 
parse
.
The 
applyXPath
permits the manipulation of an XML document via an XPath, and the 
parse
method creates an object representing an XML document tree. Both of these return 
an 
XFA
object.
The first approach involves the usage of the 
XFL
object’s 
parse
method for accessing and 
manipulating XML streams. The second approach involves the usage of the 
XFL
object’s 
applyXPath
method.
Both approaches are illustrated below.
VB.NET PDF File Compress Library: Compress reduce PDF size in vb.
document file. Remove bookmarks, annotations, watermark, page labels and article threads from PDF while compressing. Also a preview
create bookmarks pdf files; create pdf bookmarks
C# PDF File Split Library: Split, seperate PDF into multiple files
Split PDF file by top level bookmarks. The following C# codes explain how to split a PDF file into multiple ones by PDF bookmarks or outlines.
editing bookmarks in pdf; export pdf bookmarks to text
Acrobat JavaScript Scripting Guide
113
Using Acrobat JavaScript in Forms
Forms Essentials
6
In this first example, the usage of the 
parse
method is illustrated below:
// Create the XML stream
var parseString = "<purchase>";
parseString += "<product>";
parseString += "<price>299.00</price>";
parseString += "<name>iPod</name>";
parseString += "</product>";
parseString += "<product>";
parseString += "<price>49.95</price>";
parseString += "<name>case</name>";
parseString += "</product>";
parseString += "</purchase>";
// Now create the DOM:
var x = XML.parse(parseString);
// Use the XFA API to obtain the XFA tree list for products:
var products = x.resolveNodes("product");
// Obtain the iPod product:
var iPod = products.item(0);
// Obtain the iPod price:
var price = iPod.getElement("price").value;
// Convert the price to a string:
var priceString = price.saveXML();
This next example accomplishes the same task through the usage of the 
applyXPath
method:
// Create the XML stream
var parseString = "<purchase>";
parseString += "<product>";
parseString += "<price>299.00</price>";
parseString += "<name>iPod</name>";
parseString += "</product>";
parseString += "<product>";
parseString += "<price>49.95</price>";
parseString += "<name>case</name>";
parseString += "</product>";
parseString += "</purchase>";
// Now create the DOM:
var x = XMLData.parse(parseString,false);
// Set up the XPath expression:
var xPathExpr = "//purchase/product/[name='iPod']/price";
// Now get the iPod price:
var price = XMLData.applyXPath(x, xPathExpr);
VB.NET PDF File Split Library: Split, seperate PDF into multiple
Demo Code in VB.NET. The following VB.NET codes explain how to split a PDF file into multiple ones by PDF bookmarks or outlines.
add bookmarks to pdf preview; bookmarks in pdf files
C# PDF File Compress Library: Compress reduce PDF size in C#.net
NET framework. Remove bookmarks, annotations, watermark, page labels and article threads from PDF while compressing. C# class demo
bookmark pdf reader; bookmarks pdf files
Using Acrobat JavaScript in Forms
Filling in PDF Forms
6
114
Acrobat JavaScript Scripting Guide
JavaScript Methods Not Enabled in XML Forms
The following Acrobat JavaScript 
doc
methods are not available from an XML form:
getField
getNthFieldName
addNewField
addField
removeField
setPageTabOrder
ADO Support for Windows
It is now possible to access both individual and multiple records. Forms can be enabled 
with ADO support for more direct database interaction.
Forms Migration: Working with Forms Created in Acrobat 6.0 or Earlier
Detecting XML Forms and Earlier Form Types
To determine whether a document is an XML form, invoke the 
doc
object’s 
dynamicXFAForm
method, which returns a boolean result. Note that an Acrobat form 
does not have an 
xfa
object.
Filling in PDF Forms
Completing Form Fields
Completing Form Fields Automatically
In many cases, you may wish to assign a character limit to text fields. For example, when 
collecting credit card or social security numbers, you may require that the number be split 
across several text fields. For example, the social security number 555-55-5555 would 
require three text fields of lengths 3, 2, and 4, respectively.
Spell-Checking Text in Forms
You can spell-check text typed in note comments and form fields, but not in the underlying 
PDF document. 
.NET PDF SDK | Read & Processing PDF files
Include extraction of text, hyperlinks, bookmarks and metadata; Advanced document and Pricing. RasterEdge provides royalty-free .NET Imaging PDF Reader SDK of
how to create bookmark in pdf with; adding bookmarks to a pdf
.NET PDF SDK - Description of All PDF Processing Control Feastures
Fully featured PDF Viewer in HTML5; Outstanding rendering of PDF documents; Full page navigation, zooming & rotation; Outlines, bookmarks, & thumbnail display;
bookmarks in pdf; create pdf bookmarks online
Acrobat JavaScript Scripting Guide
115
Using Acrobat JavaScript in Forms
Filling in PDF Forms
6
Importing and Exporting Form Data
Form data can be exported to a separate file, which can then be sent using email or over 
the Web. When doing this, save either to Forms Data Format (FDF) or XML-based FDF 
(XFDF). This creates an export file much smaller than the original PDF file.
When importing XFDF data, you will need an XML parser or library to read the XFDF data. 
Note that Acrobat forms support the FDF, XFDF, tab-delimited text, and XML formats, and 
that XML forms support XML and XDP formats.
Saving Form Data as XML or XML Data Package (XDP)
To save your form data in XML format, invoke the 
doc
object’s 
saveAs
method using the 
conversion ID for XML, as shown in the code below:
this.saveAs("myDoc.xml", "com.adobe.acrobat.xml-1-00");
To take advantage of XFA functionality, you may save your forms in the XML Data Package 
format (XDP). This simply requires the usage of the conversion ID for XDP, as shown in the 
code below:
this.saveAs("myDoc.xml", "com.adobe.acrobat.xdp");
Emailing Completed Forms
To email a completed form in FDF format, invoke the 
doc
object’s 
mailForm
method, 
which exports the data to FDF and sends it via email. 
To make an interactive email session, pass 
true
to the first parameter, which specifies 
whether a user interface should be used, as shown in the code below:
this.mailForm(true);
To send the exported FDF data automatically, pass 
false
to the first parameter, and 
specify the 
cTO
cCc
cBcc
cSubject
, and 
cMsg
fields (all of which are optional), as 
shown in the code below:
this.mailForm(false, "recipient@adobe.com");
Global Submit
Suppose you have a document that contains multiple attachments, from which you would 
like to compile information for submission to a server in XML format. You can create a 
Global Submit button whose 
MouseUp
action contains a script that collects the data from 
each of the attachments and creates a unified collection in XML format. 
To do this, you will need to invoke the 
doc
object’s 
openDataObject
method in order to 
open the attachments, followed by its 
submitForm
method to upload the combined XML 
data to the server.
XDoc.Word for .NET, Advanced .NET Word Processing Features
& rotation; Outlines, bookmarks, & thumbnail display; Integrated annotation; More about Web Viewer ▶. Conversion. Word Create. Create Word from PDF; Create Word
bookmarks in pdf from word; export pdf bookmarks to excel
XDoc.PowerPoint for .NET, All Mature Features Introductions
& rotation; Outlines, bookmarks, & thumbnail display; Integrated annotation; More about Web Viewer ▶. PowerPoint Convert. Convert PowerPoint to PDF; Convert
how to add bookmark in pdf; create bookmarks in pdf reader
Using Acrobat JavaScript in Forms
Filling in PDF Forms
6
116
Acrobat JavaScript Scripting Guide
The following example merges the data from several XML form attachments and submits it 
to a server:
var oParent = event.target; 
// Get the list of attachments:
var oDataObjects = oParent.dataObjects; 
if (oDataObjects == null) 
app.alert("This form has no attachments!"); 
else {
// Create the root node for the global submit:
var oSubmitData = oParent.xfa.dataSets.createNode(
"dataGroup", 
"globalSubmitRootNode"
);
// Iterate through all the attachments:
var nChildren = oDataObjects.length; 
for (var iChild = 0; iChild < nChildren; i++) {
// Open the next attachment:
var oNextChild = oParent.openDataObject(
oDataObjects[iChild].name
);
// Transfer its data to the XML collection:
oSubmitData.nodes.append(
oNextChild.xfa.data.nodes.item(0)
);
close the attachment//
oNextChild.closeDoc();
}
// Submit the XML data collection to the server
oParent.submitForm({
cURL: "http://theserver.com/cgi-bin/thescript.cgi",
cSubmitAs: "XML",
oXML: oSubmitData
});
}
Acrobat JavaScript Scripting Guide
117
Using Acrobat JavaScript in Forms
Making Forms Accessible
6
Making Forms Accessible
Making a PDF Form accessible to users who have impaired motor or visual ability requires 
that the document be structured, which means that PDF tags present in the document 
ensure that the content is organized according to a logical structure tree. This means that 
you will have added tags to the document. Once you do this, you may specify alternative 
text within the tags.
You can make forms accessible through the use of Text-To-Speech engines and tagged 
annotations containing alternative text.
Text-To-Speech engines can translate structured text in a PDF document into audible 
sound, and tagged annotations containing alternative text can provide substitute content 
for graphical representations, which cannot be read by a screen reader. It is useful to 
consider embedding alternative text in links and bookmarks, as well as specifying the 
language of the document. 
It is not necessary to sacrifice security in order to make a document accessible. Select 
Document Properties > Security > Enable Text Access for Screen Reader Devices for 
the Visually Impaired.
Text-To-Speech
In order for Text-To-Speech engines to be able to work with your document, it must be 
structured. You can create structured documents using Adobe FrameMaker
®
7.0 or Adobe 
FrameMaker SGML 6.0 running in Structured mode.
To access the Text-To-Speech engine from Acrobat JavaScript, use the TTS object, which 
has methods to render text as digital audio and present it in spoken form to the user.
For example, the following code displays a message stating whether the TTS engine is 
available:
console.println("TTS available: " + tts.available);
The next code sample illustrates how to enumerate through all available speakers, queue a 
greeting into the TTS object for each one, and present the digital audio version of it to the 
user:
for (var i=0; i<tts.numSpeakers; i++) {
var cSpeaker = tts.getNthSpeakerName(i);
console.println("Speaker[" + i + "] = " + cSpeaker);
tts.speaker = cSpeaker;
tts.qText("Hello");
tts.talk();
}
Using Acrobat JavaScript in Forms
Making Forms Accessible
6
118
Acrobat JavaScript Scripting Guide
The properties and methods of the 
TTS
object are summarized below in Table 6.8 and 
Table 6.9.
T
ABLE
6.8
TTS Properties
Property
Description
available
Returns 
true
if the Text-To-Speech engine is available
numSpeakers
Returns the number of speakers in the engine
pitch
The baseline pitch between 0 and 10
speaker
A speaker with desired tone quality
speechRate
The rate in words per minute
volume
The volume between 0 and 10
Acrobat JavaScript Scripting Guide
119
Using Acrobat JavaScript in Forms
Using JavaScript to Secure Forms
6
Tagging Annotations
Tagged files provide the greatest degree of accessibility, and are associated with a logical 
structure tree that supports the content. Annotations can be dynamically associated with a 
new structure tree that is separate from the original content of the document, thus 
supporting accessibility without modifying the original content. The annotation types 
supported for accessibility are:
Text, FreeText, Line, Square, Circle, Polygon, Polyline, Highlight,
Underline, Squiggly, Strikeout, Stamp, Caret, Ink, Popup, FileAttachment, Sound
To add an accessible tag, select Advanced > Accessibility and choose Add Tags to 
Document.
Using JavaScript to Secure Forms
As you learned earlier in Signature Properties, you can lock any form fields you deem 
appropriate once a document has been signed. In addition, you may also encrypt a 
document.
Acrobat JavaScript provides a number of objects that support security. These are managed 
by the 
security
and 
securityHander
objects for building certificates and signatures, 
as well as the 
certificate
directory
signatureInfo
, and 
dirConnection
objects which are used to access the user certificates. (The 
certificate
object provides 
read-only access to an X.509 public key certificate). 
T
ABLE
6.9
TTS Methods
Method
Description
getNthSpeakerName
Retrieves Nth speaker in current Text-To-Speech engine
pause
Pauses the audio output
qSilence
Queues a period of silence into the text
qSound
Inserts a sound cue using a .wav file
qText
Inserts text into the queue
reset
Stops playback, flush the queue, reset all Text-To-Speech 
properties
resume
Resumes playback on a paused 
TTS
object
stop
Stops playback and flush the queue
talk
Sends queue contents to Text-To-Speech engine
Using Acrobat JavaScript in Forms
Using JavaScript to Secure Forms
6
120
Acrobat JavaScript Scripting Guide
These objects, in combination, provide you with the means to digitally sign or encrypt a 
document. Once you have built a list of authorized recipients, you may then encrypt the 
document using the 
doc
object’s 
encryptForRecipients
method, save the 
document to commit the encryption, and email it to them.
For example, you can obtain a list of recipients for which the encrypted document is 
available, and then encrypt the document:
// Invoke the recipients dialog to select which recipients
// will be authorized to view the encrypted document:
var oOptions = {
bAllowPermGroups: false,
cNote: "Recipients with email and certificates",
bRequireEmail: true,
bUserCert: true
};
var oGroups = security.chooseRecipientsDialog(oOptions);
// Build the mailing list
var numCerts = oGroups[0].userEntities.length;
var cMsg = "Encrypted for these recipients:\n";
var mailList = new Array;
for (var i=0; i<numCerts; i++) {
var ue = oGroups[0].userEntities[i];
var oCert = ue.defaultEncryptCert;
if (oCert == null) oCert = ue.certificates[0];
cMsg += oCert.subjectCN + ", " + ue.email + "\n";
var oRDN = oCert.subjectDN;
if (ue.email) mailList[i] = ue.email; 
else if (oRDN.e) mailList[i] = oRDN.e;
}
// Now encrypt the document
this.encryptForRecipients(oGroups);
Documents you may be interested
Documents you may be interested