Invocation API Quick Starts invocation-api-quick-starts
Samples and examples in this document are only for AEM Forms on JEE environment.
The following Quick Starts are available for programmatically invoking AEM Forms services:
AEM Forms operations can be performed using the AEM Forms strongly typed API and the connection mode should be set to SOAP.
Quick Start: Invoking a short-lived process using the Invocation API quick-start-invoking-a-short-lived-process-using-the-invocation-api
The following Java code example invokes a short-lived process named MyApplication/EncryptDocument
. Notice that this process is invoked synchronously. The input parameter for this process is named inDoc
. The output parameter for this process is named outDoc
. The password encrypted PDF document is saved as a PDF file named EncryptLoan.pdf
. (See Invoking a short-lived process using the Invocation API.)
 /*
  * This Java Quick Start uses the SOAP mode and contains the following JAR files
  * in the class path:
  * 1. adobe-convertpdf-client.jar
  * 2. adobe-livecycle-client.jar
  * 3. adobe-usermanager-client.jar
  * 4. adobe-utilities.jar
  * 5. jboss-client.jar (use a different JAR file if the Forms Server is not deployed
  * on JBoss)
  * 6. jacorb.jar (use a different JAR file if the Forms Server is not deployed on JBoss)
  * 7. jnp-client.jar (use a different JAR file if the Forms Server is not deployed on JBoss)
  *
  * The JBoss files must be kept in the jboss\client folder. You can copy the client folder to
  * your local development environment and then include the 3 JBoss JAR files in your class path
  *
  * These JAR files are in the following path:
  * <install directory>/sdk/client-libs/common
  *
  * The adobe-utilities.jar file is in the following path:
  * <install directory>/sdk/client-libs/jboss
  *
  * The jboss-client.jar file is in the following path:
  * <install directory>/jboss/bin/client
  *
  * If you want to invoke a remote Forms Server instance and there is a
  * firewall between the client application and the server, then it is
  * recommended that you use the SOAP mode. When using the SOAP mode,
  * you have to include additional JAR files in the following
  * path
  * <install directory>/sdk/client-libs/thirdparty
  *
  * For information about the SOAP
  * mode and the additional JAR files that need to be included,
  * see "Setting connection properties" in Programming
  * with AEM Forms
  *
  * For complete details about the location of the AEM Forms JAR files,
  * see "Including AEM Forms Java library files" in Programming
  * with AEM Forms
  */
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.InputStream;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Properties;
 import com.adobe.idp.Document;
 import com.adobe.idp.dsc.InvocationRequest;
 import com.adobe.idp.dsc.InvocationResponse;
 import com.adobe.idp.dsc.clientsdk.ServiceClient;
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactory;
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties;
  public class InvokeDocumentEncryptLooselyTypedAPI {
  public static void main(String[] args)
  {
  try
  {
  //Set connection properties required to invoke AEM Forms
  Properties connectionProps = new Properties();
  connectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_SOAP_ENDPOINT, "https://'[server]:[port]'");
  connectionProps.setProperty(ServiceClientFactoryProperties.DSC_TRANSPORT_PROTOCOL,ServiceClientFactoryProperties.DSC_SOAP_PROTOCOL);
  connectionProps.setProperty(ServiceClientFactoryProperties.DSC_SERVER_TYPE, "JBoss");
  connectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_USERNAME, "administrator");
  connectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_PASSWORD, "password");
  // Create a ServiceClientFactory instance
  ServiceClientFactory factory = ServiceClientFactory.createInstance(connectionProps);
  //Create a ServiceClient object
  ServiceClient myServiceClient = factory.getServiceClient();
  //Create a Map object to store the parameter value
  Map params = new HashMap();
  InputStream inFile = new FileInputStream("C:\\51ºÚÁϲ»´òìÈ\Loan.pdf");
  Document inDoc = new Document(inFile);
  //Populate the Map object with a parameter value
  //required to invoke the MyApplication/EncryptDocument short-lived process
  //inDoc refers to the name of the input parameter for the process
  params.put("inDoc", inDoc);
  //Create an InvocationRequest object
  InvocationRequest request = factory.createInvocationRequest(
  "MyApplication/EncryptDocument", //Specify the short-lived process name
  "invoke", //Specify the operation name
  params, //Specify input values
  true); //Create a synchronous request
  //Send the invocation request to the short-lived process and
  //get back an invocation response -- outDoc refers to the output parameter for the
  //MyApplication/EncryptDocument process
  InvocationResponse response = myServiceClient.invoke(request);
  Document encryptDoc = (Document) response.getOutputParameter("outDoc");
  //Save the encrypted PDF document returned by the process
  //Save the password-encrypted PDF document
  File outFile = new File("C:\\51ºÚÁϲ»´òìÈ\EncryptLoan.pdf");
  encryptDoc.copyToFile (outFile);
  }catch (Exception e) {
  e.printStackTrace();
  }
  }
 }
