The following C# code example creates two text patterns
that the Output service searches for. The first text pattern is
Mortgage. If found, the Output service uses the form design named Mortgage.xdp.
The second text pattern is Automobile. If found, the Output service
uses the form design named AutomobileLoan.xdp. If neither
text pattern is located, the Output service uses the default form
design named Loan.xdp. The Loan.pdf is written to
the C:\Adobe folder located on the J2EE application server hosting
LiveCycle, not the client computer. (See Creating Search Rules.)
/**
* 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;
//A reference to the Output service
using CreateSearchRules.ServiceReference1;
namespace CreateSearchRules
{
class Program
{
static void Main(string[] args)
{
try
{
//Create an OutputServiceClient object
OutputServiceClient outputClient = new OutputServiceClient();
outputClient.Endpoint.Address = new System.ServiceModel.EndpointAddress("http://hiro-xp:8080/soap/services/OutputService?blob=mtom");
//Enable BASIC HTTP authentication
BasicHttpBinding b = (BasicHttpBinding)outputClient.Endpoint.Binding;
b.MessageEncoding = WSMessageEncoding.Mtom;
outputClient.ClientCredentials.UserName.UserName = "administrator";
outputClient.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 form data
BLOB inData = new BLOB();
//Reference XML data to merge into the PDF document
string inputFileName = "C:\\Adobe\Loan.xml";
FileStream fs = new FileStream(inputFileName, FileMode.Open);
//Get the length of the file stream and create a byte array
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
inData.MTOM = byteArray;
//Define two sets of rules
Rule mortageRule = new Rule();
mortageRule.pattern = "Mortgage";
mortageRule.form = "Mortgage.xdp";
Rule automobileRule = new Rule();
automobileRule.pattern = "Automobile";
automobileRule.form = "AutomobileLoan.xdp";
//Add the Rules to a MyArrayOfXsdAnyType object
MyArrayOf_xsd_anyType inputRules = new MyArrayOf_xsd_anyType();
inputRules.Add(mortageRule);
inputRules.Add(automobileRule);
//Set PDF run-time options - including the rules
PDFOutputOptionsSpec pdfOptions = new PDFOutputOptionsSpec();
pdfOptions.fileURI = "C:\\Adobe\Loan.pdf";
pdfOptions.lookAhead = 300;
pdfOptions.rules = inputRules;
//Set rendering run-time options
RenderOptionsSpec renderOptions = new RenderOptionsSpec();
renderOptions.cacheEnabled = true;
//Create empty objects to pass as arguments
//to the generatePDFOutput method
//These objects are populated by the method
BLOB generatePDFOutputMetaDataDoc = new BLOB();
BLOB generatePDFOutputResultDoc = new BLOB();
OutputResult outResult = new OutputResult();
//Create a PDF Document using search rules
outputClient.generatePDFOutput(TransformationFormat.PDF,
"Loan.xdp",
"C:\\Adobe",
pdfOptions,
renderOptions,
inData,
out generatePDFOutputMetaDataDoc,
out generatePDFOutputResultDoc,
out outResult);
//Write the result data to Output.xml
//Populate a byte array with BLOB data
byte[] outByteArray = generatePDFOutputResultDoc.MTOM;
//Create a new file to store result data
string FILE_NAME = "C:\\Adobe\Output.xml";
FileStream fs2 = new FileStream(FILE_NAME, FileMode.OpenOrCreate);
//Create a BinaryWriter object
BinaryWriter w = new BinaryWriter(fs2);
w.Write(outByteArray);
w.Close();
fs2.Close();
}
catch (Exception ee)
{
Console.WriteLine(ee.Message);
}
}
}
}
Note: Notice that you have to specify the out keyword
in front of the additional web service arguments that are passed
to the generatePDFOutput method.
|
|
|