Acrobat JavaScript Scripting Guide
81
Print Production
Print Production
5
Silent Printing
There are various ways to print a document without requiring user interaction. One way is 
to use the 
doc
object’s 
print
method and set the 
bSilent
attribute to 
true
, as shown 
in “Printing PDF Documents” on page 79 and in the following example:
this.print({bUI: false, bSilent: true, bShrinkToFit: true});
If you would like to print without requiring user interaction, but would like to display a 
progress monitor and automatically disappearing cancel dialog box, use the interactive 
property as shown in the following example:
var pp = this.getPrintParams();
pp.interactive = pp.constants.interactionLevel.automatic;
There are many options you may choose without requiring user interaction. For example, 
you can select the paper tray:
var fv = pp.constants.flagValues;
pp.flags |= fv.setPageSize;
These coding approaches may be used in menus or buttons within a PDF file, may exist at 
the folder or batch levels, and are available through Acrobat or Adobe Reader 6.0 or later. 
For more information, see the Acrobat JavaScript Scripting Reference, as well as the Acrobat 
SDK samples SDKSilentPrint.js and SDKJSSnippet1.pdf.
Printing Documents with Layers
The 
printParams
object’s 
printContent
property can be used to control whether 
document content, form fields, and comments will be printed. In the following example, 
only the form field contents will be printed (this is useful when sending data to preprinted 
forms):
var pp = this.getPrintParams();
pp.interactive = pp.constants.interactionLevel.silent;
pp.printContent = pp.constants.printContent.formFieldsOnly;
this.print(pp);
Export pdf bookmarks to text file - 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
add bookmarks to pdf reader; bookmarks in pdf files
Export pdf bookmarks to text file - 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
bookmarks in pdf from word; creating bookmarks pdf files
Print Production
Print Production
5
82
Acrobat JavaScript Scripting Guide
Setting Advanced Print Options
You can set the 
printParams
object’s properties to specify advanced options including 
output, marks and bleeds, transparency flattening, PostScript options, and font options.
Specifying Output Settings
You may obtain a listing of printer color spaces available by invoking the 
app
object’s 
printColorProfiles
method. You may then assign one of these values to the 
printParams
object’s 
colorProfile
property.
In addition, you may set the 
printParams
object’s 
flags
property to specify advanced 
Output settings, such as applying proof settings, shown in the example below:
var pp = this.getPrintParams();
var fv = pp.constants.flagValues;
pp.flags |= fv.applySoftProofSettings;
this.print(pp);
Specifying Marks and Bleeds
You can specify the types of tile marks and where overlap occurs by setting the 
printParams
object’s 
tileMark
property. For example, in the following code, Western 
style tile marks are printed:
var pp = this.getPrintParams();
pp.tileMark = pp.constants.tileMarks.west;
this.print(pp);
Setting PostScript Options
You may set the 
printParams
object’s 
flags
property to specify advanced PostScript 
settings, such as emitting undercolor removal/black generation, shown in the example 
below:
var pp = this.getPrintParams();
var fv = pp.constants.flagValues;
pp.flags &= ~(fv.suppressBG | fv.suppressUCR);
this.print(pp);
In addition, you may set the 
printParams
object’s 
psLevel
property to specify the 
level of PostScript emitted to PostScript printers. In addition, if the printer only supports 
PostScript level 1, set the 
printParams
object’s 
printAsImage
property to 
true
.
VB.NET PDF File Compress Library: Compress reduce PDF size in vb.
Compress & decompress PDF document file while maintaining original content of target PDF document file. Remove bookmarks, annotations, watermark, page labels
create pdf bookmarks; how to add bookmarks to pdf files
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.
create bookmarks pdf; create pdf bookmark
Acrobat JavaScript Scripting Guide
83
Print Production
Print Production
5
Setting Font Options
You can control the font policy by setting the 
printParams
object’s 
fontPolicy
property. There are three values that may be used:
everyPage
: emit needed fonts for every page, freeing fonts from the previous page. 
This is useful for printers having a small amount of memory.
jobStart
: emit all fonts at the beginning of the print job, free them at the end of the 
print job. This is useful for printers having a large amount of memory.
pageRange
: emit the fonts needed for a given range of pages, free them once those 
pages are printed. This may be used to optimize the balance between memory and 
speed constraints.
In the following example, all the fonts are emitted at the beginning of the print job, and 
freed once the job is finished:
var pp = this.getPrintParams();
pp.fontPolicy = pp.constants.fontPolicy.jobStart;
this.print(pp);
You may also control whether Type 1 fonts will be converted to alternative font 
representations, by setting the 
printParams
object’s 
useT1Conversion
property. 
There are three values that may be used:
auto
: let Acrobat decide whether to disable the conversion, based on its internal list of 
printers that have problems with these fonts.
use
: allow conversion of Type 1 fonts.
noUse
: do not allow conversion of Type 1 fonts.
In the following example, conversion of Type 1 fonts is set to automatic:
var pp = this.getPrintParams();
pp.useT1Conversion = pp.usages.useT1Conversion.auto;
this.print(pp);
Finally, it is possible to send Far East fonts to the printer by setting the 
printParams
object’s 
downloadFarEastFonts
property to 
true
.
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.
export pdf bookmarks; pdf bookmark
C# PDF File Compress Library: Compress reduce PDF size in C#.net
Easy to compress & decompress PDF document file in .NET framework. Remove bookmarks, annotations, watermark, page labels and article threads from PDF while
copy pdf bookmarks to another pdf; export excel to pdf with bookmarks
Print Production
Print Production
5
84
Acrobat JavaScript Scripting Guide
C# PDF Convert to HTML SDK: Convert PDF to html files in C#.net
Export PDF images to HTML images. SDK, preserves all the original anchors, links, bookmarks and font style that are included in target PDF document file.
adding bookmarks to pdf; how to bookmark a pdf page
C# Create PDF Library SDK to convert PDF from other file formats
etc. Create writable PDF from text (.txt) file. file. Create and save editable PDF with a blank page, bookmarks, links, signatures, etc. Create
how to create bookmark in pdf with; creating bookmarks in pdf documents
Acrobat JavaScript Scripting Guide
85
6
Using Acrobat JavaScript in Forms
Introduction
In this chapter you will learn how to extend the functionality of Acrobat forms through the 
application of Acrobat JavaScript. You will learn how to generate, modify, and enhance all 
types of PDF forms and the elements they contain, and ensure the proper collection and 
export of information in various formats relevant to your workflow needs. In addition, you 
will understand how to leverage the XML Forms Architecture (XFA) so that your 
presentation format will be not only responsive to user input, but will also ensure that the 
information can be exchanged with Web Services and enterprise infrastructures.
Chapter Goals
At the end of this chapter, you will be able to:
Use Acrobat JavaScript to create and enhance all types of PDF forms.
Create and modify form fields and their properties.
Use Acrobat JavaScript to make your forms secure, accessible, and web-ready.
Create XML forms and migrate legacy forms to XFA format.
Automate the collection and export of form data.
Make forms accessible, secure, and web-ready.
Contents
Topics
Forms Essentials
Filling in PDF Forms
Making Forms Accessible
Using JavaScript to Secure Forms
How to C#: Basic SDK Concept of XDoc.PDF for .NET
PDFTextMgr. This class provides APIs to manipulate text contents in a PDF document. OutLines. This class describes bookmarks in a PDF document.
how to create bookmark in pdf automatically; bookmark page in pdf
VB.NET PDF: Basic SDK Concept of XDoc.PDF
PDFTextMgr. This class provides APIs to manipulate text contents in a PDF document. OutLines. This class describes bookmarks in a PDF document.
bookmarks pdf; convert excel to pdf with bookmarks
Using Acrobat JavaScript in Forms
Forms Essentials
6
86
Acrobat JavaScript Scripting Guide
Forms Essentials
Introduction
Acrobat JavaScript can be integrated into your forms to enhance their interactive 
capabilities. You can extend the capability of your forms by using Acrobat JavaScript to 
automate formatting, calculations, and data validation. In addition, you can develop 
customized actions assigned to user events. Finally, it is possible for your forms to interact 
with databases and Web services.
Forms Essentials Topics
About PDF Forms
Creating Acrobat Form Fields
Setting Acrobat Form Field Properties
Making a Form Fillable
Setting the Hierarchy of Form Fields
Creating Forms From Scratch
Using Custom JavaScripts in Forms
Introduction to XML Forms Architecture (XFA)
Forms Migration: Working with Forms Created in Acrobat 6.0 or Earlier
Acrobat JavaScript Scripting Guide
87
Using Acrobat JavaScript in Forms
Forms Essentials
6
About PDF Forms
Types of PDF Forms
There are two types of PDF forms: Acrobat forms and XML forms.
Acrobat forms present information using form fields. They are useful for providing the user 
with a structured format within which to view or print information. Forms permit the user 
to fill in information, select choices, and digitally sign the document. Once the user has 
entered in data, the information within the PDF can be sent to the next step in the 
workflow for extraction or, in the case of browser-based forms, immediately transferred to a 
database. If you are creating a new form, the most recommended type is a XML form since 
its format readily allows for Web service interactions and compatibility with document 
processing needs within enterprise-wide infrastructures. 
The new Adobe XML forms model uses a Document Object Model (DOM) architecture to 
manage the components that comprise a form. These include the base template, the form 
itself, and the data contained within the form fields. In addition, all calculations, validations, 
and formatting are specified and managed within the DOM and XML processes.
Static XML forms were supported in Acrobat 6.0, and dynamic XML forms are now supported 
in Acrobat 7.0. Both types are created using Adobe LiveCycle Designer. A static XML form 
presents a fixed set of text, graphics, and field areas at all times. Dynamic XML forms are 
created by dividing a form into a series of subforms and repeating subforms. They support 
dynamically changing fields that can grow or shrink based on content, variable-size rows 
and tables, and intelligent data import/export features.
Elements of Acrobat Forms
The form fields used in Acrobat forms are the basis of interaction with the user. They 
include buttons, check boxes, combo boxes, list boxes, radio buttons, text fields, and digital 
signature fields. In addition, you can enhance the appearance and value of your forms 
through the use of tables, templates, watermarks, and other user interface elements such 
as bookmarks, thumbnails, and dialogs. Finally, the Acrobat JavaScript methods you define 
in response to events will help customize the utility and behavior of the form within the 
context of its workflow.
Text fields can be useful for either presenting information or collecting data entered by the 
user, such as an address or telephone number.
Digital signature fields can be used to ensure the security of a document.
When presenting the user with decisions or choices, you may use check boxes and radio 
buttons for a relatively small set of choices, or list boxes and combo boxes for a larger set of 
dynamically changing choices.
Using Acrobat JavaScript in Forms
Forms Essentials
6
88
Acrobat JavaScript Scripting Guide
Guidelines for Creating a New Form
When designing a PDF form, consider first its purpose and the data it must manage. It may 
be that the same page is used in multiple contexts, depending on user interactions and 
decisions. In this case, there may be multiple sets of form fields. When this occurs, treat 
each set of form fields as a different problem, as though each set had its own page. This will 
also require extra logic applied to visibility settings. Your form design may have 
dynamically changing features such as the current date, as well as convenience options 
such as automatic generation of email messages. It may even have a dynamically changing 
appearance and layout which is responsive to user interactions.
Usability is a major factor in the design of forms since they are essential graphical user 
interfaces, so layout and clarity will be a major consideration. Finally, consider the medium 
on which the form will be presented: screens with limited resolution may affect your 
decisions, and printing characteristics may also be relevant.
When creating forms programmatically, consider the form elements that will be needed for 
a given area. Declare those variables associated with the form elements, and apply logical 
groupings to those elements that belong to the same collections, such as radio buttons or 
check boxes. This will simplify the task of assigning properties, formatting options, 
validation scripts, calculation scripts, and tabbing order to each of the individual form 
elements.
The creation of a new form, whether done through the Acrobat layout tools or LiveCycle
ΤΜ
Designer, or programmatically through Acrobat JavaScript, will require that you consider 
the following:
How the form fields will be positioned.
Which form fields will be associated in collections so that their properties can be set 
with consistency and efficiency.
How size, alignment, and distribution of form fields within the document will be 
determined.
When and how to set up duplicate form fields so that when the user types information 
into one form field, that information automatically appears in the duplicate form fields.
When to create multiple form fields for array-based access and algorithms.
The tab order of form fields.
Acrobat JavaScript Scripting Guide
89
Using Acrobat JavaScript in Forms
Forms Essentials
6
Creating Acrobat Form Fields
There are seven types of Acrobat form fields, each associated with a field type value as 
shown below in Table 6.1:
You can use Acrobat JavaScript to create a form field by invoking the 
doc
object’s 
addField()
method, which returns a 
field
object. This method permits you to specify 
the following information:
1. The field name. This may include hierarchical syntax in order to facilitate logical 
groupings. For example, the name 
myGroup.firstField
implies that the form field 
firstField
belongs to a group of fields called 
myGroup
. The advantage of creating 
logical hierarchies is that you can enforce consistency among the properties of related 
form fields by setting the properties of the group, which automatically propagate to all 
form fields within the group.
2. One of the seven field type values listed above, surrounded by quotes.
3. The page number where the form field is placed, which corresponds to a zero-based 
indexing scheme. Thus, the first page is considered to be page 0.
4. The location, specified in rotated user space (the origin is located at the bottom left 
corner of the page), on the page where the form field is placed. The location is specified 
through the use of an array of 4 values. The first two values represent the coordinates of 
the upper left corner, and the second two values represent the coordinates of the lower 
right corner: 
[
upper-left x, upper-left y, lower-right x, lower-right y
]
.
T
ABLE
6.1
Acrobat Form Field Types
Form Field
Field Type Value
Button
button
Check Box
checkbox
Combo Box
combobox
List Box
listbox
Radio Button
radiobutton
Text Field
text
Digital Signature
signature
Using Acrobat JavaScript in Forms
Forms Essentials
6
90
Acrobat JavaScript Scripting Guide
For example, suppose you would like to place a Button named 
myButton
on the first page 
of the document. Assume that the button is one inch wide, one inch tall, and located 100 
points in from the left side of the page and 400 points up from the bottom of the page 
(there are 72 points in 1 inch). The code for creating this button would appear as follows:
var name = "myButton";
var type = "button";
var page = 0;
var location = [100, 472, 172, 400];
var myField = this.addField(name, type, page, location);
This approach to creating form fields is applicable to all fields, but it should be noted that 
radio buttons require special treatment. Since a set of radio buttons represents a set of 
mutually exclusive choices, they belong to the same group. Because of this, the names of all 
radio buttons in the same group must be identical. In addition, the export values of the set 
of radio buttons must be set with a single statement, in which an array of values are 
assigned through a call to the radio button collection’s 
setExportValues
method.
For example, suppose we would like to create a set of three radio buttons, each 12 points 
wide and 12 points high, all named 
myRadio
. We will place them on page 5 of the 
document, and their export values will be 
"Yes"
"No"
, and 
"Cancel"
. They can be 
created as shown in the code given below:
var name = "myRadio";
var type = "radiobutton";
var page = 5;
this.addField(name, type, page, [400, 442, 412, 430]);
this.addField(name, type, page, [400, 427, 412, 415]);
var rb = this.addField(name, type, page, [400, 412, 412, 400]);
rb.setExportValues(["Yes", "No", "Cancel"]);
This code actually creates an array of 3 radio buttons, named 
myRadio.0
myRadio.1
and 
myRadio.2
.
Documents you may be interested
Documents you may be interested