Quick Start: Invoking a service using base64 in a Microsoft .NET project quick-start-invoking-a-service-using-base64-in-a-microsoft-net-project
The following C# code example invokes a process named MyApplication/EncryptDocument
from a Microsoft .NET project using Base64 encoding. (See Invoking AEM Forms using Base64 encoding.)
An unsecured PDF document based on a PDF file named Loan.pdf is passed to the AEM Forms process. The process returns a password-encrypted PDF document that is saved as a PDF file named EncryptedPDF.pdf.
 /*
  * Ensure that you create a .NET client assembly that uses
  * base64 encoding. This is required to populate a BLOB
  * object with data or retrieve data from a BLOB object.
  *
  * For information, see "Invoking AEM Forms using Base64 Encoding" in
  * Programming with AEM forms
  */
 using System;
 using System.Collections;
 using System.ComponentModel;
 using System.Data;
 using System.IO;
 namespace InvokeEncryptDocumentBase64
 {
  class InvokeEncryptDocumentUsingBase64
  {
  const int BUFFER_SIZE = 4096;
  [STAThread]
  static void Main(string[] args)
  {
  try
  {
  String pdfFile = "C:\\51ºÚÁϲ»´òìÈ\Loan.pdf";
  String encryptedPDF = "C:\\51ºÚÁϲ»´òìÈ\EncryptedPDF.pdf";
  //Create an MyApplication_EncryptDocumentService object and set authentication values
  MyApplication2_EncryptDocumentService encryptClient = new MyApplication2_EncryptDocumentService();
  encryptClient.Credentials = new System.Net.NetworkCredential("administrator", "password");
  //Reference the PDF file to send to the EncryptDocument process
  FileStream fs = new FileStream(pdfFile, FileMode.Open);
  //Create a BLOB object
  BLOB inDoc = new BLOB();
  //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 FileStream object
  fs.Read(ByteArray, 0, len);
  inDoc.binaryData = ByteArray;
  //Invoke the EncryptDocument process
  BLOB outDoc = encryptClient.invoke(inDoc);
  //Populate a byte array with BLOB data
  byte[] outByteArray = outDoc.binaryData;
  //Create a file named UsageRightsLoan.pdf
  FileStream fs2 = new FileStream(encryptedPDF, 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);
  }
  }
  }
 }
Quick Start: Invoking a service using Java proxy files and Base64 encoding quick-start-invoking-a-service-using-java-proxy-files-and-base64-encoding
The following Java code example invokes a process named MyApplication/EncryptDocument
using Java proxy files created using JAX-WS and Base64 encoding. (See Invoking AEM Forms using Base64 encoding.)
An unsecured PDF document based on a PDF file named Loan.pdf is passed to the AEM Forms process. The process returns a password-encrypted PDF document that is saved as a PDF file named EncryptedDocument.pdf.
 /**
  * Ensure that you create Java proxy files that consume
  *theAEM Forms service WSDL. You can use JAX-WS to create
  * the Java proxy files.
  *
  * This Java quick start uses Base64 to invoke a short-lived process named
  * EncryptDocument. For information, see
  * "Invoking AEM Forms using Base64" in Programming with AEM forms.
  */
 import java.io.*;
 import javax.xml.ws.BindingProvider;
 import com.adobe.idp.services.*;
 public class InvokeEncryptDocumentBase64 {
  public static void main(String[] args){
  try{
  //Create a MyApplicationEncryptDocument object
  MyApplicationEncryptDocumentService encClient = new MyApplicationEncryptDocumentService();
  MyApplicationEncryptDocument encryptDocClient = encClient.getEncryptDocument();
  //Set connection values required to invoke AEM Forms
  String url = "'[server]:[port]'/soap/services/MyApplication/EncryptDocument?blob=base64";
  String username = "administrator";
  String password = "password";
  ((BindingProvider) encryptDocClient).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, url);
  ((BindingProvider) encryptDocClient).getRequestContext().put(BindingProvider.USERNAME_PROPERTY, username);
  ((BindingProvider) encryptDocClient).getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, password);
  // Get the input PDF document to send to the EncryptDocument process
  BLOB inDoc = new BLOB();
  // Get the input DDX document and input PDF sources
  File fileName = new File("C:\\51ºÚÁϲ»´òìÈ\Loan.pdf");
  FileInputStream inFs = new FileInputStream(fileName);
  // Get the length of the file stream and create a byte array
  int inLen = (int)fileName.length();
  byte[] inByteArray = new byte[inLen];
  // Populate the byte array with the content of the file stream
  inFs.read(inByteArray, 0, inLen);
  // Populate the BLOB objects
  inDoc.setBinaryData(inByteArray);
  //invoke the short-lived process named MyApplication/EncryptDocument
  BLOB outDoc = encryptDocClient.invoke(inDoc);
  //Save the encrypted file as a PDF file
  byte[] encryptedDocument = outDoc.getBinaryData();
  //Create a File object
  File outFile = new File("C:\\51ºÚÁϲ»´òìÈ\EncryptedDocument.pdf");
  //Create a FileOutputStream object.
  FileOutputStream myFileW = new FileOutputStream(outFile);
  //Call the FileOutputStream object's write method and pass the pdf data
  myFileW.write(encryptedDocument);
  //Close the FileOutputStream object
  myFileW.close();
  System.out.println("The short-lived process named MyApplication/EncryptDocument was successfully invoked.");
  }
  catch(Exception e)
  {
  e.printStackTrace();
  }
  }
 }
