Digital signatures appear in signature fields, which are
form fields that contain a graphic representation of the signature.
Signature fields can be visible or invisible. Signers can use a
preexisting signature field, or a signature field can be programmatically
added. In either case, the signature field must exist before a PDF
document can be signed.
You can programmatically add a signature field by using the Signature
service Java API or Signature web service API. You can add more
than one signature field to a PDF document; however, each signature
field name must be unique.
Note:
Some PDF document types do not let you programmatically
add a signature field. For more information about the Signature
service and adding signature fields, see
Services Reference for LiveCycle
.
Summary of steps
To add a signature field to a PDF document, perform the
following tasks:
-
Include project files.
-
Create a Signature client.
-
Get a PDF document to which a signature field is added.
-
Add a signature field.
-
Save the PDF document as a PDF file.
Include project files
Include necessary files into your development
project. If you are creating a client application using Java, include
the necessary JAR files. If you are using web services, ensure that
you include the proxy files.
The following JAR files must
be added to your project’s classpath:
-
adobe-livecycle-client.jar
-
adobe-usermanager-client.jar
-
adobe-signatures-client.jar
-
adobe-utilities.jar (required if LiveCycle is deployed
on JBoss)
-
jbossall-client.jar (required if LiveCycle is deployed
on JBoss)
Create a Signature client
Before you can programmatically perform
a Signature service operation, you must create a Signature service
client.
Get a PDF document to which a signature field is added
You
must obtain a PDF document to which a signature field is added.
Add a signature field
To successfully add a signature field
to a PDF document, you specify coordinate values that identify the
location of the signature field. (If you add an invisible signature
field, these values are not required.) Also, you can specify which
fields in the PDF document are locked after a signature is applied
to the signature field.
Save the PDF document as a PDF file
After the Signature service
adds a signature field to the PDF document, you can save the document
as a PDF file so that users can open it in Acrobat or Adobe Reader.
Add signature fields using the Java API
Add a signature field by using the Signature API (Java):
-
Include project files
Include client JAR files,
such as adobe-signatures-client.jar, in your Java project’s classpath.
-
Create a Signature client
-
Get a PDF document to which a signature field is added
-
Create a
java.io.FileInputStream
object
that represents the PDF document to which a signature field is added
by using its constructor and passing a string value that specifies
the location of the PDF document.
-
Create a
com.adobe.idp.Document
object by
using its constructor and passing the
java.io.FileInputStream
object.
-
Add a signature field
-
Create a
PositionRectangle
object
that specifies the signature field location by using its constructor.
Within the constructor, specify coordinate values.
-
If desired, create a
FieldMDPOptions
object
that specifies the fields that are locked when a digital signature
is applied to the signature field.
-
Add a signature field to a PDF document by invoking the
SignatureServiceClient
object’s
addSignatureField
method and
passing the following values:
-
A
com.adobe.idp
.
Document
object
that represents the PDF document to which a signature field is added.
-
A string value that specifies the name of the signature field.
-
A
java.lang.Integer
value that represents
the page number to which a signature field is added.
-
A
PositionRectangle
object that specifies
the location of the signature field.
-
A
FieldMDPOptions
object that specifies
fields in the PDF document that are locked after a digital signature
is applied to the signature field. This parameter value is optional,
and you can pass
null
.
-
A
PDFSeedValueOptions
object that specifies
various run-time values. This parameter value is optional, and you
can pass
null
.
The
addSignatureField
method
returns a
com.adobe.idp
.
Document
object
that represents a PDF document that contains a signature field.
Note:
You can invoke the
SignatureServiceClient
object’s
addInvisibleSignatureField
method
to add an invisible signature field.
-
Save the PDF document as a PDF file
-
Create
a
java.io.File
object and ensure that the file
extension is .pdf.
-
Invoke the
com.adobe.idp
.
Document
object’s
copyToFile
method to
copy the contents of the
Document
object to the
file. Ensure that you use the
com.adobe.idp
.
Document
object
that was returned by the
addSignatureField
method.
Add signature fields using the web service API
To add a signature field by using the Signature API (web
service):
-
Include project files
Create a Microsoft .NET
project that uses MTOM. Ensure that you use the following WSDL definition:
http://localhost:8080/soap/services/SignatureService?WSDL&lc_version=9.0.1
.
Note:
Replace
localhost
with the IP
address of the server hosting LiveCycle.
-
Create a Signature client
-
Create a
SignatureServiceClient
object
by using its default constructor.
-
Create a
SignatureServiceClient.Endpoint.Address
object
by using the
System.ServiceModel.EndpointAddress
constructor. Pass
a string value that specifies the WSDL to the LiveCycle service
(for example,
http://localhost:8080/soap/services/SignatureService?WSDL
).
You do not need to use the
lc_version
attribute.
This attribute is used when you create a service reference.)
-
Create a
System.ServiceModel.BasicHttpBinding
object
by getting the value of the
SignatureServiceClient.Endpoint.Binding
field.
Cast the return value to
BasicHttpBinding
.
-
Set the
System.ServiceModel.BasicHttpBinding
object’s
MessageEncoding
field
to
WSMessageEncoding.Mtom
. This value ensures that
MTOM is used.
-
Enable basic HTTP authentication by performing the following
tasks:
-
Assign the AEM forms user name to the
field
SignatureServiceClient.ClientCredentials.UserName.UserName
.
-
Assign the corresponding password value to the field
SignatureServiceClient.ClientCredentials.UserName.Password
.
-
Assign the constant value
HttpClientCredentialType.Basic
to the
field
BasicHttpBindingSecurity.Transport.ClientCredentialType
.
-
Assign the constant value
BasicHttpSecurityMode.TransportCredentialOnly
to
the field
BasicHttpBindingSecurity.Security.Mode
.
-
Get a PDF document to which a signature field is added
-
Create a
BLOB
object by using its constructor.
The
BLOB
object is used to store the PDF document
that will contain a signature field.
-
Create a
System.IO.FileStream
object by
invoking its constructor and passing a string value that represents
the file location of the PDF document and the mode in which to open
the file.
-
Create a byte array that stores the content of the
System.IO.FileStream
object.
You can determine the size of the byte array by getting the
System.IO.FileStream
object’s
Length
property.
-
Populate the byte array with stream data by invoking the
System.IO.FileStream
object’s
Read
method
and passing the byte array, the starting position, and the stream
length to read.
-
Populate the
BLOB
object by assigning its
MTOM
property
with the contents of the byte array.
-
Add a signature field
Add a signature field to the
PDF document by invoking the
SignatureServiceClient
object’s
addSignatureField
method and
passing the following values:
-
A
BLOB
object
that represents the PDF document to which a signature field is added.
-
A string value that specifies the signature field name.
-
An integer value that represents the page number to which
a signature field is added.
-
A
PositionRect
object that specifies the
location of the signature field.
-
A
FieldMDPOptions
object that specifies
fields in the PDF document that are locked after a digital signature
is applied to the signature field. This parameter value is optional,
and you can pass
null
.
-
A
PDFSeedValueOptions
object that specifies
various run-time values. This parameter value is optional, and you
can pass
null
.
The
addSignatureField
method
returns a
BLOB
object that represents a PDF document
that contains a signature field.
-
Save the PDF document as a PDF file
-
Create
a
System.IO.FileStream
object by invoking its constructor and
passing a string value that represents the file location of the
PDF document that will contain the signature field and the mode
in which to open the file.
-
Create a byte array that stores the content of the
BLOB
object
that was returned by the
addSignatureField
method.
Populate the byte array by getting the value of the
BLOB
object’s
binaryData
data
member.
-
Create a
System.IO.BinaryWriter
object by
invoking its constructor and passing the
System.IO.FileStream
object.
-
Write the contents of the byte array to a PDF file by invoking
the
System.IO.BinaryWriter
object’s
Write
method
and passing the byte array.
|
|
|