c# save pdf : Bookmarks pdf documents control application platform web page azure winforms web browser AcroJSGuide13-part334

Acrobat JavaScript Scripting Guide
131
Review, Markup, and Approval
Using Commenting Tools
7
Personalizing Attachments with a Description
To add a description to any annotation, set its 
contents
property. In the case of file or 
sound attachments, the property should be used to describe the contents of the 
attachment, as shown in the code below:
this.addAnnot({
page: 0,
type: "Sound",
rect: [0,0,100,100],
name: "mySoundAnnot",
soundIcon: "mySound"
contents: "This is a sound file."
});
Opening and Saving Attachments
You may use Acrobat JavaScript to open any attachment. The general-purpose way to do 
this is to invoke the 
doc
object’s 
getDataObjectContents
method. The following 
code opens an attachment and displays its contents in the console:
var oFile = this.getDataObjectContents("MyAttachment");
var cFile = util.stringFromStream(oFile);
console.println(cFile);
To save and possibly open an attachment, invoke the 
doc
object’s 
exportDataObject
method. The method has an optional parameter called 
nLaunch
which may be set to one 
of three values: 0 (do not open, default), 1 (prompt the user for a save path, and open), 2 
(do not prompt the user for a save path, and open). When using documents having 
extensions other than PDF, include the extension in the file name. The method usage is 
shown in the examples below:
// just save and do not open
this.exportDataObject("MyAttachment");
// save and open
this.exportDataObject({
cName: "MyComments.xls", nLaunch: 1}
);
Bookmarks pdf documents - 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 online; create pdf with bookmarks from word
Bookmarks pdf documents - 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 bookmarks in pdf from excel; adding bookmarks to pdf
Review, Markup, and Approval
Using Commenting Tools
7
132
Acrobat JavaScript Scripting Guide
Saving Modified Files into the Primary Document
Once an attached file has been modified, it may be saved once again. To embed its 
contents into the primary document, invoke the 
doc
object’s 
getDataObjectContents
method in order to begin accessing its contents, and 
setDataObjectContents
in order to save the modified contents, as shown in the code 
sample below:
// Open the file:
this.importDataObject("myFile.txt", "/C/myFile.txt");
// access the FileStream (after which you may modify it):
var oFile = this.getDataObjectContents("myFile.txt");
var cFile = util.stringFromStream(oFile, "utf-8");
// now modify the string cFile
// ...
// Convert the modified string back to a FileStream:
oFile = util.streamFromString(cFile, "utf-8");
// Save the modified FileStream contents:
this.setDataObjectContents("myFile.txt", oFile);
Linking Between Files
You may set up links between files by setting the "Go to View" action of a link annotation. In 
the case of nested PDF documents, intermediate documents automatically open. To use 
Acrobat JavaScript to create a link, invoke the 
doc
object’s 
addLink
method. To cause the 
link to open a file, set the 
MouseUp
action to open the file.
Deleting Attachments
You may use Acrobat JavaScript to remove a file attachment from a document by invoking 
the 
doc
object’s 
removeDataObject
method, as shown in the code below:
this.removeDataObject("myAttachment");
Spell-checking in Comments and Forms
You may check the spelling of any word using the 
spell
object’s 
checkWord
method. 
This can be applied to any form field or annotation. First retrieve the contents, and submit 
each word to the method.
Setting Spelling Preferences
To set the dictionary order, first retrieve the array of dictionaries using the 
doc
object’s 
spellDictionaryOrder
property. Then modify the order of the array entries, and 
assign the array to the same property. An array of currently available dictionaries can be 
obtained using the 
spell
object’s 
dictionaryNames
property.
C# PDF File Compress Library: Compress reduce PDF size in C#.net
Remove bookmarks, annotations, watermark, page labels and article PDF document has been widely used by and organizations to distribute and view documents.
how to create bookmarks in pdf file; bookmark pdf documents
VB.NET PDF File Split Library: Split, seperate PDF into multiple
PDF files or they can separate source PDF file to smaller PDF documents by every explain how to split a PDF file into multiple ones by PDF bookmarks or outlines
copy pdf bookmarks to another pdf; how to bookmark a pdf page
Acrobat JavaScript Scripting Guide
133
Review, Markup, and Approval
Using Commenting Tools
7
To set the language order, perform a similar algorithm using the 
doc
object’s 
spellLanguageOrder
property. An array of currently available dictionaries can be 
obtained using the 
spell
object’s 
languages
property.
Adding Words to a Dictionary
You may use Acrobat JavaScript to add words to a dictionary by invoking the 
spell
object’s 
addWord
method, as shown in the code sample below:
spell.addWord(myDictionary, "myNewWord");
Adding Commenting Preferences
To use Acrobat JavaScript to set commenting preferences, create an object literal 
containing common properties to be applied to your comments. Then for every 
annotation, pass the object literal to its 
annot
object’s 
setProps
method, as shown in 
the code sample below:
// Create the common properties in an object literal:
var myProps = {
strokeColor: color.red,
popupOpen: true,
arrowBegin: "Diamond",
arrowEnd: "OpenArrow"
};
// Assign the common properties to a previously created annot:
myAnnot.setProps(myProps);
Changing Colors, Icons, and Other Comment Properties
You may use Acrobat JavaScript to change the properties of any type of annotation. To 
change the background color of a comment, assign a new value to its 
fillColor
property. To change the icon, assign a value to its 
attachIcon
noteIcon
, or 
soundIcon
property. All the comment properties are available through the 
annot
object, and may be set by invoking its 
setProps
method.
XDoc.PowerPoint for .NET, All Mature Features Introductions
NET WinForms; Outstanding rendering of PowerPoint documents; zooming & rotation; Outlines, bookmarks, & thumbnail Convert PowerPoint to PDF; Convert PowerPoint to
create pdf bookmark; display bookmarks in pdf
XDoc.Excel for .NET, Comprehensive .NET Excel Imaging Features
in .NET WinForms; Outstanding rendering of Excel documents; navigation, zooming & rotation; Outlines, bookmarks, & thumbnail Convert Excel to PDF; Convert Excel to
export pdf bookmarks to text file; how to bookmark a pdf document
Review, Markup, and Approval
Using Commenting Tools
7
134
Acrobat JavaScript Scripting Guide
Adding Watermarks
A watermark is an area containing text or graphics appearing underneath or over existing 
document content when a document is printed. This is often referred to as layered content, 
and may appear differently in print than it does on the screen. For example, the word 
"Confidential" could appear as a watermark within a document.
You can add watermarks through Acrobat JavaScript by invoking the 
doc
object’s 
addWatermarkFromFile
or 
addWatermarkFromText
method, and you may also 
create stamp annotations. The 
addWatermarkFromFile
method places, into a 
specified location and at a particular scale factor and rotation, a single page from any 
document format that Acrobat can convert to PDF (such as JPEG, PNG, TIFF, Word, or 
AutoCAD). 
The Stamping User Interface
You may create an annotation using the Stamp type, and invoke the 
annot
object’s 
AP
property to determine the appearance of the stamp in the document. The following 
appearance options are available for stamp annotations:
Approved
AsIs
Confidential
Departmental
Draft
Experimental
Expired
Final
ForComment
ForPublicRelease
NotApproved
NotForPublicRelease
Sold
TopSecret
.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;
split pdf by bookmark; convert word to pdf with bookmarks
XDoc.Word for .NET, Advanced .NET Word Processing Features
in .NET WinForms; Outstanding rendering of Word documents; navigation, zooming & rotation; Outlines, bookmarks, & thumbnail Create Word from PDF; Create Word from
adding bookmarks to pdf document; adding bookmarks to pdf reader
Acrobat JavaScript Scripting Guide
135
Review, Markup, and Approval
Using Commenting Tools
7
For example, the following code adds an "Approved" stamp to the document:
var annot = this.addAnnot({
page: 0,
type: "Stamp",
author: "Me",
name: "myStamp", 
rect: [400,400,550,500],
contents: "Good work!",
AP: "Approved"
});
Header and Footer Functionality
You may use Acrobat JavaScript to add headers and footers to your documents. For 
example, you may use the 
doc
object’s 
addWatermarkFromText
method, which has 
several properties useful for this specific purpose:
cText
: The actual text displayed in the header or footer.
nTextAlign
: How the text is aligned in the header or footer.
vTextAlign
: How the watermark is aligned vertically: a value of 0 aligns it at the top 
of the page (header), and a value of 2 aligns it at the bottom of the page (footer).
nStart
: The starting page for the watermark. A value of -1 causes the resultant header 
or footer to appear on every page of the document.
Control of Font, Size, Placement, Rotation, and Opacity
There are several properties to the 
doc
object’s watermark addition methods useful for 
controlling font, size, placement, rotation and opacity. These are listed below:
cFont
: The font name.
cFontSize
: The font size (in points).
nTextAlign
: The text alignment.
nRotation
: The rotation in degrees.
nOpacity
: The opacity from 0.0 to 1.0, where 0 means transparent and 1 means 
opaque.
Approval
Approval workflows may include an automated process in which a PDF document is 
automatically sent via email to a recipient for their approval. For example, this may be 
accomplished through the usage of the 
doc
object’s 
mailDoc
method. The user may then 
use a standard approval stamp (set through the 
annot
object’s 
AP
property), use a custom 
stamp, or use a Hanko stamp to create a secure digital signature.
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; add bookmarks to pdf file
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.
bookmark a pdf file; convert word pdf bookmarks
Review, Markup, and Approval
Managing Comments
7
136
Acrobat JavaScript Scripting Guide
Managing Comments
Selecting, Moving, and Deleting Comments
Just as you can access the Comments List in the Acrobat user interface, you may likewise 
do so through Acrobat JavaScript, using the 
doc
object’s 
syncAnnotScan
and 
getAnnots
methods. The 
syncAnnotScan
method guarantees that all annotations in 
the documents are scanned, and the 
getAnnots
method returns a list of annotations 
satisfying specified criteria.
For example, the following code scans all the annotations on page 2 of the document and 
captures them all in the variable myAnnotList:
this.syncAnnotScan();
var myAnnotList = this.getAnnots({nPage: 2});
To move a comment, use the corresponding 
annot
object’s 
setProps
method to specify 
a new location or page. To delete the comment, invoke the corresponding 
annot
object’s 
destroy
method. In the code sample below, all the free text comments on page 2 of the 
document are deleted:
for (var i=0; i<myAnnotList.length; i++)
if (myAnnotList[i].type == "FreeText") 
myAnnotList[i].destroy();
Topics
Selecting, Moving, and Deleting Comments
Using the Comments List
Exporting and Importing Comments
Comparing Comments in Two PDF Documents
Aggregating Comments for Use in Excel
Extracting Comments in a Batch Process
Acrobat JavaScript Scripting Guide
137
Review, Markup, and Approval
Managing Comments
7
Using the Comments List
Once you have acquired the comments list through the 
doc
object’s 
syncAnnotScan
and 
getAnnots
methods, you may change their status, appearance, order, and visibility. 
In addition, you will be able to search for comments having certain characteristics.
Changing the Status of Comments
To change the status of a comment using Acrobat JavaScript, invoke the corresponding 
annot
object’s 
transitionToState
method, as shown in the code below:
// Transition myAnnot to the "approved" state:
myAnnot.transitionToState("ReviewStates", "approved");
Changing the Appearance of Comments
You may change the appearance of a comment in a variety of ways. If the comment is a 
stamp annotation, you may change its appearance by setting its 
AP
property. In general, 
the appearance of any comment may be changed by invoking the 
annot
object’s 
setProps
method, as shown in the code below:
myAnnot.setProps({
page: 0,
points: [[10,40], [200,200]],
strokeColor: color.red,
popupOpen: true,
popupRect: [200,100,400,200],
arrowBegin: "Diamond",
arrowEnd: "OpenArrow"
});
Marking Comments with Checkmarks
You may use the Acrobat user interface to place checkmarks next to comments, or use 
Acrobat JavaScript to do the equivalent by changing the status of a comment (see 
Changing the Status of Comments).
Review, Markup, and Approval
Managing Comments
7
138
Acrobat JavaScript Scripting Guide
Sorting Comments
If you would like to sort comments using Acrobat JavaScript, you may do so by submitting 
an optional parameter to the 
doc
object’s 
getAnnots
method. The 
nSortBy
parameter 
may be assigned one of the following values:
ANSB_None
: Do not sort.
ANSB_Page
: Sort by page number.
ANSB_Author
: Sort by author.
ANSB_ModDate
: Sort by modification date.
ANSB_Type
: Sort by annotation type.
In addition, you may specify that the sorting be performed in reverse order by submitting 
the optional 
bReverse
parameter to the method.
The code sample given below shows how to obtain a list of comments from page 2 of the 
document, sorted in reverse order by author:
this.syncAnnotScan();
var myAnnotList = this.getAnnots({
nPage: 2, 
nSortBy: ANSB_Author,
bReverse: true
});
Showing and Hiding Comments
To use Acrobat JavaScript to show or hide a comment, set its corresponding 
annot
object’s 
hidden
property. For example, the following code hides 
myAnnot
:
myAnnot.hidden = true;
Finding Comments
There are two ways to use Acrobat JavaScript to find a comment. If you know the name of 
the comment, you may invoke the 
doc
object’s 
getAnnot
method. Otherwise you may 
obtain all the comments by invoking the 
doc
object’s 
getAnnots
method, and iterate 
through the list.
The 
getAnnot
method requires two parameters: the page number and the name of the 
annotation. The following code sample shows how to obtain a comment on page 2 named 
knownName
:
var comment = this.getAnnot(2, "knownName");
Acrobat JavaScript Scripting Guide
139
Review, Markup, and Approval
Managing Comments
7
Exporting and Importing Comments
To use Acrobat JavaScript to export all the comments in a file, invoke the 
doc
object’s 
exportAsFDF
or 
exportAsXFDF
methods. In both cases, set the 
bAnnotations
parameter to 
true
, as shown in the code sample below, which exports only the comments 
and nothing else:
this.exportAsFDF({bAnnotations: true});
To use Acrobat JavaScript to import comments from an FDF or XFDF into a file, invoke the 
doc
object’s 
importAnFDF
or 
importAnXFDF
methods.
Comparing Comments in Two PDF Documents
While the Acrobat user interface provides you with a menu choice for comparing two 
documents, it is possible to customize your comparisons using Acrobat JavaScript. To gain 
access to multiple documents, invoke the 
app
object’s 
openDoc
method for each 
document you would like to analyze. Each 
doc
object exposes the contents of each 
document, such as an array of annotations. You may then compare and report any 
information using customized algorithms. For example, the code below reports how many 
annotations exist in the two documents:
var doc2 = app.openDoc("/C/secondDoc.pdf");
var annotsDoc1 = this.getAnnots();
var annotsDoc2 = doc2.getAnnots();
console.println("Doc 1: " + annotsDoc1.length + " annots.");
console.println("Doc 2: " + annotsDoc2.length + " annots.");
Aggregating Comments for Use in Excel
The 
doc
object’s 
exportDataObject
method may be used to create a tab-delimited 
text file, which can then be used in Excel. To use Acrobat JavaScript to aggregate comments 
for use in Excel, collect all the comments using the 
doc
object’s 
getAnnots
method, 
iterate through them and save them into a tab-delimited string, create a text file 
attachment object using the 
doc
object’s 
createDataObject
method, and pass the 
string to the 
cValue
parameter in the 
exportDataObject
method.
Extracting Comments in a Batch Process
In a batch process, you may open any number of 
doc
objects using the 
app
object’s 
openDoc
method. For each open document, you may invoke its corresponding 
doc
object’s 
getAnnots
method to collect the comments in that file. If you would like to put 
all the comments together in one file, you may do so by creating a new document and 
saving the various arrays of comments into that new file.
Review, Markup, and Approval
Approving Documents Using Stamps (Japanese Workflows)
7
140
Acrobat JavaScript Scripting Guide
Approving Documents Using Stamps (Japanese Workflows)
Approval workflows are similar to other email-based collaborative reviews, and provide you 
with the ability to set the order in which participants are contacted. This means that, based 
on the approval issued by a participant, the document may be mailed to the next 
participant, and an email may be sent to the initiator.
Setting up a Hanko Approval Workflow
A registered Hanko is a stamp used in Japanese document workflows, and may be used to 
sign official contracts. Every registered hanko is unique and is considered a legal form of 
identification.
A personal Hanko is not registered, and is used for more common types of signatures, such 
as those used in meeting notes or budget proposals. Everyone in an organization who is 
involved in a document review must add their Hanko to the document in order for it to gain 
final approval.
Adding Instructions
Acrobat provides an assistant to help you set up an approval workflow. You may customize 
your workflow as well, by adding form fields to the document containing recipient lists to 
be chosen by the participant. This way, in case there are multiple directions for a given 
branch in the workflow, the participant may invoke automated functions that send the 
document to the correct participants, as well as an email to the initiator containing a record 
of activity.
Sending a Document by Email for Approval
You may use Acrobat JavaScript to automate various steps within the workflow by sending 
the document and other information by email by via the 
doc
object’s 
mailDoc
method.
Topics
Setting up a Hanko Approval Workflow
Participating in a Hanko Approval Workflow
Documents you may be interested
Documents you may be interested