Quick Start: Invoking a short-lived process by passing an unsecure document using (Deprecated for AEM forms) AEM Forms Remoting quick-start-invoking-a-short-lived-process-by-passing-an-unsecure-document-using-deprecated-for-aem-forms-aem-forms-remoting
The following Flex code example invokes a short-lived process named MyApplication/EncryptDocument
. (See Invoking AEM Forms Using (Deprecated for AEM forms) AEM Forms Remoting.)
 <?xml version="1.0" encoding="utf-8"?>
 <mx:Application xmlns="*"
  creationComplete="initializeChannelSet();">
  <mx:Script>
  <![CDATA[
  import mx.rpc.AEM Forms.DocumentReference;
  import flash.net.FileReference;
  import flash.net.URLRequest;
  import flash.events.Event;
  import flash.events.DataEvent;
  import mx.messaging.ChannelSet;
  import mx.messaging.channels.AMFChannel;
  import mx.rpc.events.ResultEvent;
  import mx.collections.ArrayCollection;
  import mx.rpc.AsyncToken;
  // Classes used in file retrieval
  private var fileRef:FileReference = new FileReference();
  private var docRef:DocumentReference = new DocumentReference();
  private var parentResourcePath:String = "/";
  private var serverPort:String = "'[server]:[port]'";
  private var now1:Date;
  private var cs:ChannelSet
  // Holds information returned from AEM Forms
  [Bindable]
  public var progressList:ArrayCollection = new ArrayCollection();
  // Set up channel set to invoke AEM Forms.
  // This must be done before calling any service or process, but only
  // once for the entire application.
  private function initializeChannelSet():void {
  cs = new ChannelSet();
  cs.addChannel(new AMFChannel("remoting-amf", "https://" + serverPort + "/remoting/messagebroker/amf"));
  EncryptDocument.setCredentials("administrator", "password");
  EncryptDocument.channelSet = cs;
  }
  // Call this method to upload the file.
  // This creates a file picker and lets the user select a PDF file to pass to the EncryptDocument process.
  private function uploadFile():void {
  fileRef.addEventListener(Event.SELECT, selectHandler);
  fileRef.browse();
  }
  private function selectHandler(event:Event):void
  {
  var authTokenService:RemoteObject = new RemoteObject("LC.FileUploadAuthenticator");
  authTokenService.addEventListener("result", authTokenReceived);
  authTokenService.channelSet = cs;
  authTokenService.getFileUploadToken();
  }
  private function authTokenReceived(event:ResultEvent):void
  {
  var token:String = event.result as String;
  var request:URLRequest = DocumentReference.constructRequestForUpload("https://'[server]:[port]'", token);
  try
  {
  fileRef.upload(request);
  }
  catch (error:Error)
  {
  trace("Unable to upload file.");
  }
  }
  // Called once the file is completely uploaded.
  private function completeHandler(event:DataEvent):void {
  now1 = new Date();
  // Set the docRefs url and referenceType parameters
  docRef.url = event.data as String;
  docRef.referenceType=DocumentReference.REF_TYPE_URL;
  executeInvokeProcess();
  }
  //This method invokes the EncryptDocument process
  public function executeInvokeProcess():void {
  //Create an Object to store the input value for the EncryptDocument process
  var params:Object = new Object();
  params["inDoc"]=docRef;
  // Invoke the EncryptDocument process
  var token:AsyncToken;
  token = EncryptDocument.invoke(params);
  token.name = name;
  }
  // This method handles a successful conversion invocation
  public function handleResult(event:ResultEvent):void
  {
  //Retrieve information returned from the service invocation
  var token:AsyncToken = event.token;
  var res:Object = event.result;
  var dr:DocumentReference = res["outDoc"] as DocumentReference;
  var now2:Date = new Date();
  // These fields map to columns in the DataGrid
  var progObject:Object = new Object();
  progObject.filename = token.name;
  progObject.timing = (now2.time - now1.time).toString();
  progObject.state = "Success";
  progObject.link = "<a href=" + dr.url + "> open </a>";
  progressList.addItem(progObject);
  }
  private function resultHandler(event:ResultEvent):void {
  // Do anything else here.
  }
  ]]>
  </mx:Script>
  <mx:RemoteObject id="EncryptDocument" destination="MyApplication/EncryptDocument" result="resultHandler(event);">
  <mx:method name="invoke" result="handleResult(event)"/>
  </mx:RemoteObject>
  <!--//This consists of what is displayed on the webpage-->
  <mx:Panel id="lcPanel" title="EncryptDocument (Deprecated for AEM forms) AEM Forms Remoting Example"
  height="25%" width="25%" paddingTop="10" paddingLeft="10" paddingRight="10"
  paddingBottom="10">
  <mx:Label width="100%" color="blue"
  text="Select a PDF file to pass to the EncryptDocument process"/>
  <mx:DataGrid x="10" y="0" width="500" id="idProgress" editable="false"
  dataProvider="{progressList}" height="231" selectable="false" >
  <mx:columns>
  <mx:DataGridColumn headerText="Filename" width="200" dataField="filename" editable="false"/>
  <mx:DataGridColumn headerText="State" width="75" dataField="state" editable="false"/>
  <mx:DataGridColumn headerText="Timing" width="75" dataField="timing" editable="false"/>
  <mx:DataGridColumn headerText="Click to Open" dataField="link" editable="false" >
  <mx:itemRenderer>
  <mx:Component>
  <mx:Text x="0" y="0" width="100%" htmlText="{data.link}"/>
  </mx:Component>
  </mx:itemRenderer>
  </mx:DataGridColumn>
  </mx:columns>
  </mx:DataGrid>
  <mx:Button label="Select File" click="uploadFile()" />
  </mx:Panel>
 ³æ3°ä;/³¾³æ:´¡±è±è±ô¾±³¦²¹³Ù¾±´Ç²Ô>
