Assembler Service Java API QuickStart(SOAP)

Java API快速开始(SOAP)可用于Assembler服务

快速开始(SOAP模式):使用Java API汇编PDF文档

快速开始(SOAP模式):使用Java API反汇编PDF文档

快速开始(SOAP模式):使用Java API组合加密的PDF文档

快速开始(SOAP模式):使用Java API将PDF文档与bates编号组合在一起

快速开始(SOAP模式):使用Java API汇编非交互式PDF文档

快速开始(SOAP模式):使用Java API确定文档是否符合PDF/A规范

快速开始(SOAP模式):使用Java API验证DDX文档

快速开始(SOAP模式):使用Java API将PDF文档与书签组合

快速开始(SOAP模式):使用Java API动态创建DDX文档

快速开始(SOAP模式):使用Java API汇编PDFPortfolio

快速开始(SOAP模式):使用Java API组合多个XDP片段

AEM Forms操作可以使用AEM Forms强类型API执行,连接模式应设置为SOAP。

注意

“使用AEM Forms进行编程”中的快速开始基于部署在JBoss Application Server和Microsoft Windows操作系统上的Forms Server。 但是,如果您使用的是其他操作系统,如UNIX,请将特定于Windows的路径替换为适用操作系统支持的路径。 同样,如果您使用的是另一台J2EE应用程序服务器,请确保指定有效的连接属性。 请参阅设置连接属性

快速开始(SOAP模式):使用Java API汇编PDF文档

以下Java代码示例将名为* map.pdf*和​directions.pdf​的两个PDF源文档合并到一个PDF文档中。 单个PDF文档的名称为​AssemblerResultPDF.pdf。 DDX文档的名称为​shell.xml。 (请参阅以编程方式组合PDF文档。)

 /* 
     * This Java Quick Start uses the SOAP mode and contains the following JAR files 
     * in the class path: 
     * 1. adobe-assembler-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. activation.jar (required for SOAP mode) 
     * 7. axis.jar (required for SOAP mode) 
     * 8. commons-codec-1.3.jar (required for SOAP mode) 
     * 9.  commons-collections-3.1.jar  (required for SOAP mode) 
     * 10. commons-discovery.jar (required for SOAP mode) 
     * 11. commons-logging.jar (required for SOAP mode) 
     * 12. dom3-xml-apis-2.5.0.jar (required for SOAP mode) 
     * 13. jaxen-1.1-beta-9.jar (required for SOAP mode) 
     * 14. jaxrpc.jar (required for SOAP mode) 
     * 15. log4j.jar (required for SOAP mode) 
     * 16. mail.jar (required for SOAP mode) 
     * 17. saaj.jar (required for SOAP mode) 
     * 18. wsdl4j.jar (required for SOAP mode) 
     * 19. xalan.jar (required for SOAP mode) 
     * 20. xbean.jar (required for SOAP mode) 
     * 21. xercesImpl.jar (required for SOAP mode) 
     * 
     * These JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/common 
     * 
     * The adobe-utilities.jar file is located in the following path: 
     * <install directory>/sdk/client-libs/jboss 
     * 
     * The jboss-client.jar file is located in the following path: 
     * <install directory>/jboss/bin/client 
     * 
     * SOAP required JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/thirdparty 
     * 
     * 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 these additional JAR files 
     * 
     * For information about the SOAP  
     * mode, see "Setting connection properties" in Programming  
     * with AEM Forms 
     * 
     * The following XML represents the DDX document used in this quick start: 
     * <?xml version="1.0" encoding="UTF-8"?> 
     * <DDX xmlns="https://ns.adobe.com/DDX/1.0/"> 
     * <PDF result="out.pdf"> 
     * <PDF source="map.pdf" /> 
     * <PDF source="directions.pdf" /> 
     * </PDF> 
     *</DDX> 
     */ 
 import com.adobe.livecycle.assembler.client.*; 
 import java.util.*; 
 import java.io.File; 
 import java.io.FileInputStream; 
 import com.adobe.idp.Document; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactory; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties; 
  
 public class InvokeAssemblerSOAP 
 { 
     public static void main(String[] args) { 
         try{ 
             //Set connection properties required to invoke AEM Forms using SOAP mode                                 
             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 myFactory = ServiceClientFactory.createInstance(connectionProps); 
              
             //Create an AssemblerServiceClient object 
             AssemblerServiceClient assemblerClient = new AssemblerServiceClient(myFactory); 
  
             //Create a FileInputStream object based on an existing DDX file  
             FileInputStream myDDXFile = new FileInputStream("C:\\shell.xml");  
  
             //Create a Document object based on the DDX file 
             Document myDDX = new Document(myDDXFile);  
  
             //Create a Map object to store PDF source documents 
             Map inputs = new HashMap(); 
             FileInputStream mySourceMap = new FileInputStream("C:\\map.pdf"); 
             FileInputStream mySourceOptions = new FileInputStream("C:\\directions.pdf"); 
  
             //Create a Document object based on the map.pdf source file 
             Document myPDFMapSource = new Document(mySourceMap);  
  
             //Create a Document object based on the directions.pdf source file 
             Document myPDFOptionsSource = new Document(mySourceOptions);  
  
             //Place two entries into the Map object 
             inputs.put("map.pdf",myPDFMapSource);  
             inputs.put("directions.pdf",myPDFOptionsSource);  
  
             //Create an AssemblerOptionsSpec object 
             AssemblerOptionSpec assemblerSpec = new AssemblerOptionSpec(); 
             assemblerSpec.setFailOnError(false);  
  
             //Submit the job to Assembler service 
             AssemblerResult jobResult = assemblerClient.invokeDDX(myDDX,inputs,assemblerSpec);    
             java.util.Map allDocs = jobResult.getDocuments(); 
  
             //Retrieve the result PDF document from the Map object 
             Document outDoc = null; 
  
             //Iterate through the map object to retrieve the result PDF document 
             for (Iterator i = allDocs.entrySet().iterator(); i.hasNext();) { 
                 // Retrieve the Map object’s value 
                 Map.Entry e = (Map.Entry)i.next(); 
                  
                 //Get the key name as specified in the  
                 //DDX document  
                 String keyName = (String)e.getKey(); 
                 if (keyName.equalsIgnoreCase("out.pdf")) 
                 {  
                     Object o = e.getValue(); 
                     outDoc = (Document)o; 
  
                     //Save the result PDF file 
                     File myOutFile = new File("C:\\AssemblerResultPDF.pdf");  
                     outDoc.copyToFile(myOutFile); 
                 } 
             } 
         }catch (Exception e) { 
             e.printStackTrace(); 
         } 
     } 
 }

快速开始(SOAP模式):使用Java API反汇编PDF文档

