The following Java code retrieves an XDP file from the
Repository and passes it to the Output service within
com.adobe.idp.Document
instance.
The XDP file is deployed as part of a AEM Forms application named
Applications/FormsApplication
.
Notice that the URI path is
repository:///Applications/FormsApplication/1.0/FormsFolder/
.
Note:
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.
Note:
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 AEM Forms. (See Passing
Documents located in the Repository to the Output Service.)

Before running this quick start, ensure that
you create a AEM Forms 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 SOAP 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
*
* 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
*
*
* <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 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 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 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 AEM Forms
Properties connectionProps = new Properties();
connectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_SOAP_ENDPOINT, "jnp://[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 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 AEM Forms 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;
}
}