Quick Start: Invoking a service using DIME in a .NET project quick-start-invoking-a-service-using-dime-in-a-net-project
The following C# code example invokes a process named MyApplication/EncryptDocument
from a Microsoft .NET project using Dime. (See Invoking AEM Forms using Base64 encoding.)
An unsecured PDF document based on a PDF file named map.pdf is passed to the AEM Forms process using DIME. The process returns a password-encrypted PDF document that is saved as a PDF file named mapEncrypt.pdf.
 /**
  *
  * Ensure that you create a .NET project that uses
  * Web Services Enhancements 2.0. This is required to send a
  * AEM Forms process an attachment using DIME.
  *
  * For information, see "Invoking AEM Forms using DIME" in Programming with AEM forms.
  */
 using System;
 using System.Collections;
 using System.ComponentModel;
 using System.Data;
 using System.IO;
 using Microsoft.Web.Services2.Dime;
 using Microsoft.Web.Services2.Attachments;
 using Microsoft.Web.Services2.Configuration;
 using Microsoft.Web.Services2;
 //The following statement represents a web reference to
 //the Forms Server that contains the process that
 //is invoked
 using ConsoleApplication1.LC_Host;
 namespace ConsoleApplication1
 {
  class InvokeEncryptDocumentUsingDime
  {
  const int BUFFER_SIZE = 4096;
  [STAThread]
  static void Main(string[] args)
  {
  try
  {
  String pdfFile = "C:\\51ºÚÁϲ»´òìÈ\map.pdf";
  String encryptedPDF = "C:\\51ºÚÁϲ»´òìÈ\mapEncrypt.pdf";
  //Create an EncryptDocumentServiceWse object and set authentication values
  EncryptDocumentServiceWse encryptClient = new EncryptDocumentServiceWse();
  encryptClient.Credentials = new System.Net.NetworkCredential("administrator", "password");
  // Create the DIME attachment representing a PDF document
  DimeAttachment inputDocAttachment = new DimeAttachment(
  System.Guid.NewGuid().ToString(),
  "application/pdf",
  TypeFormat.MediaType,
  pdfFile);
  //Create a BLOB object
  BLOB inDoc = new BLOB();
  //Set the DIME attachment ID
  inDoc.attachmentID = inputDocAttachment.Id;
  encryptClient.RequestSoapContext.Attachments.Add(inputDocAttachment);
  //Invoke the EncryptDocument process
  BLOB outDoc = encryptClient.invoke(inDoc);
  //Get the returned attachment identifier value
  String encryptedDocId = outDoc.attachmentID;
  FileStream myStream = new FileStream(encryptedPDF, FileMode.Create, FileAccess.Write);
  //Iterate through the attachments
  foreach (Attachment attachment in encryptClient.ResponseSoapContext.Attachments)
  {
  if (attachment.Id.Equals(encryptedDocId))
  {
  //Create a byte array that contains the encrypted PDF document
  System.IO.Stream mySteam2 = attachment.Stream;
  byte[] myBytes = new byte[mySteam2.Length];
  int size = (int)mySteam2.Length;
  mySteam2.Read(myBytes, 0, size);
  //Save the encrypted PDF document as a PDF file
  FileStream fs2 = new FileStream(encryptedPDF, FileMode.OpenOrCreate);
  //Create a BinaryWriter object
  BinaryWriter w = new BinaryWriter(fs2);
  w.Write(myBytes);
  w.Close();
  fs2.Close();
  Console.Out.WriteLine("Saved converted document at:" + encryptedPDF);
  }
  }
  }
  catch (Exception ee)
  {
  Console.WriteLine(ee.Message);
  }
  }
  }
 }