以下Java代码示例拆解名为​AssemblerResultPDF.pdf​的PDF文档。 请注意,DDX文档的名称为​shell_distrassemble.xml。 每个已拆卸的PDF文档均名为​ResultPDF[Number].pdf。 即,第一个已拆卸的PDF文档名为​ResultPDF1.pdf。 有关此代码示 例中使用的shell_ indescribulation.xmlDDX文档的信 息,请参阅以编程方式反汇编PDF文档。

 /* 
     * This Java Quick Start uses the SOAP mode and contains the following JAR files 
     * in the class path: 
     * 1. adobe-assembler-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. activation.jar (required for SOAP mode) 
     * 7. axis.jar (required for SOAP mode) 
     * 8. commons-codec-1.3.jar (required for SOAP mode) 
     * 9.  commons-collections-3.1.jar  (required for SOAP mode) 
     * 10. commons-discovery.jar (required for SOAP mode) 
     * 11. commons-logging.jar (required for SOAP mode) 
     * 12. dom3-xml-apis-2.5.0.jar (required for SOAP mode) 
     * 13. jaxen-1.1-beta-9.jar (required for SOAP mode) 
     * 14. jaxrpc.jar (required for SOAP mode) 
     * 15. log4j.jar (required for SOAP mode) 
     * 16. mail.jar (required for SOAP mode) 
     * 17. saaj.jar (required for SOAP mode) 
     * 18. wsdl4j.jar (required for SOAP mode) 
     * 19. xalan.jar (required for SOAP mode) 
     * 20. xbean.jar (required for SOAP mode) 
     * 21. xercesImpl.jar (required for SOAP mode) 
     * 
     * These JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/common 
     * 
     * The adobe-utilities.jar file is located in the following path: 
     * <install directory>/sdk/client-libs/jboss 
     * 
     * The jboss-client.jar file is located in the following path: 
     * <install directory>/jboss/bin/client 
     * 
     * SOAP required JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/thirdparty 
     * 
     * 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 these additional JAR files 
     * 
     * For information about the SOAP  
     * mode, see "Setting connection properties" in Programming  
     * with AEM Forms 
     * 
     * The following XML represents the DDX document used in this quick start: 
     * <?xml version="1.0" encoding="UTF-8"?> 
     *<DDX xmlns="https://ns.adobe.com/DDX/1.0/"> 
     * <PDFsFromBookmarks prefix="stmt"> 
     * <PDF source="AssemblerResultPDF.pdf"/> 
     *</PDFsFromBookmarks> 
     *</DDX> 
     */ 
 import com.adobe.livecycle.assembler.client.*; 
 import java.util.*; 
 import java.io.File; 
 import java.io.FileInputStream; 
 import com.adobe.idp.Document; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactory; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties; 
  
 public class DisassemblePDFSOAP 
 { 
     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 myFactory = ServiceClientFactory.createInstance(connectionProps); 
              
             //Create an AssemblerServiceClient object 
             AssemblerServiceClient assemblerClient = new AssemblerServiceClient(myFactory); 
  
             //Create a FileInputStream object based on an existing DDX file  
             FileInputStream myDDXFile = new FileInputStream("C:\\shell_disassemble.xml");  
  
             //Create a Document object based on the DDX file 
             Document myDDX = new Document(myDDXFile);  
  
             //Create a Map object to store PDF source documents 
             Map inputs = new HashMap(); 
             FileInputStream mySourceMap = new FileInputStream("C:\\AssemblerResultPDF.pdf"); 
              
             //Create a Document object based on the map.pdf source file 
             Document myPDFSource = new Document(mySourceMap);  
  
             //Place two entries into the Map object 
             inputs.put("AssemblerResultPDF.pdf",myPDFSource);  
              
             //Create an AssemblerOptionsSpec object 
             AssemblerOptionSpec assemblerSpec = new AssemblerOptionSpec(); 
             assemblerSpec.setFailOnError(false);  
  
             //Submit the job to the Assembler service 
             AssemblerResult jobResult = assemblerClient.invokeDDX(myDDX,inputs,assemblerSpec);    
             java.util.Map allDocs = jobResult.getDocuments(); 
  
             //Retrieve the result PDF documents from the Map object 
             Document outDoc = null; 
             int index = 0; 
  
             //Iterate through the map object to retrieve the result PDF document 
             for (Iterator i = allDocs.entrySet().iterator(); i.hasNext();) { 
                 // Retrieve the Map object’s value 
                 Map.Entry e = (Map.Entry)i.next(); 
                 Object o = e.getValue(); 
  
                 //Cast the Object to a Document 
                 //and save to a file     
                 outDoc = (Document)o; 
                 File myOutFile = new File("C:\\ResultPDF"+index +".pdf"); 
                 outDoc.copyToFile(myOutFile); 
                 index++; 
             } 
             if (index > 0) 
                 System.out.println("The PDF document was disassembled into "+index+" PDF documents."); 
             else 
                 System.out.println("The PDF document was not disassembled."); 
      
         }catch (Exception e) { 
             System.out.println("Error OCCURRED: "+e.getMessage()); 
         } 
     } 
 }

快速开始(SOAP模式):使用Java API汇编加密的PDF文档

以下Java代码示例汇编了一个密码加密的PDF文档。 该无担保PDF文档名为​Loan.pdf。 请注意,DDX文档的名称为​shell_Encrypt.xml。 加密的PDF文档名为​AssemblerEncryptedPDF.pdf。 (请参阅汇编加密的PDF文档。)

 /* 
     * This Java Quick Start uses the SOAP mode and contains the following JAR files 
     * in the class path: 
     * 1. adobe-assembler-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. activation.jar (required for SOAP mode) 
     * 7. axis.jar (required for SOAP mode) 
     * 8. commons-codec-1.3.jar (required for SOAP mode) 
     * 9.  commons-collections-3.1.jar  (required for SOAP mode) 
     * 10. commons-discovery.jar (required for SOAP mode) 
     * 11. commons-logging.jar (required for SOAP mode) 
     * 12. dom3-xml-apis-2.5.0.jar (required for SOAP mode) 
     * 13. jaxen-1.1-beta-9.jar (required for SOAP mode) 
     * 14. jaxrpc.jar (required for SOAP mode) 
     * 15. log4j.jar (required for SOAP mode) 
     * 16. mail.jar (required for SOAP mode) 
     * 17. saaj.jar (required for SOAP mode) 
     * 18. wsdl4j.jar (required for SOAP mode) 
     * 19. xalan.jar (required for SOAP mode) 
     * 20. xbean.jar (required for SOAP mode) 
     * 21. xercesImpl.jar (required for SOAP mode) 
     * 
     * These JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/common 
     * 
     * The adobe-utilities.jar file is located in the following path: 
     * <install directory>/sdk/client-libs/jboss 
     * 
     * The jboss-client.jar file is located in the following path: 
     * <install directory>/jboss/bin/client 
     * 
     * SOAP required JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/thirdparty 
     * 
     * 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 these additional JAR files 
     * 
     * For information about the SOAP  
     * mode, see "Setting connection properties" in Programming  
     * with AEM Forms 
     * 
     * The following XML represents the DDX document used in this quick start: 
     *<?xml version="1.0" encoding="UTF-8"?> 
     * <DDX xmlns="https://ns.adobe.com/DDX/1.0/"> 
     * <PDF result="EncryptLoan.pdf" encryption="userProtect"> 
     * <PDF source="inDoc" /> 
     * </PDF> 
     * <PasswordEncryptionProfile name="userProtect" compatibilityLevel="Acrobat7"> 
     * <OpenPassword>AdobeOpen</OpenPassword> 
     * </PasswordEncryptionProfile> 
     * </DDX> 
     */ 
  
 import com.adobe.livecycle.assembler.client.*; 
 import java.util.*; 
 import java.io.File; 
 import java.io.FileInputStream; 
 import com.adobe.idp.Document; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactory; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties; 
  
 public class AssembleEncryptedDocumentSOAP 
 { 
     public static void main(String[] args) { 
         try{ 
             //Set connection properties required to invoke AEM Forms using SOAP mode                                 
             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 myFactory = ServiceClientFactory.createInstance(connectionProps); 
              
             //Create an AssemblerServiceClient object 
             AssemblerServiceClient assemblerClient = new AssemblerServiceClient(myFactory); 
  
             /* 
              * Create a FileInputStream object based on an existing DDX file 
              * This DDX document contains instructions to encrypt the PDF document 
              */ 
             FileInputStream myDDXFile = new FileInputStream("C:\\shell_Encrypt.xml");  
  
             //Create a Document object based on the DDX file 
             Document myDDX = new Document(myDDXFile);  
                      
             //Reference an unsecured PDF document 
             FileInputStream mySourceLoan = new FileInputStream("C:\\Loan.pdf"); 
              
             //Create a Document object based on the Loan.pdf source file 
             Document myPDFLoanSource = new Document(mySourceLoan);  
              
             //Create an AssemblerOptionsSpec object 
             AssemblerOptionSpec assemblerSpec = new AssemblerOptionSpec(); 
             assemblerSpec.setFailOnError(false);  
  
             //Submit the job to Assembler service 
             Document jobResult = assemblerClient.invokeOneDocument(myDDX,myPDFLoanSource,assemblerSpec);    
                  
             //Create the output file 
             File myOutFile = new File("C:\\AssemblerEncryptedPDF.pdf");  
             jobResult.copyToFile(myOutFile); 
      
         }catch (Exception e) { 
             e.printStackTrace(); 
         } 
     } 
 }

