Quick Start (EJB mode): Passing a document located in the LiveCycle Repository to the Output service using the Java API

The following Java code retrieves an XDP file from the LiveCycle Repository and passes it to the Output service within com.adobe.idp.Document instance. The XDP file is deployed as part of a LiveCycle application named Applications/FormsApplication. Notice that the URI path is repository:///Applications/FormsApplication/1.0/FormsFolder/.

注意: The Repository API is used to retrieve the XDP file from this location. (See Reading Resources.)

Also notice the content root value repository:///Applications/FormsApplication/1.0/FormsFolder/ is passed to the OutputClient object’s generatePDFOutput2 method (the second parameter). This value is passed to the Output service to inform the Output service that form collateral, such as images, are stored in this location.

注意: You can set the content root value in the same way when invoking the generatePrintedOutput2 method.

The Loan.pdf is written to the C:\Adobe folder located on the J2EE application server hosting LiveCycle. (See Passing Documents located in the Repository to the Output Service.)

Before running this quick start, ensure that you create a LiveCycle application named Applications/FormsApplication. Create a folder within the application named FormsFolder and place the XDP file in the folder.
/* 
    * This Java Quick Start uses the EJB mode and contains the following JAR files 
    * in the class path: 
    * 1. adobe-output-client.jar 
    * 2. adobe-repository-client.jar 
    * 3. adobe-livecycle-client.jar 
    * 4. adobe-usermanager-client.jar 
    * 5. adobe-utilities.jar 
    * 6. jbossall-client.jar (use a different JAR file if the LiveCycle Server is not deployed 
    * on JBoss) 
    * 6. jacorb.jar (use a different JAR file if the LiveCycle Server is not deployed on JBoss) 
    * 7. jnp-client.jar (use a different JAR file if the LiveCycle 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 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 jbossall-client.jar file is located in the following path: 
    * <install directory>/jboss/client 
    *  
    * If you want to invoke a remote LiveCycle 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 located 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 LiveCycle 
    *  
    * For complete details about the location of the LiveCycle JAR files,  
    * see "Including LiveCycle Java library files" in Programming  
    * with LiveCycle 
    */ 
import com.adobe.livecycle.output.client.*; 
import com.adobe.repository.bindings.dsc.client.ResourceRepositoryClient; 
 
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 CreatePDFFFromRepository { 
 
    public static void main(String[] args) { 
         
        try{ 
        //Set connection properties required to invoke LiveCycle                                 
        Properties connectionProps = new Properties(); 
        connectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_EJB_ENDPOINT, "jnp://hiro-xp:1099"); 
        connectionProps.setProperty(ServiceClientFactoryProperties.DSC_TRANSPORT_PROTOCOL,ServiceClientFactoryProperties.DSC_EJB_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 an OutputClient object 
        OutputClient outClient = new OutputClient(myFactory);  
                         
        //Reference form data                         
        FileInputStream fileInputStream = new FileInputStream("C:\\Adobe\Loan.xml");     
        Document inXMData = new Document (fileInputStream); 
                 
        //Set PDF run-time options     
        PDFOutputOptionsSpec outputOptions = new PDFOutputOptionsSpec(); 
        outputOptions.setFileURI("C:\\Adobe\Loan.pdf"); // this PDF form is saved on the server 
         
        //Get the form design from the LiveCycle Repository 
        Document formDesign =  GetFormDesign(myFactory); 
             
        //Set rendering run-time options 
        RenderOptionsSpec pdfOptions = new RenderOptionsSpec();  
        pdfOptions.setLinearizedPDF(true); 
        pdfOptions.setAcrobatVersion(AcrobatVersion.Acrobat_9); 
                         
        //Create a non-interactive PDF document             
        OutputResult outputDocument = outClient.generatePDFOutput2( 
            TransformationFormat.PDF, 
            "repository:///Applications/FormsApplication/1.0/FormsFolder/", 
            formDesign, 
            outputOptions, 
            pdfOptions, 
            inXMData 
        ); 
                 
        //Save the non-interactive PDF form as a PDF file on the client computer 
        Document pdfForm = outputDocument.getGeneratedDoc(); 
        File myFile = new File("C:\\Adobe\Loan.pdf"); 
        pdfForm.copyToFile(myFile); 
        } 
        catch (Exception ee) 
        { 
            ee.printStackTrace(); 
        } 
    } 
     
    // Retrieve the form design from the following Repository path: 
    // /Applications/FormsApplication/1.0/FormsFolder/Loan.xdp 
    private static Document GetFormDesign(ServiceClientFactory myFactory) 
    { 
    try{ 
             
        // Create a ResourceRepositoryClient object using the service client factory 
        ResourceRepositoryClient repositoryClient = new ResourceRepositoryClient(myFactory); 
 
        // Specify the path in the Repository to Loan.xdp 
        String resourceUri =  "/Applications/FormsApplication/1.0/FormsFolder/Loan.xdp"; 
 
        // Retrieve the XDP file  
        Document doc = repositoryClient.readResourceContent(resourceUri); 
     
           //Return the Document instance 
           return  doc; 
         } 
             
        catch(Exception e) 
        { 
            e.printStackTrace(); 
        } 
        return null;  
    } 
}