Quick Start: Invoking a service using DIME in a Java project quick-start-invoking-a-service-using-dime-in-a-java-project
The following Java code example invokes a process named MyApplication/EncryptDocument
using DIME. (See Invoking AEM Forms using DIME.)
An unsecured PDF document based on a PDF file named Loan.pdf is passed to the AEM Forms process using DIME. The process returns a password-encrypted PDF document that is saved as a PDF file named EncryptLoan.pdf.
 /**
  * Ensure that you create Java Axis files that
  * are required to send a AEM Forms process
  * an attachment using DIME.
  *
  * For information, see "Invoking AEM Forms using DIME" in Programming with AEM forms.
  */
 import com.adobe.idp.services.*;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.InputStream;
 import java.net.URL;
 import javax.activation.DataHandler;
 import javax.activation.FileDataSource;
 import org.apache.axis.attachments.AttachmentPart;
 public class InvokeDocumentEncryptDime {
  public static void main(String[] args) {
  try{
  //Create a MyApplicationEncryptDocumentServiceLocator object
  MyApplicationEncryptDocumentServiceLocator locate = new MyApplicationEncryptDocumentServiceLocator ();
  //specify the service target URL and object type
  URL serviceURL = new URL("https://'[server]:[port]'/soap/services/MyApplication/EncryptDocument?blob=dime");
  //Use the binding stub with the locator
  EncryptDocumentSoapBindingStub encryptionClientStub = new EncryptDocumentSoapBindingStub(serviceURL,locate);
  encryptionClientStub.setUsername("administrator");
  encryptionClientStub.setPassword("password");
  //Get the DIME Attachments - which is the PDF document to encrypt
  java.io.File file = new java.io.File("C:\\51ºÚÁϲ»´òìÈ\Loan.pdf");
  //Create a DataHandler object
  DataHandler buildFile = new DataHandler(new FileDataSource(file));
  //Use the DataHandler object to create an AttachmentPart object
  AttachmentPart part = new AttachmentPart(buildFile);
  //get the attachment ID
  String attachmentID = part.getContentId();
  //Add the attachment to the encryption service stub
  encryptionClientStub.addAttachment(part);
  //Inform ES where the attachment is stored by providing the attachment id
  BLOB inDoc = new BLOB();
  inDoc.setAttachmentID(attachmentID);
  BLOB outDoc = encryptionClientStub.invoke(inDoc);
  //Go through the returned attachments and get the encrypted PDF document
  byte[] resultByte = null;
  attachmentID = outDoc.getAttachmentID();
  //Find the proper attachment
  Object[] parts = encryptionClientStub.getAttachments();
  for (int i=0;i<parts.length;i++){
  AttachmentPart attPart = (AttachmentPart) parts[i];
  if (attPart.getContentId().equals(attachmentID)) {
  //DataHandler
  buildFile = attPart.getDataHandler();
  InputStream stream = buildFile.getInputStream();
  byte[] pdfStream = new byte[stream.available()];
  stream.read(pdfStream);
  //Create a File object
  File outFile = new File("C:\\51ºÚÁϲ»´òìÈ\EncryptLoan.pdf");
  //Create a FileOutputStream object.
  FileOutputStream myFileW = new FileOutputStream(outFile);
  //Call the FileOutputStream object?s write method and pass the pdf data
  myFileW.write(pdfStream);
  //Close the FileOutputStream object
  myFileW.close();
  }
  }
  }
  catch(Exception e)
  {
  e.printStackTrace();
  }
  }
 }