快速开始(SOAP模式):使用Java API将PDF文档与bates编号组合在一起

以下Java代码示例将PDF文档与唯一的页面标识符(bates编号)组合在一起。 请注意,DDX文档的名称为​shell_Bates.xml。 从Assembler服务返回的PDF文档将保存为名为​AssemblerResultBatesPDF.pdf​的PDF文件。 (请参阅使用Bates编号汇编文档。)

 /* 
     * This Java Quick Start uses the SOAP mode and contains the following JAR files 
     * in the class path: 
     * 1. adobe-assembler-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. activation.jar (required for SOAP mode) 
     * 7. axis.jar (required for SOAP mode) 
     * 8. commons-codec-1.3.jar (required for SOAP mode) 
     * 9.  commons-collections-3.1.jar  (required for SOAP mode) 
     * 10. commons-discovery.jar (required for SOAP mode) 
     * 11. commons-logging.jar (required for SOAP mode) 
     * 12. dom3-xml-apis-2.5.0.jar (required for SOAP mode) 
     * 13. jaxen-1.1-beta-9.jar (required for SOAP mode) 
     * 14. jaxrpc.jar (required for SOAP mode) 
     * 15. log4j.jar (required for SOAP mode) 
     * 16. mail.jar (required for SOAP mode) 
     * 17. saaj.jar (required for SOAP mode) 
     * 18. wsdl4j.jar (required for SOAP mode) 
     * 19. xalan.jar (required for SOAP mode) 
     * 20. xbean.jar (required for SOAP mode) 
     * 21. xercesImpl.jar (required for SOAP mode) 
     * 
     * These JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/common 
     * 
     * The adobe-utilities.jar file is located in the following path: 
     * <install directory>/sdk/client-libs/jboss 
     * 
     * The jboss-client.jar file is located in the following path: 
     * <install directory>/jboss/bin/client 
     * 
     * SOAP required JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/thirdparty 
     * 
     * 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 these additional JAR files 
     * 
     * For information about the SOAP  
     * mode, see "Setting connection properties" in Programming  
     * with AEM Forms 
     * 
     * The following XML represents the DDX document used in this quick start: 
     * <?xml version="1.0" encoding="UTF-8"?> 
     * <DDX xmlns="https://ns.adobe.com/DDX/1.0/"> 
     * <PDF result="out.pdf"> 
     * <Header> 
     * <Center> 
     * <StyledText> 
     * <p font-size="20pt"><BatesNumber/></p> 
     * </StyledText> 
     * </Center> 
     * </Header> 
     * <PDF source="map.pdf" /> 
     * <PDF source="directions.pdf" /> 
     * </PDF> 
     * </DDX> 
     */ 
  
 import com.adobe.livecycle.assembler.client.*; 
 import java.util.*; 
 import java.io.File; 
 import java.io.FileInputStream; 
 import com.adobe.idp.Document; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactory; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties; 
  
  
 public class AssembleBatesNumberDocumentSOAP 
 { 
     public static void main(String[] args) { 
         try{ 
             //Set connection properties required to invoke AEM Forms using SOAP mode                                 
             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 myFactory = ServiceClientFactory.createInstance(connectionProps); 
              
             //Create an AssemblerServiceClient object 
             AssemblerServiceClient assemblerClient = new AssemblerServiceClient(myFactory); 
  
             //Create a FileInputStream object based on an existing DDX file  
             FileInputStream myDDXFile = new FileInputStream("C:\\shell_Bates.xml");  
  
             //Create a Document object based on the DDX file 
             Document myDDX = new Document(myDDXFile);  
  
             //Create a Map object to store PDF source documents 
             Map<String, Object> inputs = new HashMap<String, Object>(); 
             FileInputStream mySourceMap = new FileInputStream("C:\\Adobe\map.pdf"); 
             FileInputStream mySourceOptions = new FileInputStream("C:\\Adobe\directions.pdf"); 
  
             //Create a Document object based on the map.pdf source file 
             Document myPDFMapSource = new Document(mySourceMap);  
  
             //Create a Document object based on the directions.pdf source file 
             Document myPDFOptionsSource = new Document(mySourceOptions);  
  
             //Place two entries into the Map object 
             inputs.put("map.pdf",myPDFMapSource);  
             inputs.put("directions.pdf",myPDFOptionsSource);  
  
             //Create an AssemblerOptionsSpec object 
             AssemblerOptionSpec assemblerSpec = new AssemblerOptionSpec(); 
             assemblerSpec.setFailOnError(false);  
              
             //Set the initial number to 100 
             assemblerSpec.setFirstBatesNumber(100); 
  
             //Submit the job to Assembler service 
             AssemblerResult jobResult = assemblerClient.invokeDDX(myDDX,inputs,assemblerSpec);    
             java.util.Map allDocs = jobResult.getDocuments(); 
  
             //Retrieve the result PDF document from the Map object 
             Document outDoc = null; 
  
             //Iterate through the map object to retrieve the result PDF document 
             for (Iterator i = allDocs.entrySet().iterator(); i.hasNext();) { 
                 // Retrieve the Map object’s value 
                 Map.Entry e = (Map.Entry)i.next(); 
                  
                 //Get the key name as specified in the  
                 //DDX document  
                 String keyName = (String)e.getKey(); 
                 if (keyName.equalsIgnoreCase("out.pdf")) 
                 {  
                     //Cast the Object to a Document 
                     Object o = e.getValue();  
                     outDoc = (Document)o; 
                      
                     //Create the output file 
                     File myOutFile = new File("C:\\AssemblerResultBatesPDF.pdf");  
                     outDoc.copyToFile(myOutFile); 
                 } 
             } 
             System.out.println("The PDF that contains Bates numbering was assembled."); 
         }catch (Exception e) { 
             e.printStackTrace(); 
         } 
     } 
 }

快速开始(SOAP模式):使用Java API汇编非交互式PDF文档

