c# save pdf : Create bookmarks in pdf from excel software SDK cloud windows wpf asp.net class AcroJSGuide20-part342

Acrobat JavaScript Scripting Guide
201
12
Security
Introduction
This chapter will introduce you to the various security options available through Acrobat 
JavaScript. You will understand how to customize security in PDF documents by applying 
passwords and digital signatures, certifying documents, encrypting files, adding security to 
attachments, managing digital IDs and certificates, and customizing security policies.
Chapter Goals
At the end of this chapter, you will be able to:
Understand the Acrobat JavaScript security model supporting PDF documents.
Use Acrobat JavaScript to add, remove, and validate digital signatures in a PDF 
document.
Use Acrobat JavaScript to apply passwords, security options, usage rights, and 
encryption to PDF documents and attachments.
Use Acrobat JavaScript to create, use, and manage digital IDs and certificates.
Contents
Topics
Security Essentials
Digitally Signing PDF Documents
Adding Security to PDF Documents
Digital IDs and Certification Methods
Create bookmarks in pdf from excel - 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
how to create bookmarks in pdf file; creating bookmarks pdf
Create bookmarks in pdf from excel - 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
pdf bookmark; convert word to pdf with bookmarks
Security
Security Essentials
12
202
Acrobat JavaScript Scripting Guide
Security Essentials
Acrobat JavaScript provides a number of objects that support security. These are managed 
by the 
security
securityPolicy
, and 
securityHandler
objects for managing 
certificates, security policies, and signatures. The 
certificate
directory
signatureInfo
, and 
dirConnection
objects are used to manage digital signatures 
and access the user certificates.
Methods for Adding Security to PDF Documents
The general procedures for applying various types of security to a PDF document are 
described below. Details and examples are provided in the later sections of this chapter.
Passwords and Restrictions
The basic way to protect a document from unauthorized access is to encrypt it for a list of 
authorized recipients using the 
doc
object’s 
encryptForRecipients
method. This 
essentially requires that the authorized recipients use a private key or credential to gain 
access to it. Restrictions may be applied so that the recipients’ access to the document may 
be controlled.
Certifying Documents
The author signature for a document is what makes modification detection and prevention 
(mdp) possible. When this type of signature is applied, it is possible to certify the document, 
which means that you will specify information about its contents and the types of changes 
that are allowed in order for the document to remain certified.
To apply an author signature to a document, create an author signature field using the 
doc
object’s 
addField
method. Then sign the field using the 
field
object’s 
signatureSign
method, in which you will provide parameters containing the security 
handler, a 
signatureInfo
object containing an 
mdp
property value other than 
allowAll
, and a legal attest explaining why certain legal warnings are embedded in the 
document. The 
signatureInfo
object has properties common to all security handlers. 
These properties are described below in Table 12.1:
T
ABLE
12.1
SignatureInfo Properties
Property
Description
buildInfo
Software build and version for the signature
date
Date and time of the signature
handlerName
Security handler name specified in the Filter attribute 
in the signature dictionary
handlerUserName
Security handler name specified by 
handlerName
handlerUIName
Security handler name specified by 
handlerName
VB.NET PDF File Compress Library: Compress reduce PDF size in vb.
Bookmarks. inputFilePath = Program.RootPath + "\\" 3.pdf"; String outputFilePath = Program.RootPath + "\\" 3_optimized.pdf"; 'create optimizing options
creating bookmarks in pdf from word; create pdf bookmarks
VB.NET PDF File Split Library: Split, seperate PDF into multiple
file into multiple ones by PDF bookmarks or outlines As String = Program.RootPath + "\\" 1.pdf" Dim outputFileName 1 to (Page Count - 1). ' Create output PDF
export bookmarks from pdf to excel; pdf export bookmarks
Acrobat JavaScript Scripting Guide
203
Security
Security Essentials
12
Encrypting Files Using Certificates
When you invoke the 
doc
object’s 
encryptForRecipients
method, it encrypts the 
document using the public key certificates of each recipient. The groups of recipients are 
specified in the 
oGroups
parameter, which is an array of 
Group
objects, each of which 
contains two properties: 
permissions
and 
userEntities
. The 
userEntities
property is an array of 
UserEntity
objects (described below in Table 12.2), each of which 
describes a user and their associated certificates, and is returned by a call to the 
dirConnection
object’s 
search
method. The associated certificates are represented in 
a property containing an array of 
Certificate
objects (described below in Table 12.3), 
each of which contains read-only access to the properties of an X.509 public key certificate.
To obtain a group of recipients (the 
oGroups
parameter mentioned above), you may 
invoke the 
security
object’s 
chooseRecipientsDialog
method, which opens a 
dialog box prompting the user to choose a list of recipients.
location
Physical location or hostname
mdp
Modification detection and prevention setting 
(
allowNone
allowAll
default
defaultAndComments
)
name
Name of the user
numFieldsAltered
Number of fields altered since the previous signature
numFieldsFilledIn
Number of fields filled in since the previous signature
numPagesAltered
Number of pages altered since the previous signature
numRevisions
The number of revisions in the document
reason
Reason for signing
revision
Signature revision
status
Validity status (
4
represents a completely valid 
signature)
statusText
String representation of signature status
subFilter
Formats used for public key signatures
verifyHandlerName
Security handler used to validate signature
verifyHandlerUIName Handler specified by 
verifyHandlerName
T
ABLE
12.1
SignatureInfo Properties
Property
Description
C# PDF File Compress Library: Compress reduce PDF size in C#.net
Bookmarks. inputFilePath = Program.RootPath + "\\" 3.pdf"; String outputFilePath = Program.RootPath + "\\" 3_optimized.pdf"; // create optimizing options
how to add bookmarks to a pdf; bookmark pdf reader
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.
how to add bookmarks on pdf; creating bookmarks pdf files
Security
Security Essentials
12
204
Acrobat JavaScript Scripting Guide
T
ABLE
12.2
UserEntity Object Properties
Property
Description
firstName
the first name of the user
lastName
the last name of the user
fullName
the full name of the user
certificates
array of 
Certificate
objects for the user
defaultEncryptCert the preferred 
Certificate
T
ABLE
12.3
Certificate Object Properties
Property
Description
binary
the raw bytes of the certificate
issuerDN
the distinguished name of the user
keyUsage
the value of the certificate key usage extension
MD5Hash
the MD5 digest of the certificate
SHA1Hash
the SHA1 digest of the certificate
serialNumber
a unique identifier for the certificate
subjectCN
the common name of the signer
subjectDN
the distinguished name of the signer
usage
purposes: end-user signing or encryption
ubrights
an application 
Rights
object
C# Create PDF Library SDK to convert PDF from other file formats
Create multipage PDF from OpenOffice and CSV file. Create and save editable PDF with a blank page, bookmarks, links, signatures, etc.
export pdf bookmarks to excel; editing bookmarks in pdf
XDoc.Excel for .NET, Comprehensive .NET Excel Imaging Features
navigation, zooming & rotation; Outlines, bookmarks, & thumbnail Convert Excel to PDF; Convert Excel to HTML5; Create Excel with one blank page; Load Excel from
excel print to pdf with bookmarks; split pdf by bookmark
Acrobat JavaScript Scripting Guide
205
Security
Digitally Signing PDF Documents
12
Security Policies
Security policies are common specifications that include the type of encryption, the 
permission settings, and the password or public key to be used. You may create folder-level 
scripts containing objects that reflect these policies. Security policies may be customized 
through the use of 
securityPolicy
objects, which may be accessed and managed by 
the 
security
object’s 
getSecurityPolicies
and 
chooseSecurityPolicy
methods, as well as the 
doc
object’s 
encryptUsingPolicy
and 
encryptforAPS
methods.
Secure Forms
You can lock form fields by creating a script containing a call to the 
signature
field’s 
setLock
method, and passing that script as the second parameter to the 
signature
field’s 
setAction
method. 
In addition, you may sign an embedded FDF data object by invoking its 
signatureSign
method, and subsequently validate the signature by invoking its 
signatureValidate
method.
Digitally Signing PDF Documents
A digital signature contains identifying information about the person signing the 
document. When applying an author signature (the first time a signature is applied to a 
document), it is also possible to certify the document. This involves providing a legal attest 
with regard to the document’s contents and specifying the types of changes allowed for 
the document in order for it to remain certified.
Signing a PDF Document
To sign a document, create a signature field, choose a security handler, and invoke the 
field’s 
signatureSign
method, which accepts the following parameters:
oSig
: the security handler object
oInfo
: a 
signatureInfo
object
cDIPath
: the device-independent path to which the file will subsequently be saved
bUI
: whether the security handler will display a user interface when signing
cLegalAttest
: a string explaining legal warnings (for author signatures only)
The creation and usage of these parameters are explained below in the following sections: 
The Security Handler ObjectThe SignatureInfo Object, and Applying the Signature.
.NET PDF SDK - Description of All PDF Processing Control Feastures
bookmarks, & thumbnail display; Integrated annotation; More about Web Viewer ▶. Conversion. PDF Create. Create PDF from Word (docx, doc); Create PDF from Excel
delete bookmarks pdf; add bookmarks to pdf online
VB.NET Create PDF Library SDK to convert PDF from other file
Create multipage PDF from OpenOffice and CSV file. Create and save editable PDF with a blank page, bookmarks, links, signatures, etc.
how to bookmark a pdf document; add bookmarks pdf
Security
Digitally Signing PDF Documents
12
206
Acrobat JavaScript Scripting Guide
The Security Handler Object
To obtain a security handler (the 
oSig
parameter), invoke the 
security
object’s 
getHandler
method, which creates a new security handler engine, and accepts the 
following parameters:
cName
: the name of the security handler (contained in the 
security
object’s 
handlers
property)
bUIEngine
: the existing engine associated with the Acrobat user interface
The following code illustrates how to set up signature validation whenever the document is 
opened, lists all available security handlers, and selects the 
Adobe.PPKLite
engine 
associated with the Acrobat user interface:
// Validate signatures when the document is opened:
security.validateSignaturesOnOpen = true;
// List all the available signature handlers
for (var i=0; i<security.handlers.length; i++)
console.println(security.handlers[i]);
// Select the Adobe.PPKLite engine with Acrobat user interface:
var ppklite = security.getHandler("Adobe.PPKLite", true);
After obtaining the security handler, invoke the 
securityHandler
object’s 
login
method, which makes it possible to access and select your digital ID, as shown in the 
following code:
var oParams = {
password: "myPassword", 
cDIPath: "/C/signatures/myName.pfx" // digital signature profile
};
ppklite.login(oParams);
The SignatureInfo Object
To create the 
oInfo
parameter for the signature field’s 
signatureSign
method, create 
a generic object containing the properties as described above in Table 12.1. An example of 
its usage when creating an author signature is given below:
var myInfo = {
password: "myPassword",
location: "San Jose, CA",
reason: "I am approving this document",
contactInfo: "userName@adobe.com",
appearance: "Fancy",
mdp: "allowNone" // an mdp value is needed for author signatures
};
Acrobat JavaScript Scripting Guide
207
Security
Digitally Signing PDF Documents
12
Applying the Signature
Now that the security handler and signature information have been created, you may 
invoke the signature field’s 
signatureSign
method, as shown in the code below:
// Obtain the signature field object:
var f = this.getField("myAuthorSignatureField");
// Sign the field:
f.signatureSign(
oSig: ppklite,
oInfo: myInfo,
cDIPath: "/C/mySignedFile.pdf",
bUI: true,
cLegalAttest: "Fonts are not embedded to reduce file size"
); //end of signature
Creating a New Signature Appearance
You may create a new signature appearance through the Acrobat user interface, access 
signature appearances through the 
appearances
property of the 
securityHandler
object, and use the signature field’s 
signatureSetSeedValue
method, which accepts 
SeedValue
object used to control signature properties. 
One of the 
SeedValue
properties is called 
subFilter
, which is an array of acceptable 
formats to use for the signature. In the following example, the signing handler is set to 
PPKMS
and the format is set to 
adbe.pksc7.sha1
:
var f = this.getField("mySignatureField");
f.signatureSetSeedValue({
filter: "Adobe.PPKMS",
subFilter: ["adbe.pksc7.sha1"],
flags: 0x03
});
Clearing a Digital Signature from a Signature Field
To clear a signature, invoke the 
doc
object’s 
resetForm
method. In the example below, 
mySignatureField
is cleared:
var f = this.getField("mySignatureField");
this.resetForm(f);
Security
Digitally Signing PDF Documents
12
208
Acrobat JavaScript Scripting Guide
Getting Signature Information from Another User
You may maintain a list of trusted user identities by adding the certificates contained within 
FDF files sent to you by other users. You may also obtain signature information from an FDF 
file by invoking the 
FDF
object’s 
signatureValidate
method, which returns a 
signatureInfo
object, as shown in the example below:
// Open the FDF file sent to you by the other user:
var fdf = app.openFDF("/C/myDoc.fdf");
// Obtain the security handler:
var engine = security.getHandler("Adobe.PPKLite");
// Check to see if the FDF has been signed:
if (fdf.isSigned)
{
// Obtain the other user’s signature info:
sigInfo = fdf.signatureValidate({
oSig: engine,
bUI: true
});
// Display the signature status and description:
console.println("Signature Status: " + sigInfo.status);
console.println("Description: " + sigInfo.statusText);
}
else
console.println("This FDF was not signed.");
Removing Signatures
To remove a signature field, invoke the 
doc
object’s 
removeField
method. In the 
example below, 
mySignatureField
is removed:
var f = this.getField("mySignatureField");
this.removeField(f);
Certifying a Document
When applying an author signature to certify a document, check 
trustFlags
, which is a 
read-only property of the 
signatureInfo
object. If its value is 
2
, the signer is trusted for 
certifying documents.
Acrobat JavaScript Scripting Guide
209
Security
Digitally Signing PDF Documents
12
Validating Signatures
To validate a signature, invoke the signature field’s 
signatureValidate
method, which 
returns one of the following integer validity status values:
-1
: not a signature field
0
: signature is blank
1
: unknown status
2
: signature is invalid
3
: signature is valid, identity of signer could not be verified
4
: signature and identity of signer are both valid
The method accepts two parameters:
oSig
: the security handler used to validate the signature (a 
securityHandler
or 
SignatureParameters
object)
bUI
: determines whether the user interface is shown when validating the data file
SignatureParameters
object contains two properties:
oSecHdlr
: the security handler object
bAltSecHdlr
: determines whether an alternate security handler may be used
In the following example, 
mySignatureField
is analyzed for validity:
// Obtain the signature field:
var f = this.getField("mySignatureField");
// Validate the signature field:
var status = f.signatureValidate();
// Obtain the signature information
var sigInfo = f.signatureInfo();
// Check the status returned from the validation:
if (status < 3)
var msg = "Signature is not valid: " + sigInfo.statusText;
else
var msg = "Signature is valid: " + sigInfo.statusText;
// Display the status message:
app.alert(msg);;
Using Approval Stamps
You may apply a stamp annotation to a document that indicates whether approval is 
indicated. To do this, set the annotation’s 
AP
property to either 
Approved
or 
NotApproved
, as shown in the example below:
Security
Adding Security to PDF Documents
12
210
Acrobat JavaScript Scripting Guide
var annot = this.addAnnot({
page: 0,
type: "Stamp",
author: "A.C. Robat",
rect: [400, 400, 550, 500],
contents: "This is good."
AP: "Approved"
});
Setting Digital Signature Preferences
When applying digital signatures, you may specify the appearance and the default signing 
method. In addition, you may set the 
security
object’s 
validateSignaturesOnOpen
property to verify signatures whenever the document is 
opened, and set up policies that examine the signature information. Signature information 
may be obtained by invoking the signature field’s 
signatureInfo
method. At this point 
you can customize the behavior based on the information found within the 
signatureInfo
object.
The following example illustrates how to access the signature information:
// Obtain the signature field:
var f = this.getField("mySignatureField");
// Validate the signature field:
var status = f.signatureValidate();
// Obtain the signature information
var sigInfo = f.signatureInfo();
console.println("Name: " + sigInfo.name);
console.println("Reason: " + sigInfo.reason);
console.println("Date: " + sigInfo.date);
console.println("Contact Info: " + sigInfo.contactInfo);
Adding Security to PDF Documents
Adding Passwords and Setting Security Options
Since the Standard security handler, used for password encryption of documents, is not 
JavaScript-enabled, the most direct way to add passwords is through the creation of user or 
master passwords in the Acrobat user interface.
As you learned earlier in Encrypting Files Using Certificates, you may encrypt a document 
for a number of recipients using certificates, and can set security policies through the 
Documents you may be interested
Documents you may be interested