Quick Start: Invoking a service using BLOB data over HTTP in a Java project quick-start-invoking-a-service-using-blob-data-over-http-in-a-java-project
The following Java code example invokes a process named MyApplication/EncryptDocument
using data over HTTP. (See Invoking AEM Forms using BLOB data over HTTP.)
An unsecured PDF document based on a PDF file named Loan.pdf is passed to the AEM Forms process using SOAP over HTTP. The PDF file is located at the following URL: https://'[server]:[port]'/FormsQS
. The process returns a password-encrypted PDF document that is saved as a PDF file named EncryptedDocument.pdf.
 /**
  * Ensure that you create Java proxy files that consume
  *theAEM Forms service WSDL. You can use JAX-WS to create
  * the Java proxy files.
  *
  * This Java quick start uses BLOB over HTTP to invoke a short-lived process named
  * EncryptDocument. For information, see
  * "Invoking AEM Forms using BLOB over HTTP" in Programming with AEM forms.
  */
 import java.io.*;
 import java.net.URL;
 import javax.xml.ws.BindingProvider;
 import com.adobe.idp.services.*;
 public class InvokeEncryptDocumentHTTP {
  public static void main(String[] args){
  try{
  //Create a MyApplicationEncryptDocument object
  MyApplicationEncryptDocumentService encClient = new MyApplicationEncryptDocumentService();
  MyApplicationEncryptDocument encryptDocClient = encClient.getEncryptDocument();
  //Set connection values required to invoke AEM Forms using BLOB over HTTP
  String url = "https://'[server]:[port]'/soap/services/MyApplication/EncryptDocument?blob=http";
  String username = "administrator";
  String password = "password";
  ((BindingProvider) encryptDocClient).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, url);
  ((BindingProvider) encryptDocClient).getRequestContext().put(BindingProvider.USERNAME_PROPERTY, username);
  ((BindingProvider) encryptDocClient).getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, password);
  //Create a BLOB object and populate it by invoking the setRemoteURL method
  BLOB inDoc = new BLOB();
  inDoc.setRemoteURL("https://'[server]:[port]'/FormsQS/Loan.pdf");
  //invoke the short-lived process named MyApplication/EncryptDocument
  BLOB outDoc = encryptDocClient.invoke(inDoc);
  //Retrieve an InputStream from the returned BLOB instance
  URL myURL = new URL(outDoc.getRemoteURL());
  InputStream inputStream = myURL.openStream();
  //Create a file containing the returned PDF document
  File f = new File("C:\\51ºÚÁϲ»´òìÈ\EncryptedDocument.pdf");
  OutputStream out = new FileOutputStream(f);
  //Iterate through the buffer
  byte buf[] = new byte[1024];
  int len;
  while ((len = inputStream.read(buf)) > 0)
  out.write(buf, 0, len);
  out.close();
  inputStream.close();
  System.out.println("The short-lived process named EncryptDocument was successfully invoked.");
  }
  catch(Exception e)
  {
  e.printStackTrace();
  }
  }
 }