以下Java代码示例汇编了一个非交互式PDF文档。 传递给Assembler服务的交互式PDF文档名为​Loan.pdf。 请注意,DDX文档的名称为​shell_XFA.xml。 非交互式PDF文档将保存为名为​AssembleNonInteractivePDF.pdf​的PDF文件。 (请参阅汇编非交互式PDF文档。)

 /* 
     * This Java Quick Start uses the SOAP mode and contains the following JAR files 
     * in the class path: 
     * 1. adobe-assembler-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. activation.jar (required for SOAP mode) 
     * 7. axis.jar (required for SOAP mode) 
     * 8. commons-codec-1.3.jar (required for SOAP mode) 
     * 9.  commons-collections-3.1.jar  (required for SOAP mode) 
     * 10. commons-discovery.jar (required for SOAP mode) 
     * 11. commons-logging.jar (required for SOAP mode) 
     * 12. dom3-xml-apis-2.5.0.jar (required for SOAP mode) 
     * 13. jaxen-1.1-beta-9.jar (required for SOAP mode) 
     * 14. jaxrpc.jar (required for SOAP mode) 
     * 15. log4j.jar (required for SOAP mode) 
     * 16. mail.jar (required for SOAP mode) 
     * 17. saaj.jar (required for SOAP mode) 
     * 18. wsdl4j.jar (required for SOAP mode) 
     * 19. xalan.jar (required for SOAP mode) 
     * 20. xbean.jar (required for SOAP mode) 
     * 21. xercesImpl.jar (required for SOAP mode) 
     * 
     * These JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/common 
     * 
     * The adobe-utilities.jar file is located in the following path: 
     * <install directory>/sdk/client-libs/jboss 
     * 
     * The jboss-client.jar file is located in the following path: 
     * <install directory>/jboss/bin/client 
     * 
     * SOAP required JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/thirdparty 
     * 
     * 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 these additional JAR files 
     * 
     * For information about the SOAP  
     * mode, see "Setting connection properties" in Programming  
     * with AEM Forms 
     * 
     * The following XML represents the DDX document used in this quick start: 
     * <?xml version="1.0" encoding="UTF-8"?> 
     * <DDX xmlns="https://ns.adobe.com/DDX/1.0/"> 
     * <PDF result="out.pdf"> 
     * <PDF source="inDoc"/> 
     * <NoXFA/> 
     * </PDF> 
     * </DDX> 
     */ 
 import com.adobe.livecycle.assembler.client.*; 
 import java.util.*; 
 import java.io.File; 
 import java.io.FileInputStream; 
 import com.adobe.idp.Document; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactory; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties; 
  
 public class AssembleNonInteractiveSOAP 
 { 
     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 myFactory = ServiceClientFactory.createInstance(connectionProps); 
              
             //Create an AssemblerServiceClient object 
             AssemblerServiceClient assemblerClient = new AssemblerServiceClient(myFactory); 
  
             /* 
              * Create a FileInputStream object based on an existing DDX file 
              * This DDX document contains instructions to create  
              * a non-interactive PDF document 
              */ 
             FileInputStream myDDXFile = new FileInputStream("C:\\shell_XFA.xml");  
  
             //Create a Document object based on the DDX file 
             Document myDDX = new Document(myDDXFile);  
  
             //Reference an interactive PDF document 
             FileInputStream mySourceLoan = new FileInputStream("C:\\Adobe\Loan.pdf"); 
              
             //Create a Document object based on the Loan.pdf source file 
             Document myPDFLoanSource = new Document(mySourceLoan);  
                      
             //Create an AssemblerOptionsSpec object 
             AssemblerOptionSpec assemblerSpec = new AssemblerOptionSpec(); 
             assemblerSpec.setFailOnError(false);  
  
             //Submit the job to Assembler service and get back a 
             //non-interactive PDF document 
             Document outDoc = assemblerClient.invokeOneDocument(myDDX,myPDFLoanSource,assemblerSpec);    
              
             //Save the non-interactive PDF document 
             File myOutFile = new File("C:\\AssembleNonInteractivePDF.pdf");  
             outDoc.copyToFile(myOutFile); 
      
         }catch (Exception e) { 
             e.printStackTrace(); 
         } 
     } 
 } 
  
 

快速开始(SOAP模式):使用Java API确定文档是否符合PDF/A规范

以下Java代码示例确定输入的PDF文档是否符合PDF/A规范。 传递给Assembler服务的输入PDF文档名为​Loan.pdf。 DDX文档的名称为shell_PDFA.xml。 从Assembler服务返回的XML文档,它指定输入的PDF文档是否与PDF/A兼容,将保存为名为result.xml的XML文件。 有关此代码示例中使用的​shell_PDFA.xml DDX文档的信息,请参阅确定文档是否符合PDF/A规范

 /* 
     * This Java Quick Start uses the SOAP mode and contains the following JAR files 
     * in the class path: 
     * 1. adobe-assembler-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. activation.jar (required for SOAP mode) 
     * 7. axis.jar (required for SOAP mode) 
     * 8. commons-codec-1.3.jar (required for SOAP mode) 
     * 9.  commons-collections-3.1.jar  (required for SOAP mode) 
     * 10. commons-discovery.jar (required for SOAP mode) 
     * 11. commons-logging.jar (required for SOAP mode) 
     * 12. dom3-xml-apis-2.5.0.jar (required for SOAP mode) 
     * 13. jaxen-1.1-beta-9.jar (required for SOAP mode) 
     * 14. jaxrpc.jar (required for SOAP mode) 
     * 15. log4j.jar (required for SOAP mode) 
     * 16. mail.jar (required for SOAP mode) 
     * 17. saaj.jar (required for SOAP mode) 
     * 18. wsdl4j.jar (required for SOAP mode) 
     * 19. xalan.jar (required for SOAP mode) 
     * 20. xbean.jar (required for SOAP mode) 
     * 21. xercesImpl.jar (required for SOAP mode) 
     * 
     * These JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/common 
     * 
     * The adobe-utilities.jar file is located in the following path: 
     * <install directory>/sdk/client-libs/jboss 
     * 
     * The jboss-client.jar file is located in the following path: 
     * <install directory>/jboss/bin/client 
     * 
     * SOAP required JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/thirdparty 
     * 
     * 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 these additional JAR files 
     * 
     * For information about the SOAP  
     * mode, see "Setting connection properties" in Programming  
     * with AEM Forms 
     * 
     * This quick start validates the following DDX document: 
     *<?xml version="1.0" encoding="UTF-8"?> 
     *<DDX xmlns="https://ns.adobe.com/DDX/1.0/"> 
     * <DocumentInformation source="Loan.pdf" result="Loan_result.xml"> 
     * <PDFAValidation compliance="PDF/A-1b" resultLevel="Detailed" ignoreUnusedResources="true" allowCertificationSignatures="true" /> 
     * </DocumentInformation> 
     *</DDX> 
     */ 
  
 import com.adobe.livecycle.assembler.client.*; 
 import java.util.*; 
 import java.io.File; 
 import java.io.FileInputStream; 
 import com.adobe.idp.Document; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactory; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties; 
  
 public class AssembleDeterminePDFASOAP 
 { 
     public static void main(String[] args) { 
         try{ 
             //Set connection properties required to invoke AEM Forms using SOAP mode                                 
             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 myFactory = ServiceClientFactory.createInstance(connectionProps); 
              
             //Create an AssemblerServiceClient object 
             AssemblerServiceClient assemblerClient = new AssemblerServiceClient(myFactory); 
  
             //Create a FileInputStream object based on an existing DDX file  
             FileInputStream myDDXFile = new FileInputStream("C:\\shell_PDFA.xml");  
  
             //Create a Document object based on the DDX file 
             Document myDDX = new Document(myDDXFile);  
  
             //Create a Map object to store PDF source documents 
             Map inputs = new HashMap(); 
             FileInputStream mySourceMap = new FileInputStream("C:\\Adobe\Loan.pdf"); 
              
             //Create a Document object based on the map.pdf source file 
             Document myPDFMapSource = new Document(mySourceMap);  
  
             //Place two entries into the Map object 
             inputs.put("Loan.pdf",myPDFMapSource);  
          
             //Create an AssemblerOptionsSpec object 
             AssemblerOptionSpec assemblerSpec = new AssemblerOptionSpec(); 
             assemblerSpec.setFailOnError(false);  
  
             //Submit the job to Assembler service 
             AssemblerResult jobResult = assemblerClient.invokeDDX(myDDX,inputs,assemblerSpec);    
             java.util.Map allDocs = jobResult.getDocuments(); 
  
             //Retrieve the result PDF document from the Map object 
             Document outDoc = null; 
  
             //Iterate through the map object to retrieve the result XML 
             //document that specifies if the input document is  
             //PDF/A compliant 
             for (Iterator i = allDocs.entrySet().iterator(); i.hasNext();) { 
                 // Retrieve the Map object’s value 
                 Map.Entry e = (Map.Entry)i.next(); 
                  
                 //Get the key name as specified in the  
                 //DDX document 
                 String keyName = (String)e.getKey(); 
                 if (keyName.equalsIgnoreCase("Loan_result.xml")) 
                 {  
                     //Get the element value 
                     Object o = e.getValue(); 
  
                     //Cast the Object to a Document 
                     outDoc = (Document)o; 
                  
                     //Save the XML file 
                     File myMXLFile = new File("C:\\Adobe\result.xml"); 
                     outDoc.copyToFile(myMXLFile); 
                      } 
                 } 
              
             System.out.println("The results are written to result.xml."); 
         }catch (Exception e) { 
             e.printStackTrace(); 
         } 
     } 
 }

快速开始(SOAP模式):使用Java API验证DDX文档

