The following C# code example modifies a signature field
named SignatureField1 by locking all fields in the form when
a signature is applied to the signature field and ensuring that
no changes are allowed. After the Signature service returns the PDF
document that contains the modified signature field, the PDF document
is saved as a PDF file named LoanSig.pdf. (This example overwrites
the PDF file that is passed to the Signature service.) (See Modifying Signature Fields.)
???/**
* Ensure that you create a .NET project that uses
* MS Visual Studio 2008 and version 3.5 of the .NET
* framework. This is required to invoke a
* LiveCycle service using MTOM.
*
* For information, see "Invoking LiveCycle using MTOM" in Programming with LiveCycle
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using System.IO;
using ModifySignatureField.ServiceReference1;
namespace ModifySignatureField
{
class Program
{
static void Main(string[] args)
{
try
{
//Create a SignatureServiceClient object
SignatureServiceClient sigClient = new SignatureServiceClient();
sigClient.Endpoint.Address = new System.ServiceModel.EndpointAddress("http://hiro-xp:8080/soap/services/SignatureService?blob=mtom");
//Enable BASIC HTTP authentication
BasicHttpBinding b = (BasicHttpBinding)sigClient.Endpoint.Binding;
b.MessageEncoding = WSMessageEncoding.Mtom;
sigClient.ClientCredentials.UserName.UserName = "administrator";
sigClient.ClientCredentials.UserName.Password = "password";
b.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;
b.Security.Mode = BasicHttpSecurityMode.TransportCredentialOnly;
b.MaxReceivedMessageSize = 2000000;
b.MaxBufferSize = 2000000;
b.ReaderQuotas.MaxArrayLength = 2000000;
//Create a BLOB object to store a PDF document that contains
//a signature field to modify
BLOB inDoc = new BLOB();
//Specify a PDF document that contains a signature field to modify
string path = "C:\\Adobe\LoanSig.pdf";
FileStream fs = new FileStream(path, FileMode.Open);
//Get the length of the file stream
int len = (int)fs.Length;
byte[] byteArray=new byte[len];
//Populate the byte array with the contents of the file stream
fs.Read(byteArray, 0, len);
//Populate the BLOB object
inDoc.MTOM = byteArray;
//Specify the name of the signature field
string fieldName = "SignatureField1";
//Create a PDFSignatureFieldProperties
PDFSignatureFieldProperties fieldProperties = new PDFSignatureFieldProperties();
//Create a PDFSeedValueOptionSpec object that stores
//seed value dictionary information.
PDFSeedValueOptionSpec seedOptionsSpec = new PDFSeedValueOptionSpec();
//Disallow changes to the PDF document. Any change to the document invalidates
//the signature
seedOptionsSpec.mdpValue = MDPPermissions.NoChanges;
//Create a FieldMDPOptionSpec object that stores
//signature field lock dictionary information
FieldMDPOptionSpec fieldMDPOptionsSpec = new FieldMDPOptionSpec();
//Lock all fields in the PDF document
fieldMDPOptionsSpec.action = FieldMDPAction.ALL;
//Set dictionary information
fieldProperties.seedValue = seedOptionsSpec;
fieldProperties.fieldMDP = fieldMDPOptionsSpec;
//Add a signature field to the PDF document
BLOB sigFieldPDF = sigClient.modifySignatureField(inDoc, fieldName, fieldProperties);
//Populate a byte array with the contents of the BLOB object
byte[] outByteArray = sigFieldPDF.MTOM;
//Save the PDF document that contains the signature field
string FILE_NAME = "C:\\Adobe\Loan.pdf";
FileStream fs2 = new FileStream(FILE_NAME, FileMode.OpenOrCreate);
BinaryWriter w = new BinaryWriter(fs2);
w.Write(outByteArray);
w.Close();
fs2.Close();
}
catch (Exception ee)
{
Console.WriteLine(ee.Message);
}
}
}
}
|
|
|