Quick Start: Invoking a service using BLOB data over HTTP in a .NET project quick-start-invoking-a-service-using-blob-data-over-http-in-a-net-project
The following C# code example invokes a process named MyApplication/EncryptDocument
from a Microsoft .NET project using data over HTTP. (See Invoking AEM Forms using BLOB data over HTTP.)
An unsecured PDF document based on a PDF file named Loan.pdf is passed to the AEM Forms process using BLOB over HTTP. The process returns a password-encrypted PDF document that is saved as a PDF file named EncryptedPDF.pdf.
 /*
  * Ensure that you create a .NET client assembly that uses
  * SOAP over HTTP. This is required to populate a BLOB
  * object’s remote URL data memeber.
  *
  * For information, see "Invoking AEM Forms using BLOB data over HTTP" in
  * Programming with AEM forms
  */
 using System;
 using System.Collections;
 using System.ComponentModel;
 using System.Data;
 using System.IO;
 using System.Security.Policy;
 namespace InvokeEncryptDocumentHTTP
 {
  class InvokeEncryptDocumentUsingHTTP
  {
  const int BUFFER_SIZE = 4096;
  [STAThread]
  static void Main(string[] args)
  {
  try
  {
  String urlData = "https://'[server]:[port]'/FormsQS/Loan.pdf";
  //Create a MyApplication_EncryptDocumentService object and set authentication values
  MyApplication_EncryptDocumentService encryptClient = new MyApplication_EncryptDocumentService();
  encryptClient.Credentials = new System.Net.NetworkCredential("administrator", "password");
  //Create a BLOB object
  BLOB inDoc = new BLOB();
  //Populate the BLOB object’s remoteURL data member
  inDoc.remoteURL = urlData;
  //Invoke the EncryptDocument process
  BLOB outDoc = encryptClient.invoke(inDoc);
  //Create a UriBuilder object using the
  //BLOB object’s remoteURL data member field
  UriBuilder uri = new UriBuilder(outDoc.remoteURL);
  //Convert the UriBuilder to a Stream object
  System.Net.WebRequest wr = System.Net.WebRequest.Create(uri.Uri);
  System.Net.WebResponse response = wr.GetResponse();
  System.IO.StreamReader sr = new System.IO.StreamReader(response.GetResponseStream());
  Stream mySteam = sr.BaseStream;
  //Create a byte array
  byte[] myData = new byte[BUFFER_SIZE];
  //Populate the byte array
  PopulateArray(mySteam, myData);
  //Create a file named UsageRightsLoan.pdf
  FileStream fs2 = new FileStream("C:\\51ºÚÁϲ»´òìÈ\EncryptedPDF.pdf", FileMode.OpenOrCreate);
  //Create a BinaryWriter object
  BinaryWriter w = new BinaryWriter(fs2);
  w.Write(myData);
  w.Close();
  fs2.Close();
  }
  catch (Exception ee)
  {
  Console.WriteLine(ee.Message);
  }
  }
  public static void PopulateArray(Stream stream, byte[] data)
  {
  int offset = 0;
  int remaining = data.Length;
  while (remaining > 0)
  {
  int read = stream.Read(data, offset, remaining);
  if (read <= 0)
  throw new EndOfStreamException();
  remaining -= read;
  offset += read;
  }
  }
  }
 }
Quick Start: Invoking a service using MTOM in a .NET project quick-start-invoking-a-service-using-mtom-in-a-net-project
The following C# code example invokes a process named MyApplication/EncryptDocument
from a Microsoft .NET project using MTOM. (See Invoking AEM Forms using MTOM.)
An unsecured PDF document based on a PDF file named loan.pdf is passed to the AEM Forms process using MTOM. The process returns a password-encrypted PDF document that is saved as a PDF file named EncryptedDocument.pdf.
 ???/**
  * 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
  * AEM Forms service using MTOM.
  *
  * For information, see "Invoking AEM Forms using MTOM" in Programming with AEM forms
  */
 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.ServiceModel;
 using EncryptDocumentMTOM.ServiceReference1;
 using System.IO;
 //Invoke the EncryptDocument process using MTOM
 namespace EncryptDocumentUsingMTOM
 {
  class Program
  {
  static void Main(string[] args)
  {
  try
  {
  //Specify the name of the PDF file to encrypt
  String pdfFile = "C:\\51ºÚÁϲ»´òìÈ\loan.pdf";
  //Create an EncryptDocumentClient object
  MyApplication_EncryptDocumentClient encryptProcess = new MyApplication_EncryptDocumentClient();
  encryptProcess.Endpoint.Address = new System.ServiceModel.EndpointAddress("https://'[server]:[port]'/soap/services/MyApplication/EncryptDocument?blob=mtom");
  BasicHttpBinding b = (BasicHttpBinding)encryptProcess.Endpoint.Binding;
  b.MessageEncoding = WSMessageEncoding.Mtom;
  //Enable BASIC HTTP authentication
  encryptProcess.ClientCredentials.UserName.UserName = "administrator";
  encryptProcess.ClientCredentials.UserName.Password = "password";
  b.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;
  b.Security.Mode = BasicHttpSecurityMode.TransportCredentialOnly;
  b.MaxReceivedMessageSize = 4000000;
  b.MaxBufferSize = 4000000;
  b.ReaderQuotas.MaxArrayLength = 4000000;
  //Reference the PDF file to send to the EncryptDocument process
  FileStream fs = new FileStream(pdfFile, FileMode.Open);
  //Create a BLOB object
  BLOB inDoc = new BLOB();
  //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 FileStream object
  fs.Read(ByteArray, 0, len);
  inDoc.MTOM = ByteArray;
  //Invoke the EncryptDocument short-lived process
  BLOB outDoc = encryptProcess.invoke(inDoc);
  byte[] encryptDoc = outDoc.MTOM;
  //Create a file containing the encrypted PDF document
  string FILE_NAME = "C:\\51ºÚÁϲ»´òìÈ\EncryptedDocument.pdf";
  FileStream fs2 = new FileStream(FILE_NAME, FileMode.OpenOrCreate);
  BinaryWriter w = new BinaryWriter(fs2);
  w.Write(encryptDoc);
  w.Close();
  fs2.Close();
  }
  catch (Exception ee)
  {
  Console.WriteLine(ee.Message);
  }
  }
  }
 }