以下Java代码示例基于名为​bookmarkDDX.xml​的文件验证DDX文档。 (请参阅验证DDX文档。)

 /* 
     * This Java Quick Start uses the SOAP mode and contains the following JAR files 
     * in the class path: 
     * 1. adobe-assembler-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. activation.jar (required for SOAP mode) 
     * 7. axis.jar (required for SOAP mode) 
     * 8. commons-codec-1.3.jar (required for SOAP mode) 
     * 9.  commons-collections-3.1.jar  (required for SOAP mode) 
     * 10. commons-discovery.jar (required for SOAP mode) 
     * 11. commons-logging.jar (required for SOAP mode) 
     * 12. dom3-xml-apis-2.5.0.jar (required for SOAP mode) 
     * 13. jaxen-1.1-beta-9.jar (required for SOAP mode) 
     * 14. jaxrpc.jar (required for SOAP mode) 
     * 15. log4j.jar (required for SOAP mode) 
     * 16. mail.jar (required for SOAP mode) 
     * 17. saaj.jar (required for SOAP mode) 
     * 18. wsdl4j.jar (required for SOAP mode) 
     * 19. xalan.jar (required for SOAP mode) 
     * 20. xbean.jar (required for SOAP mode) 
     * 21. xercesImpl.jar (required for SOAP mode) 
     * 
     * These JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/common 
     * 
     * The adobe-utilities.jar file is located in the following path: 
     * <install directory>/sdk/client-libs/jboss 
     * 
     * The jboss-client.jar file is located in the following path: 
     * <install directory>/jboss/bin/client 
     * 
     * SOAP required JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/thirdparty 
     * 
     * 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 these additional JAR files 
     * 
     * For information about the SOAP  
     * mode, see "Setting connection properties" in Programming  
     * with AEM Forms 
     * 
     * This quick start validates the following DDX document: 
     *&<?xml version="1.0" encoding="UTF-8"?> 
     * <DDX xmlns="https://ns.adobe.com/DDX/1.0/"> 
     * <PDF result="out.pdf"> 
     * <PDF source="map.pdf" /> 
     * <PDF source="directions.pdf" /> 
     * </PDF> 
     * </DDX> 
     */ 
 import com.adobe.livecycle.assembler.client.*; 
 import java.util.*; 
 import java.io.File; 
 import java.io.FileInputStream; 
 import com.adobe.idp.Document; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactory; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties; 
  
 public class ValidateDDXSOAP 
 { 
     public static void main(String[] args) { 
          
         boolean isValid = false; 
            Document outLog = null; 
  
         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 myFactory = ServiceClientFactory.createInstance(connectionProps); 
              
             //Create an AssemblerServiceClient object 
             AssemblerServiceClient assemblerClient = new AssemblerServiceClient(myFactory); 
  
             //Create a FileInputStream object based on an existing DDX file  
             FileInputStream myDDXFile = new FileInputStream("C:\\bookmarkDDX.xml");  
  
             //Create a Document object based on the DDX file 
             Document myDDX = new Document(myDDXFile);  
  
             //Create an AssemblerOptionsSpec object 
             AssemblerOptionSpec assemblerSpec = new AssemblerOptionSpec(); 
             assemblerSpec.setValidateOnly(true); 
             assemblerSpec.setLogLevel("FINE"); 
             assemblerSpec.setFailOnError(false); 
              
             //Validate the DDX document 
             AssemblerResult jobResult = assemblerClient.invokeDDX(myDDX,null,assemblerSpec);    
             outLog = jobResult.getJobLog(); 
             isValid = true; 
          
         }catch (Exception e) { 
              if (e instanceof OperationException) { 
                     OperationException oe = (OperationException) e; 
                     outLog = oe.getJobLog(); 
                     File myOutFile = new File("C:\\test.xml");  
                     outLog.copyToFile(myOutFile); 
                 } 
              e.printStackTrace(); 
          } finally { 
                if (outLog != null) { 
                    File myOutFile = new File("C:\\test.xml");  
                    outLog.copyToFile(myOutFile); 
               } 
           if (isValid) { 
                 // do something 
           } else { 
                // do something else 
              } 
           } 
     } 
 }

快速开始(SOAP模式):使用Java API将PDF文档与书签组合

以下Java代码示例汇编了包含书签的PDF文档。 DDX文档的名称为​bookmarkDDX.xml。 描述要添加到PDF文档的书签的书签XML文档的名称是bookmarks.xml。 结果PDF文档将保存为名为AssemblerResultBookmarks.pdf的PDF文件。 (请参阅使用书签汇编PDF文档。)

 /* 
     * This Java Quick Start uses the SOAP mode and contains the following JAR files 
     * in the class path: 
     * 1. adobe-assembler-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. activation.jar (required for SOAP mode) 
     * 7. axis.jar (required for SOAP mode) 
     * 8. commons-codec-1.3.jar (required for SOAP mode) 
     * 9.  commons-collections-3.1.jar  (required for SOAP mode) 
     * 10. commons-discovery.jar (required for SOAP mode) 
     * 11. commons-logging.jar (required for SOAP mode) 
     * 12. dom3-xml-apis-2.5.0.jar (required for SOAP mode) 
     * 13. jaxen-1.1-beta-9.jar (required for SOAP mode) 
     * 14. jaxrpc.jar (required for SOAP mode) 
     * 15. log4j.jar (required for SOAP mode) 
     * 16. mail.jar (required for SOAP mode) 
     * 17. saaj.jar (required for SOAP mode) 
     * 18. wsdl4j.jar (required for SOAP mode) 
     * 19. xalan.jar (required for SOAP mode) 
     * 20. xbean.jar (required for SOAP mode) 
     * 21. xercesImpl.jar (required for SOAP mode) 
     * 
     * These JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/common 
     * 
     * The adobe-utilities.jar file is located in the following path: 
     * <install directory>/sdk/client-libs/jboss 
     * 
     * The jboss-client.jar file is located in the following path: 
     * <install directory>/jboss/bin/client 
     * 
     * SOAP required JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/thirdparty 
     * 
     * 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 these additional JAR files 
     * 
     * For information about the SOAP  
     * mode, see "Setting connection properties" in Programming  
     * with AEM Forms 
     * 
     * * This quick start uses the following DDX document: 
     * <?xml version="1.0" encoding="UTF-8"?> 
     * <DDX xmlns="https://ns.adobe.com/DDX/1.0/"> 
     * <PDF result="FinalDoc.pdf"> 
     * <PDF source="Loan.pdf"> 
     * <Bookmarks source="doc2" /> 
     * </PDF> 
     * </PDF> 
     * </DDX> 
     * 
     * This quick start also uses the following bookmarks XML   
     * to assemble a PDF document containing bookmarks: 
     * <?xml version="1.0" encoding="UTF-8"?> 
     * <Bookmarks xmlns="https://ns.adobe.com/pdf/bookmarks" version="1.0"> 
     * <Bookmark> 
     * <Action> 
     * <Launch NewWindow="true"> 
     * <File Name="C:\Adobe\LoanDetails.pdf" /> 
     * </Launch> 
     * </Action> 
     * <Title>Open the Loan document</Title> 
     * </Bookmark> 
     * <Bookmark> 
     * <Action> 
     * <Launch> 
     * <Win Name="C:\WINDOWS\notepad.exe" /> 
     * </Launch> 
     * </Action> 
     * <Title>Launch NotePad</Title> 
     * </Bookmark> 
     * </Bookmarks> 
     * 
     */ 
     import com.adobe.livecycle.assembler.client.*; 
 import java.util.*; 
 import java.io.File; 
 import java.io.FileInputStream; 
 import com.adobe.idp.Document; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactory; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties; 
  
 public class AssembleBookmarksSOAP 
 { 
     public static void main(String[] args) { 
         try{ 
             //Set connection properties required to invoke AEM Forms using SOAP mode                                 
             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 myFactory = ServiceClientFactory.createInstance(connectionProps); 
              
             //Create an AssemblerServiceClient object 
             AssemblerServiceClient assemblerClient = new AssemblerServiceClient(myFactory); 
  
             //Create a FileInputStream object based on an existing DDX file  
             FileInputStream myDDXFile = new FileInputStream("C:\\bookmarkDDX.xml");  
  
             //Create a Document object based on the DDX file 
             Document myDDX = new Document(myDDXFile);  
  
             //Create a Map object to store an input PDF document and a Bookmark 
             //XML document 
             Map inputs = new HashMap(); 
             FileInputStream mySourceMap = new FileInputStream("C:\\Loan.pdf"); 
             FileInputStream bookmarkInfo = new FileInputStream("C:\\bookmarks.xml"); 
  
             //Create a Document object based on the Loan.pdf source file 
             Document myPDFMapSource = new Document(mySourceMap);  
  
             //Create a Document object based on the bookmarks.xml file 
             Document myBookmarkXML= new Document(bookmarkInfo);  
  
             //Place two entries into the Map object 
             inputs.put("Loan.pdf",myPDFMapSource);  
             inputs.put("doc2",myBookmarkXML);  
              
             //Create an AssemblerOptionsSpec object 
             AssemblerOptionSpec assemblerSpec = new AssemblerOptionSpec(); 
             assemblerSpec.setFailOnError(false);  
  
             //Submit the job to Assembler service 
             AssemblerResult jobResult = assemblerClient.invokeDDX(myDDX,inputs,assemblerSpec);    
             java.util.Map allDocs = jobResult.getDocuments(); 
  
             //Retrieve the result PDF document from the Map object 
             Document outDoc = null; 
  
             //Iterate through the map object to retrieve the result PDF document 
             for (Iterator i = allDocs.entrySet().iterator(); i.hasNext();) { 
                 // Retrieve the Map object’s value 
                 Map.Entry e = (Map.Entry)i.next(); 
                  
                 //Get the key name as specified in the  
                 //DDX document  
                 String keyName = (String)e.getKey(); 
                 if (keyName.equalsIgnoreCase("FinalDoc.pdf")) 
                 {  
                     Object o = e.getValue(); 
                     outDoc = (Document)o; 
  
                     //Save the result PDF file 
                     File myOutFile = new File("C:\\Adobe\Assembler\Output\AssemblerResultBookmarks.pdf");  
                     outDoc.copyToFile(myOutFile); 
                 } 
             } 
         }catch (Exception e) { 
             e.printStackTrace(); 
         } 
     } 
 } 
 

快速开始(SOAP模式):使用Java API动态创建DDX文档

以下Java代码示例动态创建一个分解PDF文档的DDX文档。 将为输入PDF文档中的每个1级书签创建新的PDF文档。 此代码示例包含两种用户定义的方法:

  • createDDX:创建 org.w3c.dom.Document 一个对象,它表示发送到Assembler服务的DDX文档。此用户定义的方法返回org.w3c.dom.Document对象。

  • convertDDX:将对象 org.w3c.dom.Document 转换为对 com.adobe.idp.Document 象。此方法接受org.w3c.dom.Document对象作为输入参数并返回com.adobe.idp.Document对象。

    在此快速开始中调用了这两种方法。 (请参阅动态创建DDX文档。)
    "

/*
 * This Java Quick Start uses the SOAP mode and contains the following JAR files
 * in the class path:
 * 1. adobe-assembler-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. activation.jar (required for SOAP mode)
 * 7. axis.jar (required for SOAP mode)
 * 8. commons-codec-1.3.jar (required for SOAP mode)
 * 9. commons-collections-3.1.jar (required for SOAP mode)
 * 10. commons-discovery.jar (required for SOAP mode)
 * 11. commons-logging.jar (required for SOAP mode)
 * 12. dom3-xml-apis-2.5.0.jar (required for SOAP mode)
 * 13. jaxen-1.1-beta-9.jar (required for SOAP mode)
 * 14. jaxrpc.jar (required for SOAP mode)
 * 15. log4j.jar (required for SOAP mode)
 * 16. mail.jar (required for SOAP mode)
 * 17. saaj.jar (required for SOAP mode)
 * 18. wsdl4j.jar (required for SOAP mode)
 * 19. xalan.jar (required for SOAP mode)
 * 20. xbean.jar (required for SOAP mode)
 * 21. xercesImpl.jar (required for SOAP mode)
 *
 * These JAR files are located in the following path:
 * <install directory>/sdk/client-libs/common
 *
 * The adobe-utilities.jar file is located in the following path:
 * <install directory>/sdk/client-libs/jboss
 *
 * The jboss-client.jar file is located in the following path:
 * <install directory>/jboss/bin/client
 *
 * SOAP required JAR files are located in the following path:
 * <install directory>/sdk/client-libs/thirdparty
 *
 * 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 these additional JAR files
 *
 * For information about the SOAP
 * mode, see "Setting connection properties" in Programming
 * with AEM Forms
 *
 * The following XML represents the DDX document created in this quick start:
 * <?xml version="1.0" encoding="UTF-8"?>
 * <DDX xmlns="https://ns.adobe.com/DDX/1.0/">
 * <PDF result="out.pdf">
 * <PDF source="inDoc"/>
 * <NoXFA/>
 * </PDF>
 * </DDX>
 */
import com.adobe.livecycle.assembler.client.*;
import java.util.*;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Element;
import com.adobe.idp.Document;
import com.adobe.idp.dsc.clientsdk.ServiceClientFactory;
import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties;
public class AssemblePDFWithDynamicDDXSOAP {
 public static void main(String[] args) {
   try {
    //Set connection properties required to invoke AEM Forms using SOAP mode
    Properties connectionProps = new Properties();
    connectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_SOAP_ENDPOINT,
     "https://[server]:[port]");
    connectionProps.setProperty(ServiceClientFactoryProperties.DSC_TRANSPORT_PROTOCOL, ServiceCl ientFactoryProperties.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 myFactory =
     ServiceClientFactory.createInstance(connectionProps);
    //Create an AssemblerServiceClient object
    AssemblerServiceClient assemblerClient = new AssemblerServiceClient(myFactory);
    //Dynamically create a DDX document
    org.w3c.dom.Document myDDX = createDDX();
    //Covert the DDX document to a com.adobe.idp.Document instance
    com.adobe.idp.Document ddx = convertDDX(myDDX);
    //Create a Map object to store PDF source documents
    Map inputs = new HashMap();
    FileInputStream mySourceMap = new FileInputStream("C:\\AssemblerResultPDF.pdf");
    //Create a Document object based on the map.pdf source file
    Document myPDFSource = new Document(mySourceMap);
    //Place the entry into the Map object
    inputs.put("AssemblerResultPDF.pdf", myPDFSource);
    //Create an AssemblerOptionsSpec object
    AssemblerOptionSpec assemblerSpec = new AssemblerOptionSpec();
    assemblerSpec.setFailOnError(false);
    //Submit the job to Assembler service and use the dynamically created DDX document
    AssemblerResult jobResult = assemblerClient.invokeDDX(ddx, inputs, assemblerSpec);
    java.util.Map allDocs = jobResult.getDocuments();
    //Retrieve the result PDF document from the Map object
    Document outDoc = null;
    int index = 1;
    //Iterate through the map object to retrieve the result PDF documents
    for (Iterator i = allDocs.entrySet().iterator(); i.hasNext();) {
     // Retrieve the Map object's value
     Map.Entry e = (Map.Entry) i.next();
     Object o = e.getValue();
     //Cast the Object to a Document
     //and save to a file
     outDoc = (Document) o;
     File myOutFile = new File("C:\\ResultPDF" + index + ".pdf");
     outDoc.copyToFile(myOutFile);
     index++;
    }
   } catch (Exception e) {
    e.printStackTrace();
   }
  }
  //Creates a DDX document using an org.w3c.dom.Document object
 private static org.w3c.dom.Document createDDX() {
   org.w3c.dom.Document document = null;
   try {
    //Create DocumentBuilderFactory and DocumentBuilder objects
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder = factory.newDocumentBuilder();
    //Create a new Document object
    document = builder.newDocument();
    //Create the root element and append it to the XML DOM
    Element root = (Element) document.createElement("DDX");
    root.setAttribute("xmlns", "https://ns.adobe.com/DDX/1.0/");
    document.appendChild(root);
    //Create the PDFsFromBookmarks element
    Element PDFsFromBookmarks =
     (Element) document.createElement("PDFsFromBookmarks");
    PDFsFromBookmarks.setAttribute("prefix", "stmt");
    root.appendChild(PDFsFromBookmarks);
    //Create the PDF element
    Element PDF = (Element) document.createElement("PDF");
    PDF.setAttribute("source", "AssemblerResultPDF.pdf");
    PDFsFromBookmarks.appendChild(PDF);
   } catch (Exception e) {
    System.out.println("The following exception occurred: " + e.getMessage());
   }
   return document;
  }
  //Converts an org.w3c.dom.Document object to a
  //com.adobe.idp.Document object
 private static Document convertDDX(org.w3c.dom.Document myDOM) {
  byte[] mybytes = null;
  try {
   //Create a Java Transformer object
   TransformerFactory transFact = TransformerFactory.newInstance();
   Transformer transForm = transFact.newTransformer();
   //Create a Java ByteArrayOutputStream object
   ByteArrayOutputStream myOutStream = new ByteArrayOutputStream();
   //Create a Java Source object
   javax.xml.transform.dom.DOMSource myInput = new DOMSource(myDOM);
   //Create a Java Result object
   javax.xml.transform.stream.StreamResult myOutput = new StreamResult(myOutStream);
   //Populate the Java ByteArrayOutputStream object
   transForm.transform(myInput, myOutput);
   // Get the size of the ByteArrayOutputStream buffer
   int myByteSize = myOutStream.size();
   //Allocate myByteSize to the byte array
   mybytes = new byte[myByteSize];
   //Copy the content to the byte array
   mybytes = myOutStream.toByteArray();
  } catch (Exception e) {
   System.out.println("The following exception occurred: " + e.getMessage());
  }
  //Create a com.adobe.idp.Document object and copy the
  //contents of the byte array
  Document myDocument = new Document(mybytes);
  return myDocument;
 }
}