Quick Start: Invoking a service using SwaRef in a Java project quick-start-invoking-a-service-using-swaref-in-a-java-project
The following Java code example invokes a process named MyApplication/EncryptDocument
from a Java project. This Java project using proxy classes that were created using JAX-WS and SwaRef as the encoding type. (See Invoking AEM Forms using SwaRef.)
An unsecured PDF document based on a PDF file named Loan.pdf is passed to the AEM Forms process using SwaRef. The encrypted PDF document is saved as a PDF file named EncryptedDocument.pdf.
 /**
  * Ensure that you create Java proxy files that consume
  *theAEM Forms service WSDL. You can use JAX-WS to create
  * the Java proxy files.
  *
  * This Java quick start uses SwaRef to invoke a short-lived process named
  * EncryptDocument. For information, see
  * "Invoking AEM Forms using SwaRef" in Programming with AEM forms.
  */
 import javax.xml.ws.BindingProvider;
 import javax.activation.DataHandler;
 import javax.activation.DataSource;
 import javax.activation.FileDataSource;
 import java.io.*;
 import com.adobe.idp.services.*;
 public class InvokeEncryptDocumentSwaRef {
 public static void main(String[] args) {
  try{
  //Specify connection values required to invoke the MyApplication/EncryptDocument process
  //using SwaRef
  String url = "https://'[server]:[port]'/soap/services/MyApplication/EncryptDocument?blob=swaref";
  String username = "administrator";
  String password = "password";
  String pdfFile = "C:\\51ºÚÁϲ»´òìÈ\Loan.pdf";
  //Create a MyApplicationEncryptDocument object
  MyApplicationEncryptDocumentService encClient = new MyApplicationEncryptDocumentService();
  MyApplicationEncryptDocument encryptDocClient = encClient.getEncryptDocument();
  ((BindingProvider)encryptDocClient).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, url);
  ((BindingProvider)encryptDocClient).getRequestContext().put(BindingProvider.USERNAME_PROPERTY, username);
  ((BindingProvider)encryptDocClient).getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, password);
  //Create a file object
  File pdf = new File(pdfFile);
  //Create a DataSource object
  DataSource myDS = new FileDataSource(pdf);
  //Create a DataHandler object
  DataHandler dataHandler = new DataHandler(myDS);
  //Create a BLOB object and populate it with the DataHandler
  BLOB inDoc = new BLOB();
  inDoc.setSwaRef(dataHandler);
  //Invoke the EncryptDocument process
  BLOB outDoc = encryptDocClient.invoke(inDoc);
  //Save the encrypted file as a PDF file
  DataHandler handler = outDoc.getSwaRef();
  //Create a file containing the returned PDF document
  File f = new File("C:\\51ºÚÁϲ»´òìÈ\EncryptedDocument.pdf");
  InputStream inputStream = handler.getInputStream();
  OutputStream out = new FileOutputStream(f);
  //Iterate through the buffer
  byte buf[] = new byte[1024];
  int len;
  while ((len = inputStream.read(buf)) > 0)
  out.write(buf, 0, len);
  out.close();
  inputStream.close();
  System.out.println("The short-lived process named MyApplication/EncryptDocument was successfully invoked.");
  }catch (Exception e) {
  e.printStackTrace();
  }
  }
 }