快速开始(SOAP模式):使用Java API汇编PDFPortfolio

以下Java代码示例创建PDF包。 PDF包将保存为名为​AssemblerResultPortfolio.pdf​的PDF文件。 (请参阅汇编PDFPortfolio。)

 /* 
     * This Java Quick Start uses the SOAP mode and contains the following JAR files 
     * in the class path: 
     * 1. adobe-assembler-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) 
     * 
     * These JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/common 
     * 
     * The adobe-utilities.jar file is located in the following path: 
     * <install directory>/sdk/client-libs/jboss 
     * 
     * The jboss-client.jar file is located in the following path: 
     * <install directory>/jboss/bin/client 
     * 
     * SOAP required JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/thirdparty 
     * 
     * 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 these additional JAR files 
     * 
     * For information about the SOAP  
     * mode, see "Setting connection properties" in Programming  
     * with AEM Forms 
     * 
     * This is the DDX file used to create a PDF portfolio: 
     * <DDX xmlns="https://ns.adobe.com/DDX/1.0/"> 
     * <PDF result="portfolio1.pdf"> 
     * <Portfolio>   
     * <Navigator source="myNavigator">   
     * <Resource name="navigator/image.xxx" source="myImage.png"/> 
     * </Navigator> 
     * </Portfolio> 
     * <PackageFiles source="dog1"  > 
     * <FieldData name="X">72</FieldData> 
     * <FieldData name="Y">72</FieldData> 
     * <File filename="saint_bernard.jpg" mimetype="image/jpeg"/> 
     * </PackageFiles> 
     * <PackageFiles source="dog2"  > 
     * <FieldData name="X">120</FieldData> 
     * <FieldData name="Y">216</FieldData> 
     * <File filename="greyhound.pdf"/> 
     * </PackageFiles>     
     * </PDF> 
     * </DDX> 
     */ 
 import com.adobe.livecycle.assembler.client.*; 
  
 import java.util.*; 
 import java.io.File; 
 import java.io.FileInputStream; 
 import com.adobe.idp.Document; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactory; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties; 
  
 public class CreatePDFPortfolioSOAP { 
     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 myFactory = ServiceClientFactory.createInstance(connectionProps); 
              
             //Create an AssemblerServiceClient object 
             AssemblerServiceClient assemblerClient = new AssemblerServiceClient(myFactory); 
  
             //Create a FileInputStream object based on an existing DDX file  
             FileInputStream myDDXFile = new FileInputStream("C:\\Adobe\portfolioAssembly.xml");  
             FileInputStream myNavFile = new FileInputStream("C:\\Adobe\AdobeOnImage.nav");      
  
             //Create a Document object based on the DDX file 
             Document myDDX = new Document(myDDXFile);  
             Document myNav = new Document(myNavFile);  
  
             //Create a Map object to store PDF source documents 
             Map<String,Object> input = new HashMap<String, Object>(); 
             FileInputStream mySourceNavImage = new FileInputStream("C:\\Adobe\myImage.png"); 
             FileInputStream mySourceDog1 = new FileInputStream("C:\\Adobe\saint_bernard.jpg"); 
             FileInputStream mySourceDog2 = new FileInputStream("C:\\Adobe\greyhound.pdf"); 
  
             //Create a Document object based on the myImage.png source file 
             Document myPDFNavImageSource = new Document(mySourceNavImage);  
              
             //Create a Document object based on the MyFirstFile.pdf source file 
             Document myPDFDog1Source = new Document(mySourceDog1);  
  
             //Create a Document object based on the MySecondFile.txt source file 
             Document myPDFDog2Source = new Document(mySourceDog2);  
  
             //Place two entries into the Map object 
             input.put("myNavigator", myNav); 
             input.put("myImage.png",myPDFNavImageSource);  
             input.put("dog1",myPDFDog1Source);  
             input.put("dog2",myPDFDog2Source);  
  
             //Create an AssemblerOptionsSpec object 
             AssemblerOptionSpec assemblerSpec = new AssemblerOptionSpec(); 
             assemblerSpec.setFailOnError(false);  
  
             //Submit the job to Assembler service 
             AssemblerResult jobResult = assemblerClient.invokeDDX(myDDX,input,assemblerSpec);    
             Map<String,Document> allDocs = jobResult.getDocuments(); 
  
             //Retrieve the result PDF document from the Map object 
             Document outDoc = null; 
  
             //Iterate through the map object to retrieve the result PDF document 
             for (Iterator<Map.Entry<String,Document>> i = allDocs.entrySet().iterator(); i.hasNext();) { 
                 // Retrieve the Map object?s value 
                 Map.Entry<String,Document> e = (Map.Entry<String,Document>)i.next(); 
                  
                 //Get the key name as specified in the  
                 //DDX document  
                 String keyName = (String)e.getKey(); 
                 if (keyName.equalsIgnoreCase("portfolio1.pdf")) 
                 {  
                     Object o = e.getValue(); 
                     outDoc = (Document)o; 
  
                     //Save the result PDF file 
                     File myOutFile = new File("C:\\Adobe\AssemblerResultPortfolio.pdf");  
                     outDoc.copyToFile(myOutFile); 
                 } 
             } 
  
         }catch (Exception e) { 
             e.printStackTrace(); 
         } 
     } 
 } 
  
 

快速开始(SOAP模式):使用Java API组合多个XDP片段

以下Java代码示例汇编基于以下XDP文件的XDP片段:tuc018_template_frued.xdptuc018_contact.xdp​和* tuc018_patient.xdp*。 包含所有片段的已装配的XDP文档将保存为名为​AssemblerResultXDP.xdp​的XDP文件。 (请参阅组合多个XDP片段。)

 /* 
     * This Java Quick Start uses the SOAP mode and contains the following JAR files 
     * in the class path: 
     * 1. adobe-assembler-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. activation.jar (required for SOAP mode) 
     * 7. axis.jar (required for SOAP mode) 
     * 8. commons-codec-1.3.jar (required for SOAP mode) 
     * 9.  commons-collections-3.1.jar  (required for SOAP mode) 
     * 10. commons-discovery.jar (required for SOAP mode) 
     * 11. commons-logging.jar (required for SOAP mode) 
     * 12. dom3-xml-apis-2.5.0.jar (required for SOAP mode) 
     * 13. jaxen-1.1-beta-9.jar (required for SOAP mode) 
     * 14. jaxrpc.jar (required for SOAP mode) 
     * 15. log4j.jar (required for SOAP mode) 
     * 16. mail.jar (required for SOAP mode) 
     * 17. saaj.jar (required for SOAP mode) 
     * 18. wsdl4j.jar (required for SOAP mode) 
     * 19. xalan.jar (required for SOAP mode) 
     * 20. xbean.jar (required for SOAP mode) 
     * 21. xercesImpl.jar (required for SOAP mode) 
     * 
     * These JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/common 
     * 
     * The adobe-utilities.jar file is located in the following path: 
     * <install directory>/sdk/client-libs/jboss 
     * 
     * The jboss-client.jar file is located in the following path: 
     * <install directory>/jboss/bin/client 
     * 
     * SOAP required JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/thirdparty 
     * 
     * 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 these additional JAR files 
     * 
     * For information about the SOAP  
     * mode, see "Setting connection properties" in Programming  
     * with AEM Forms 
     * 
     * The following XML represents the DDX document used in this quick start: 
     * <?xml version="1.0" encoding="UTF-8"?> 
     * <DDX xmlns="https://ns.adobe.com/DDX/1.0/"> 
     * <XDP result="tuc018result.xdp"> 
     * <XDP source="tuc018_template_flowed.xdp"> 
     * <XDPContent insertionPoint="ddx_fragment" source="tuc018_contact.xdp" fragment="subPatientContact" required="false"/> 
     * <XDPContent insertionPoint="ddx_fragment" source="tuc018_patient.xdp" fragment="subPatientPhysical" required="false"/> 
     * <XDPContent insertionPoint="ddx_fragment" source="tuc018_patient.xdp" fragment="subPatientHealth" required="false"/> 
     * </XDP> 
     * </XDP>         
     * </DDX> 
     */ 
 import com.adobe.livecycle.assembler.client.*; 
 import java.util.*; 
 import java.io.File; 
 import java.io.FileInputStream; 
 import com.adobe.idp.Document; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactory; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties; 
  
 public class AssembleFragmentsSOAP 
 { 
     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 myFactory = ServiceClientFactory.createInstance(connectionProps); 
              
             //Create an AssemblerServiceClient object 
             AssemblerServiceClient assemblerClient = new AssemblerServiceClient(myFactory); 
  
             //Create a FileInputStream object based on an existing DDX file  
             FileInputStream myDDXFile = new FileInputStream("C:\\Adobe\fragmentDDX.xml");  
  
             //Create a Document object based on the DDX file 
             Document myDDX = new Document(myDDXFile);  
  
             //Create a Map object to store the input XDP files 
             Map inputs = new HashMap(); 
             FileInputStream inSource = new FileInputStream("C:\\Adobe\tuc018_template_flowed.xdp"); 
             FileInputStream inFragment1 = new FileInputStream("C:\\Adobe\tuc018_contact.xdp"); 
             FileInputStream inFragment2 = new FileInputStream("C:\\Adobe\tuc018_patient.xdp"); 
          
             //Create a Document object  
             Document myMapSource = new Document(inSource);  
  
             //Create a Document object 
             Document inFragment1Doc = new Document(inFragment1);  
              
             //Create a Document object  
             Document inFragment2Doc = new Document(inFragment2);  
  
             //Place all of the XDP files into the MAP 
             inputs.put("tuc018_template_flowed.xdp",myMapSource);  
             inputs.put("tuc018_contact.xdp",inFragment1Doc);  
             inputs.put("tuc018_patient.xdp",inFragment2Doc);  
              
  
             //Create an AssemblerOptionsSpec object 
             AssemblerOptionSpec assemblerSpec = new AssemblerOptionSpec(); 
             assemblerSpec.setFailOnError(false);  
  
             //Submit the job to Assembler service 
             AssemblerResult jobResult = assemblerClient.invokeDDX(myDDX,inputs,assemblerSpec);    
             java.util.Map allDocs = jobResult.getDocuments(); 
  
             //Retrieve the result PDF document from the Map object 
             Document outDoc = null; 
  
             //Iterate through the map object to retrieve the result XDP document 
             for (Iterator i = allDocs.entrySet().iterator(); i.hasNext();) { 
                 // Retrieve the Map object’s value 
                 Map.Entry e = (Map.Entry)i.next(); 
                  
                 //Get the key name as specified in the  
                 //DDX document  
                 String keyName = (String)e.getKey(); 
                 if (keyName.equalsIgnoreCase("tuc018result.xdp")) 
                 {  
                     Object o = e.getValue(); 
                     outDoc = (Document)o; 
  
                     //Save the result XDP file 
                     File myOutFile = new File("C:\\AssemblerResultXDP.xdp");  
                     outDoc.copyToFile(myOutFile); 
                 } 
             } 
         }catch (Exception e) { 
             e.printStackTrace(); 
         } 
     } 
 }

快速开始(SOAP模式):使用Java API编辑PDF文档

下面的代码示例使用PDFUtility编辑PDF文档。

注意

PDFUtility 只能将那些使用Acrobat标记为密文的PDF加密成密文。

/* 
 * This Java Quick Start uses the SOAP mode and contains the following JAR files 
 * in the class path: 
 * 1. adobe-pdfutility-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 AEM Forms is not deployed 
 * on JBoss) 
 * 
 * These JAR files are located in the following path: 
 * <install directory>/Adobe/Adobe_Experience_Manager_forms/sdk/client-libs/common 
 * 
 * The adobe-utilities.jar file is located in the following path: 
 * <install directory>/Adobe/Adobe_Experience_Manager_forms/sdk/client-libs/jboss 
 * 
 * The jboss-client.jar file is located in the following path: 
 * <install directory>/Adobe/Adobe_Experience_Manager_forms/jboss/bin/client 
 * 
 * If you want to invoke a remote AEM Forms instance and there is a 
 * firewall between the client application and AEM Forms, then it is 
 * recommended that you use the SOAP mode. When using the SOAP mode, 
 * you have to include additional JAR files located in the following 
 * path 
 * <install directory>/Adobe/Adobe_Experience_Manager_forms/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 library files" in Programming 
 * with AEM Forms 
 */ 
 
import java.util.*; 
import com.adobe.livecycle.pdfutility.client.*; 
import java.io.*; 
import com.adobe.idp.Document; 
import com.adobe.idp.dsc.clientsdk.ServiceClientFactory; 
import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties; 
 
public class RedactPDF 
{ 
    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 object 
            ServiceClientFactory myFactory = ServiceClientFactory.createInstance(connectionProps); 
 
            // Create a PDF Utility client 
            PDFUtilityServiceClient pdfUt = new PDFUtilityServiceClient(myFactory); 
 
            // Specify a PDF document to Redact 
            FileInputStream fileInputStream = new FileInputStream("C:\\Adobe\\RedactMarked.pdf"); 
            Document inDoc = new Document(fileInputStream); 
            RedactionOptionSpec spec = new RedactionOptionSpec(); 
            
            // Convert the PDF document to redact 
            RedactionResult redRes = pdfUt.redact(inDoc,spec); 
            
            Document redactPDF = redRes.getDocument(); 
            
            //Save the returned Document object as an XDP file 
            File redactedFile = new File("C:\\Adobe\\Redacted.pdf"); 
            redactPDF.copyToFile(redactedFile); 
        } 
        catch (Exception e) 
        { 
            e.printStackTrace(); 
        } 
    } 
}

On this page

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now