快速入門(SOAP模式):使用Java™ API在使用者端轉譯表單
下列程式碼範例使用Forms服務Java™ API在使用者端轉譯名為 Loan.xdp 的表單。 請注意,表單設計是應用程式的一部分,且使用內容根URI值repository:///參考。 (請參閱在使用者端轉譯Forms。)
/*
* This Java Quick Start uses the following JAR files
* 1. adobe-forms-client.jar
* 2. adobe-livecycle-client.jar
* 3. adobe-usermanager-client.jar
* 4. activation.jar (required for SOAP mode)
* 5. axis.jar (required for SOAP mode)
* 6. commons-codec-1.3.jar (required for SOAP mode)
* 7. commons-collections-3.2.jar (required for SOAP mode)
* 8. commons-discovery.jar (required for SOAP mode)
* 9. commons-logging.jar (required for SOAP mode)
* 10. dom3-xml-apis-2.5.0.jar (required for SOAP mode)
* 11. jaxen-1.1-beta-9.jar (required for SOAP mode)
* 12. jaxrpc.jar (required for SOAP mode)
* 13. log4j.jar (required for SOAP mode)
* 14. mail.jar (required for SOAP mode)
* 15. saaj.jar (required for SOAP mode)
* 16. wsdl4j.jar (required for SOAP mode)
* 17. xalan.jar (required for SOAP mode)
* 18. xbean.jar (required for SOAP mode)
* 19. xercesImpl.jar (required for SOAP mode)
*
* (Because Forms quick starts are implemented as Java servlets, it is
* not necessary to include J2EE specific JAR files - the Java project
* that contains this quick start is exported as a WAR file which
* is deployed to the J2EE application server)
*
* These JAR files are in the following path:
* <install directory>/sdk/client-libs/common
*
* For complete details about the location of these JAR files,
* see "Including AEM Forms library files" in Programming with AEM forms.
*/
import java.io.IOException;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.adobe.livecycle.formsservice.client.*;
import java.util.*;
import java.io.InputStream;
import com.adobe.idp.Document;
import com.adobe.idp.dsc.clientsdk.ServiceClientFactory;
import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties;
public class RenderPDFFormClient extends HttpServlet implements Servlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req,resp);
}
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
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 FormsServiceClient object
FormsServiceClient formsClient = new FormsServiceClient(myFactory);
//Set parameter values required by the renderPDFForm method
String formName = "Applications/FormsApplication/1.0/FormsFolder/Loan.xdp";
byte[] cData = "".getBytes();
Document oInputData = new Document(cData);
//Set a run-time option required to render a form on the client
PDFFormRenderSpec pdfRenderSpec = new PDFFormRenderSpec();
pdfRenderSpec.setRenderAtClient(RenderAtClient.Yes);
//Specify URI values required to render a form
URLSpec uriValues = new URLSpec();
uriValues.setApplicationWebRoot("https://'[server]:[port]'/FormsServiceClientApp");
uriValues.setContentRootURI("repository:///");
uriValues.setTargetURL("https://'[server]:[port]'/FormsServiceClientApp/HandleData");
//Invoke the renderPDFForm method to render
//an interactive PDF form on the client
FormsResult formOut = formsClient.renderPDFForm(
formName,
oInputData,
pdfRenderSpec,
uriValues,
null
);
//Create a Document object that stores form data
Document myData = formOut.getOutputContent();
//Get the content type of the response and
//set the HttpServletResponse objects content type
String contentType = myData.getContentType();
resp.setContentType(contentType);
//Create a ServletOutputStream object
ServletOutputStream oOutput = resp.getOutputStream();
//Create an InputStream object
InputStream inputStream = myData.getInputStream();
//Write the data stream to the web browser
byte[] data = new byte[4096];
int bytesRead = 0;
while ((bytesRead = inputStream.read(data)) > 0)
{
oOutput.write(data, 0, bytesRead);
}
}catch (Exception e) {
System.out.println("The following exception occurred: "+e.getMessage());
}
}
}
快速入門(SOAP模式):使用Java™ API轉譯指南(已過時)
下列程式碼範例會將名為 TLALifeClaim.xdp 的指南(已過時)轉譯給使用者端網頁瀏覽器。
/*
* This Java Quick Start uses the following JAR files
* 1. adobe-forms-client.jar
* 2. adobe-livecycle-client.jar
* 3. adobe-usermanager-client.jar
* 4. activation.jar (required for SOAP mode)
* 5. axis.jar (required for SOAP mode)
* 6. commons-codec-1.3.jar (required for SOAP mode)
* 7. commons-collections-3.2.jar (required for SOAP mode)
* 8. commons-discovery.jar (required for SOAP mode)
* 9. commons-logging.jar (required for SOAP mode)
* 10. dom3-xml-apis-2.5.0.jar (required for SOAP mode)
* 11. jaxen-1.1-beta-9.jar (required for SOAP mode)
* 12. jaxrpc.jar (required for SOAP mode)
* 13. log4j.jar (required for SOAP mode)
* 14. mail.jar (required for SOAP mode)
* 15. saaj.jar (required for SOAP mode)
* 16. wsdl4j.jar (required for SOAP mode)
* 17. xalan.jar (required for SOAP mode)
* 18. xbean.jar (required for SOAP mode)
* 19. xercesImpl.jar (required for SOAP mode)
*
* (Because Forms quick starts are implemented as Java servlets, it is
* not necessary to include J2EE specific JAR files - the Java project
* that contains this quick start is exported as a WAR file which
* is deployed to the J2EE application server)
*
* These JAR files are in the following path:
* <install directory>/sdk/client-libs/common
*
* For complete details about the location of these JAR files,
* see "Including AEM Forms library files" in Programming with AEM forms
*/
import java.io.IOException;
import java.io.InputStream;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.adobe.livecycle.formsservice.client.*;
import java.util.*;
import com.adobe.idp.Document;
import com.adobe.idp.dsc.clientsdk.ServiceClientFactory;
import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties;
public class RenderFormGuide extends HttpServlet implements Servlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req,resp);
}
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
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);
FormsServiceClient formsClient = new FormsServiceClient(myFactory);
//Specify the parameters for the renderActivityGuide method
String formName = "Applications/FormsApplication/1.0/FormsFolder/TLALifeClaim.xdp";
byte[] cData = "".getBytes();
Document oInputData = new Document(cData);
//Cache the PDF form
PDFFormRenderSpec pdfFormRenderSpec = new PDFFormRenderSpec();
pdfFormRenderSpec.setCacheEnabled(new Boolean(true));
//Set Form Guide run-time options
ActivityGuideRenderSpec renderSpec = new ActivityGuideRenderSpec();
renderSpec.setGuidePDF(false);
//Specify URI values that are required to render a form
//design in the AEM Forms repository
URLSpec uriValues = new URLSpec();
uriValues.setApplicationWebRoot("https://'[server]:[port]'/FormsQS");
uriValues.setContentRootURI("repository:///");
uriValues.setTargetURL("https://'[server]:[port]'/FormsQS/HandleData");
//Invoke the renderFormGuide method
FormsResult formOut = formsClient.renderFormGuide(
formName, //formQuery
oInputData, //inDataDoc
pdfFormRenderSpec, //pdfFormRenderSpec
renderSpec, //activityGuideRenderSpec
uriValues //urlSpec
);
//Create a Document object that stores form data
Document myData = formOut.getOutputContent();
//Get the content type of the response
String contentType = myData.getContentType();
resp.setContentType(contentType);
//Create a ServletOutputStream object
ServletOutputStream oOutput = resp.getOutputStream();
//Create an InputStream object
InputStream inputStream = myData.getInputStream();
//Write the data stream to the web browser
byte[] data = new byte[4096];
int bytesRead = 0;
while ((bytesRead = inputStream.read(data)) > 0)
{
oOutput.write(data, 0, bytesRead);
}
}catch (Exception e) {
System.out.println("The following exception occured: "+e.getMessage());
}
}
}
快速入門(SOAP模式):使用Java™ API根據片段轉譯表單
下列程式碼範例會根據片段轉譯表單。 表單設計的名稱是 PurchaseOrderDynamic.xdp,它位於AEM Forms存放庫中(XDP檔案儲存在存放庫中名為FormsFolder的資料夾中)。 此外,POFragment表單參考的片段也必須在存放庫中。 (請參閱根據片段呈現Forms。)
/*
* This Java Quick Start uses the following JAR files
* 1. adobe-forms-client.jar
* 2. adobe-livecycle-client.jar
* 3. adobe-usermanager-client.jar
* 4. activation.jar (required for SOAP mode)
* 5. axis.jar (required for SOAP mode)
* 6. commons-codec-1.3.jar (required for SOAP mode)
* 7. commons-collections-3.2.jar (required for SOAP mode)
* 8. commons-discovery.jar (required for SOAP mode)
* 9. commons-logging.jar (required for SOAP mode)
* 10. dom3-xml-apis-2.5.0.jar (required for SOAP mode)
* 11. jaxen-1.1-beta-9.jar (required for SOAP mode)
* 12. jaxrpc.jar (required for SOAP mode)
* 13. log4j.jar (required for SOAP mode)
* 14. mail.jar (required for SOAP mode)
* 15. saaj.jar (required for SOAP mode)
* 16. wsdl4j.jar (required for SOAP mode)
* 17. xalan.jar (required for SOAP mode)
* 18. xbean.jar (required for SOAP mode)
* 19. xercesImpl.jar (required for SOAP mode)
*
* (Because Forms quick starts are implemented as Java servlets, it is
* not necessary to include J2EE specific JAR files - the Java project
* that contains this quick start is exported as a WAR file which
* is deployed to the J2EE application server)
*
* These JAR files are in the following path:
* <install directory>/sdk/client-libs/common
*
* For complete details about the location of these JAR files,
* see "Including AEM Forms library files" in Programming with AEM forms
*/
import java.io.FileInputStream;
import java.io.IOException;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.adobe.livecycle.formsservice.client.*;
import java.util.*;
import java.io.InputStream;
import com.adobe.idp.Document;
import com.adobe.idp.dsc.clientsdk.ServiceClientFactory;
import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties;
public class RenderFormFragments extends HttpServlet implements Servlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req,resp);
}
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
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 FormsServiceClient object
FormsServiceClient formsClient = new FormsServiceClient(myFactory);
//Set the parameter values for the renderPDFForm method
String formName = "Applications/FormsApplication/1.0/FormsFolder/PurchaseOrderDynamic.xdp";
FileInputStream myFormData = new FileInputStream("C:\\Adobe\Purchase Order US.xml");
Document oInputData = new Document(myFormData);
//Cache the PDF form
PDFFormRenderSpec pdfFormRenderSpec = new PDFFormRenderSpec();
pdfFormRenderSpec.setCacheEnabled(new Boolean(true));
//Specify URI values that are required to render a form
//design based on fragments
URLSpec uriValues = new URLSpec();
uriValues.setApplicationWebRoot("https://'[server]:[port]'/FormsServiceClientApp");
uriValues.setContentRootURI("repository:///");
uriValues.setTargetURL("https://'[server]:[port]'/FormsServiceClientApp/HandleData");
//Invoke the renderPDFForm method and write the
//results to a client web browser
FormsResult formOut = formsClient.renderPDFForm(
formName, //formQuery
oInputData, //inDataDoc
pdfFormRenderSpec, //PDFFormRenderSpec
uriValues, //urlSpec
null //attachments
);
//Create a Document object that stores form data
Document myData = formOut.getOutputContent();
//Get the content type of the response and
//set the HttpServletResponse object's content type
String contentType = myData.getContentType();
resp.setContentType(contentType);
//Create a ServletOutputStream object
ServletOutputStream oOutput = resp.getOutputStream();
//Create an InputStream object
InputStream inputStream = myData.getInputStream();
//Write the data stream to the web browser
byte[] data = new byte[4096];
int bytesRead = 0;
while ((bytesRead = inputStream.read(data)) > 0)
{
oOutput.write(data, 0, bytesRead);
}
}catch (Exception e) {
System.out.println("The following exception occurred: "+e.getMessage());
}
}
}
快速入門(SOAP模式):使用Java™ API轉譯已啟用許可權的表單
下列程式碼範例會將啟用許可權的表單轉譯給使用者端Web瀏覽器。 此程式碼範例中設定的使用許可權可讓使用者在表單中新增註解並儲存表單資料。 (請參閱轉譯啟用許可權的Forms。)
/*
* This Java Quick Start uses the following JAR files
* 1. adobe-forms-client.jar
* 2. adobe-livecycle-client.jar
* 3. adobe-usermanager-client.jar
* 4. activation.jar (required for SOAP mode)
* 5. axis.jar (required for SOAP mode)
* 6. commons-codec-1.3.jar (required for SOAP mode)
* 7. commons-collections-3.2.jar (required for SOAP mode)
* 8. commons-discovery.jar (required for SOAP mode)
* 9. commons-logging.jar (required for SOAP mode)
* 10. dom3-xml-apis-2.5.0.jar (required for SOAP mode)
* 11. jaxen-1.1-beta-9.jar (required for SOAP mode)
* 12. jaxrpc.jar (required for SOAP mode)
* 13. log4j.jar (required for SOAP mode)
* 14. mail.jar (required for SOAP mode)
* 15. saaj.jar (required for SOAP mode)
* 16. wsdl4j.jar (required for SOAP mode)
* 17. xalan.jar (required for SOAP mode)
* 18. xbean.jar (required for SOAP mode)
* 19. xercesImpl.jar (required for SOAP mode)
*
* (Because Forms quick starts are implemented as Java servlets, it is
* not necessary to include J2EE specific JAR files - the Java project
* that contains this quick start is exported as a WAR file which
* is deployed to the J2EE application server)
*
* These JAR files are in the following path:
* <install directory>/sdk/client-libs/common
*
* For complete details about the location of these JAR files,
* see "Including AEM Forms library files" in Programming with AEM forms
*/
import java.io.IOException;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.adobe.livecycle.formsservice.client.*;
import java.util.*;
import java.io.InputStream;
import com.adobe.idp.Document;
import com.adobe.idp.dsc.clientsdk.ServiceClientFactory;
import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties;
public class RenderUsageRightsForms extends HttpServlet implements Servlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req,resp);
}
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
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 FormsServiceClient object
ServiceClientFactory myFactory = ServiceClientFactory.createInstance(connectionProps);
FormsServiceClient formsClient = new FormsServiceClient(myFactory);
//Set parameter values for the renderPDFFormWithUsageRights method
String formName = "Applications/FormsApplication/1.0/FormsFolder/Loan.xdp";
byte[] cData = "".getBytes();
Document oInputData = new Document(cData);
//Set run-time options
PDFFormRenderSpec pdfFormRenderSpec = new PDFFormRenderSpec();
pdfFormRenderSpec.setCacheEnabled(new Boolean(true));
//Set usage-rights run-time options
ReaderExtensionSpec reOptions = new ReaderExtensionSpec();
reOptions.setReCredentialAlias("RE2");
reOptions.setReCommenting(true);
reOptions.setReFillIn(true);
//Specify URI values required to render the form
URLSpec uriValues = new URLSpec();
uriValues.setApplicationWebRoot("https://'[server]:[port]'/FormsQS");
uriValues.setContentRootURI("repository:///");
uriValues.setTargetURL("https://'[server]:[port]'/FormsQS/HandleData");
//Render a rights-enabled PDF form
FormsResult formOut = formsClient.renderPDFFormWithUsageRights(
formName, //formQuery
oInputData, //inDataDoc
pdfFormRenderSpec, //renderFormOptionsSpec
reOptions, //applicationWebRoot
uriValues //targetURL
);
//Create a Document object that stores form data
Document myData = formOut.getOutputContent();
//Get the content type of the response and
//set the HttpServletResponse objects content type
String contentType = myData.getContentType();
resp.setContentType(contentType);
//Create a ServletOutputStream object
ServletOutputStream oOutput = resp.getOutputStream();
//Create an InputStream object
InputStream inputStream = myData.getInputStream();
//Write the data stream to the web browser
byte[] data = new byte[4096];
int bytesRead = 0;
while ((bytesRead = inputStream.read(data)) > 0)
{
oOutput.write(data, 0, bytesRead);
}
}catch (Exception e) {
System.out.println("The following exception occurred: "+e.getMessage());
}
}
}
快速入門(SOAP模式):使用Java™ API轉譯HTML表單
下列程式碼範例使用Forms服務Java™ API轉譯HTML表單。 工具列會新增至HTML表單和兩個檔案附件。 此外,從HttpServletRequest物件取得使用者代理程式值。 (請參閱將Forms轉譯為HTML。)
/*
* This Java Quick Start uses the following JAR files
* 1. adobe-forms-client.jar
* 2. adobe-livecycle-client.jar
* 3. adobe-usermanager-client.jar
* 4. activation.jar (required for SOAP mode)
* 5. axis.jar (required for SOAP mode)
* 6. commons-codec-1.3.jar (required for SOAP mode)
* 7. commons-collections-3.2.jar (required for SOAP mode)
* 8. commons-discovery.jar (required for SOAP mode)
* 9. commons-logging.jar (required for SOAP mode)
* 10. dom3-xml-apis-2.5.0.jar (required for SOAP mode)
* 11. jaxen-1.1-beta-9.jar (required for SOAP mode)
* 12. jaxrpc.jar (required for SOAP mode)
* 13. log4j.jar (required for SOAP mode)
* 14. mail.jar (required for SOAP mode)
* 15. saaj.jar (required for SOAP mode)
* 16. wsdl4j.jar (required for SOAP mode)
* 17. xalan.jar (required for SOAP mode)
* 18. xbean.jar (required for SOAP mode)
* 19. xercesImpl.jar (required for SOAP mode)
*
* (Because Forms quick starts are implemented as Java servlets, it is
* not necessary to include J2EE specific JAR files - the Java project
* that contains this quick start is exported as a WAR file which
* is deployed to the J2EE application server)
*
* These JAR files are in the following path:
* <install directory>/sdk/client-libs/common
*
* For complete details about the location of these JAR files,
* see "Including AEM Forms library files" in Programming with AEM forms
*/
import java.io.IOException;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.adobe.livecycle.formsservice.client.*;
import java.util.*;
import java.io.InputStream;
import com.adobe.idp.Document;
import com.adobe.idp.dsc.clientsdk.ServiceClientFactory;
import java.io.FileInputStream;
public class RenderHTMLForms extends HttpServlet implements Servlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req,resp);
}
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
try{
//Set connection properties required to invoke AEM Forms
Properties connectionProps = new Properties();
connectionProps.setProperty("DSC_DEFAULT_SOAP_ENDPOINT", "https://'[server]:[port]'");
connectionProps.setProperty("DSC_TRANSPORT_PROTOCOL","SOAP");
connectionProps.setProperty("DSC_SERVER_TYPE", "JBoss");
connectionProps.setProperty("DSC_CREDENTIAL_USERNAME", "administrator");
connectionProps.setProperty("DSC_CREDENTIAL_PASSWORD", "password");
//Create a FormsServiceClient object
ServiceClientFactory myFactory = ServiceClientFactory.createInstance(connectionProps);
FormsServiceClient formsClient = new FormsServiceClient(myFactory);
//Set parameter values for the (Deprecated) renderHTMLForm method
String formName = "Applications/FormsApplication/1.0/FormsFolder/Loan.xdp";
byte[] cData = "".getBytes();
Document oInputData = new Document(cData);
//Obtain the user agent value from the HttpServletRequest object
String userAgent = req.getHeader("user-agent");
//Create an HTMLRenderSpec object to store HTML run-time options
HTMLRenderSpec htmlRS = new HTMLRenderSpec();
htmlRS.setHTMLToolbar(HTMLToolbar.Vertical);
//Specify the locale value
htmlRS.setLocale("en_US");
//Render the HTML form within full HTML tags
htmlRS.setOutputType(OutputType.FullHTMLTags);
//Set style information that controls the presentation of the HTML form
htmlRS.setStyleGenerationLevel(StyleGenerationLevel.InlineAndInternalStyles);
//Specify URI values that are required to render a form
URLSpec uriValues = new URLSpec();
uriValues.setApplicationWebRoot("https://'[server]:[port]'/FormsQS");
uriValues.setContentRootURI("repository:///");
uriValues.setTargetURL("https://'[server]:[port]'/FormsQS/HandleSubmittedHTMLForm");
//Specify file attachments
FileInputStream myForm = new FileInputStream("C:\\Attach1.txt");
Document attachment1 = new Document(myForm);
FileInputStream myForm2 = new FileInputStream("C:\\Attach2.txt");
Document attachment2 = new Document(myForm2);
String fileName = "Attach1.txt";
String fileName2 = "Attach2.txt";
Map fileAttachments = new HashMap();
fileAttachments.put(fileName, attachment1);
fileAttachments.put(fileName2, attachment2);
//Invoke the (Deprecated) renderHTMLForm method
FormsResult formOut = formsClient.renderHTMLForm(
formName, //formQuery
TransformTo.MSDHTML, //transformTo
oInputData, //inDataDoc
htmlRS, //renderHTMLSpec
userAgent, //User Agent
uriValues, //urlSpec
fileAttachments //attachments
);
//Create a Document object that stores form data
Document myData = formOut.getOutputContent();
//Get the content type of the response and
//set the HttpServletResponse object's content type
String contentType = myData.getContentType();
resp.setContentType(contentType);
//Create a ServletOutputStream object
ServletOutputStream oOutput = resp.getOutputStream();
//Create an InputStream object
InputStream inputStream = myData.getInputStream();
//Write the data stream to the web browser
byte[] data = new byte[4096];
int bytesRead = 0;
while ((bytesRead = inputStream.read(data)) > 0)
{
oOutput.write(data, 0, bytesRead);
}
}catch (Exception e) {
System.out.println("The following exception occurred: "+e.getMessage());
}
}
}
快速入門(SOAP模式):呈現使用CSS檔案的HTML表單(使用Java™ API)
下列程式碼範例使用Forms服務使用者端API轉譯HTML表單。 參考的自訂CSS檔案名稱為 custom.css。 (請參閱使用自訂CSS檔案呈現HTMLForms。)
/*
* This Java Quick Start uses the following JAR files
* 1. adobe-forms-client.jar
* 2. adobe-livecycle-client.jar
* 3. adobe-usermanager-client.jar
* 4. activation.jar (required for SOAP mode)
* 5. axis.jar (required for SOAP mode)
* 6. commons-codec-1.3.jar (required for SOAP mode)
* 7. commons-collections-3.2.jar (required for SOAP mode)
* 8. commons-discovery.jar (required for SOAP mode)
* 9. commons-logging.jar (required for SOAP mode)
* 10. dom3-xml-apis-2.5.0.jar (required for SOAP mode)
* 11. jaxen-1.1-beta-9.jar (required for SOAP mode)
* 12. jaxrpc.jar (required for SOAP mode)
* 13. log4j.jar (required for SOAP mode)
* 14. mail.jar (required for SOAP mode)
* 15. saaj.jar (required for SOAP mode)
* 16. wsdl4j.jar (required for SOAP mode)
* 17. xalan.jar (required for SOAP mode)
* 18. xbean.jar (required for SOAP mode)
* 19. xercesImpl.jar (required for SOAP mode)
*
* (Because Forms quick starts are implemented as Java servlets, it is
* not necessary to include J2EE specific JAR files - the Java project
* that contains this quick start is exported as a WAR file which
* is deployed to the J2EE application server)
*
* These JAR files are in the following path:
* <install directory>/sdk/client-libs/common
*
* For complete details about the location of these JAR files,
* see "Including AEM Forms library files" in Programming with AEM forms
*/
import java.io.IOException;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.adobe.livecycle.formsservice.client.*;
import java.util.*;
import java.io.InputStream;
import com.adobe.idp.Document;
import com.adobe.idp.dsc.clientsdk.ServiceClientFactory;
import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties;
import java.io.FileInputStream;
public class RenderHTMLCSS extends HttpServlet implements Servlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req,resp);
}
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
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 FormsServiceClient object
ServiceClientFactory myFactory = ServiceClientFactory.createInstance(connectionProps);
FormsServiceClient formsClient = new FormsServiceClient(myFactory);
//Set parameter values for the (Deprecated) renderHTMLForm method
String formName = "Applications/FormsApplication/1.0/FormsFolder/Loan.xdp";
byte[] cData = "".getBytes();
Document oInputData = new Document(cData);
String userAgent = "" ;
//Create an HTMLRenderSpec object to store HTML run-time options
HTMLRenderSpec htmlRS = new HTMLRenderSpec();
//Specify the locale value
htmlRS.setLocale("en_US");
//Specify a custom CSS file to use
htmlRS.setCustomCSSURI("C:\\Adobe\custom.css");
//Render the HTML form within full HTML tags
htmlRS.setOutputType(OutputType.FullHTMLTags);
//Specify URI values that are required to render a form
URLSpec uriValues = new URLSpec();
uriValues.setApplicationWebRoot("https://'[server]:[port]'/FormsQS");
uriValues.setContentRootURI("repository:///");
uriValues.setTargetURL("https://'[server]:[port]'/FormsQS/HandleData");
//Specify file attachments
FileInputStream myForm = new FileInputStream("C:\\Attach1.txt");
Document attachment1 = new Document(myForm);
FileInputStream myForm2 = new FileInputStream("C:\\Attach2.txt");
Document attachment2 = new Document(myForm2);
String fileName = "Attach1.txt";
String fileName2 = "Attach2.txt";
Map fileAttachments = new HashMap();
fileAttachments.put(fileName, attachment1);
fileAttachments.put(fileName2, attachment2);
//Invoke the (Deprecated) renderHTMLForm method
FormsResult formOut = formsClient.renderHTMLForm(
formName, //formQuery
TransformTo.MSDHTML, //transformTo
oInputData, //inDataDoc
htmlRS, //renderHTMLSpec
userAgent, //User Agent
uriValues, //urlSpec
fileAttachments //attachments
);
//Create a Document object that stores form data
Document myData = formOut.getOutputContent();
//Get the content type of the response and
//set the HttpServletResponse object's content type
String contentType = myData.getContentType();
resp.setContentType(contentType);
//Create a ServletOutputStream object
ServletOutputStream oOutput = resp.getOutputStream();
//Create an InputStream object
InputStream inputStream = myData.getInputStream();
//Write the data stream to the web browser
byte[] data = new byte[4096];
int bytesRead = 0;
while ((bytesRead = inputStream.read(data)) > 0)
{
oOutput.write(data, 0, bytesRead);
}
}catch (Exception e) {
System.out.println("The following exception occurred: "+e.getMessage());
}
}
}
快速入門(SOAP模式):使用Java™ API使用自訂工具列轉譯HTML表單
下列程式碼範例會轉譯HTML表單,其工具列以法文顯示。 fscmenu.xml的位置為C:\Adobe (此資料夾必須位於託管AEM Forms的伺服器上)。 請注意,地區設定值為fr_FR。 討論如何使用自訂工具列轉譯HTML表單的區段會顯示此快速入門中使用的fscmenu.xml檔案語法。 (請參閱使用自訂工具列呈現HTMLForms。)
/*
* This Java Quick Start uses the following JAR files
* 1. adobe-forms-client.jar
* 2. adobe-livecycle-client.jar
* 3. adobe-usermanager-client.jar
* 4. activation.jar (required for SOAP mode)
* 5. axis.jar (required for SOAP mode)
* 6. commons-codec-1.3.jar (required for SOAP mode)
* 7. commons-collections-3.2.jar (required for SOAP mode)
* 8. commons-discovery.jar (required for SOAP mode)
* 9. commons-logging.jar (required for SOAP mode)
* 10. dom3-xml-apis-2.5.0.jar (required for SOAP mode)
* 11. jaxen-1.1-beta-9.jar (required for SOAP mode)
* 12. jaxrpc.jar (required for SOAP mode)
* 13. log4j.jar (required for SOAP mode)
* 14. mail.jar (required for SOAP mode)
* 15. saaj.jar (required for SOAP mode)
* 16. wsdl4j.jar (required for SOAP mode)
* 17. xalan.jar (required for SOAP mode)
* 18. xbean.jar (required for SOAP mode)
* 19. xercesImpl.jar (required for SOAP mode)
*
* (Because Forms quick starts are implemented as Java servlets, it is
* not necessary to include J2EE specific JAR files - the Java project
* that contains this quick start is exported as a WAR file which
* is deployed to the J2EE application server)
*
* These JAR files are in the following path:
* <install directory>/sdk/client-libs/common
*
* For complete details about the location of these JAR files,
* see "Including AEM Forms library files" in Programming with AEM forms
*/
import java.io.IOException;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.adobe.livecycle.formsservice.client.*;
import java.util.*;
import java.io.InputStream;
import com.adobe.idp.Document;
import com.adobe.idp.dsc.clientsdk.ServiceClientFactory;
import java.io.FileInputStream;
public class RenderCustomToolbar extends HttpServlet implements Servlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req,resp);
}
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
try{
//Set connection properties required to invoke AEM Forms
Properties connectionProps = new Properties();
connectionProps.setProperty("DSC_DEFAULT_SOAP_ENDPOINT", "https://'[server]:[port]'");
connectionProps.setProperty("DSC_TRANSPORT_PROTOCOL","SOAP");
connectionProps.setProperty("DSC_SERVER_TYPE", "JBoss");
connectionProps.setProperty("DSC_CREDENTIAL_USERNAME", "administrator");
connectionProps.setProperty("DSC_CREDENTIAL_PASSWORD", "password");
//Create a FormsServiceClient object
ServiceClientFactory myFactory = ServiceClientFactory.createInstance(connectionProps);
FormsServiceClient formsClient = new FormsServiceClient(myFactory);
//Set parameter values for the renderHTMLForm method
String formName = "Applications/FormsApplication/1.0/FormsFolder/Loan.xdp";
byte[] cData = "".getBytes();
Document oInputData = new Document(cData);
String userAgent = "" ;
//Create an HTMLRenderSpec object to store HTML run-time options
HTMLRenderSpec htmlRS = new HTMLRenderSpec();
htmlRS.setHTMLToolbar(HTMLToolbar.Vertical);
//Specify the URI location of the
// fscmenu.xml file that contains French
htmlRS.setToolbarURI("C:\\Adobe");
//Specify the locale value
htmlRS.setLocale("fr_FR");
//Render the HTML form within full HTML tags
htmlRS.setOutputType(OutputType.FullHTMLTags);
//Specify URI values that are required to render a form
URLSpec uriValues = new URLSpec();
uriValues.setApplicationWebRoot("https://'[server]:[port]'/FormsQS");
uriValues.setContentRootURI("repository:///");
uriValues.setTargetURL("https://'[server]:[port]'/FormsQS/HandleData");
//Specify file attachments
FileInputStream myForm = new FileInputStream("C:\\Attach1.txt");
Document attachment1 = new Document(myForm);
FileInputStream myForm2 = new FileInputStream("C:\\Attach2.txt");
Document attachment2 = new Document(myForm2);
String fileName = "Attach1.txt";
String fileName2 = "Attach2.txt";
Map fileAttachments = new HashMap();
fileAttachments.put(fileName, attachment1);
fileAttachments.put(fileName2, attachment2);
//Invoke the renderHTMLForm method
FormsResult formOut = formsClient.renderHTMLForm(
formName, //formQuery
TransformTo.MSDHTML, //transformTo
oInputData, //inDataDoc
htmlRS, //renderHTMLSpec
userAgent, //User Agent
uriValues, //urlSpec
fileAttachments //attachments
);
//Create a Document object that stores form data
Document myData = formOut.getOutputContent();
//Get the content type of the response and
//set the HttpServletResponse object's content type
String contentType = myData.getContentType();
resp.setContentType(contentType);
//Create a ServletOutputStream object
ServletOutputStream oOutput = resp.getOutputStream();
//Create an InputStream object
InputStream inputStream = myData.getInputStream();
//Write the data stream to the web browser
byte[] data = new byte[4096];
int bytesRead = 0;
while ((bytesRead = inputStream.read(data)) > 0)
{
oOutput.write(data, 0, bytesRead);
}
}catch (Exception e) {
System.out.println("The following exception occurred: "+e.getMessage());
}
}
}
快速入門(SOAP模式):使用Java™ API處理以XML格式提交的PDF forms
下列程式碼範例會處理以XML格式提交的表單。 傳遞至processFormSubmission方法的內容型別值為CONTENT_TYPE=text/xml。 顯示對應至名為mortgageAmount、lastName和firstName之欄位的值。 此快速入門中使用名為getNodeText的使用者定義方法。 它接受org.w3c.dom.Document執行個體和指定節點名稱的字串值。 此方法會傳回代表節點值的字串值。 (請參閱處理已提交的Forms。)
/*
* This Java Quick Start uses the following JAR files
* 1. adobe-forms-client.jar
* 2. adobe-livecycle-client.jar
* 3. adobe-usermanager-client.jar
* 4. activation.jar (required for SOAP mode)
* 5. axis.jar (required for SOAP mode)
* 6. commons-codec-1.3.jar (required for SOAP mode)
* 7. commons-collections-3.2.jar (required for SOAP mode)
* 9. commons-discovery.jar (required for SOAP mode)
* 9. commons-logging.jar (required for SOAP mode)
* 10. dom3-xml-apis-2.5.0.jar (required for SOAP mode)
* 11. jaxen-1.1-beta-9.jar (required for SOAP mode)
* 12. jaxrpc.jar (required for SOAP mode)
* 13. log4j.jar (required for SOAP mode)
* 14. mail.jar (required for SOAP mode)
* 15. saaj.jar (required for SOAP mode)
* 16. wsdl4j.jar (required for SOAP mode)
* 17. xalan.jar (required for SOAP mode)
* 18. xbean.jar (required for SOAP mode)
* 19. xercesImpl.jar (required for SOAP mode)
*
* (Because Forms quick starts are implemented as Java servlets, it is
* not necessary to include J2EE specific JAR files - the Java project
* that contains this quick start is exported as a WAR file which
* is deployed to the J2EE application server)
*
* These JAR files are in the following path:
* <install directory>/sdk/client-libs/common
*
* For complete details about the location of these JAR files,
* see "Including AEM Forms library files" in Programming with AEM forms
*/
import java.io.IOException;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.adobe.livecycle.formsservice.client.*;
import java.util.*;
import java.io.DataInputStream;
import java.io.File;
import java.io.InputStream;
import java.io.PrintWriter;
import com.adobe.idp.Document;
import com.adobe.idp.dsc.clientsdk.ServiceClientFactory;
import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties;
//Import DOM libraries
import org.w3c.dom.NodeList;
import org.w3c.dom.Node;
import javax.xml.parsers.*;
public class HandleData extends HttpServlet implements Servlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req,resp);
}
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
try{
PrintWriter pp = resp.getWriter();
//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 FormsServiceClient object
FormsServiceClient formsClient = new FormsServiceClient(myFactory);
//Get Form data to pass to the processFormSubmission method
Document formData = new Document(req.getInputStream());
//Set run-time options
RenderOptionsSpec processSpec = new RenderOptionsSpec();
processSpec.setLocale("en_US");
//Invoke the processFormSubmission method
FormsResult formOut = formsClient.processFormSubmission(formData,
"CONTENT_TYPE=text/xml",
"",
processSpec);
//Get the processing state
short processState = formOut.getAction();
//Determine if the form data is ready to be processed
//This code example checks only for submitted data (value is 0)
if (processState == 0)
{
//Determine the content type of the data
String myContentType = formOut.getContentType();
System.out.println("THE CONTENT TYPS IS" +myContentType);
if (myContentType.equals("application/vnd.adobe.xdp+xml")) {
//Get the form data
Document formOutput = formOut.getOutputContent();
InputStream formInputStream = new DataInputStream(formOutput.getInputStream());
//Create DocumentBuilderFactory and DocumentBuilder objects
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
org.w3c.dom.Document myDOM = builder.parse(formInputStream);
//Call for each field in the form
String Amount = getNodeText("mortgageAmount", myDOM);
String myLastName = getNodeText("lastName", myDOM);
String myFirstName = getNodeText("firstName", myDOM);
//Write the form data to the web browser
pp.println("<p> The form data is :<br><br>" +
"<li> The mortgage amount is "+ Amount+"" +
"<li> Last name is "+ myLastName+"" +
"<li> First name is "+ myFirstName+"") ;
}
}
}
catch (Exception e) {
e.printStackTrace();
}
}
//This method returns the value of the specified node
private String getNodeText(String nodeName, org.w3c.dom.Document myDOM)
{
//Get the XML node by name
NodeList oList = myDOM.getElementsByTagName(nodeName);
Node myNode = oList.item(0);
NodeList oChildNodes = myNode.getChildNodes();
String sText = "";
for (int i = 0; i < oChildNodes.getLength(); i++)
{
Node oItem = oChildNodes.item(i);
if (oItem.getNodeType() == Node.TEXT_NODE)
{
sText = sText.concat(oItem.getNodeValue());
}
}
return sText;
}
}
com.adobe.idp.Document物件和org.w3c.dom.Document時,完全符合org.w3c.dom.Document的資格。快速入門(SOAP模式):使用Java™ API處理以PDF形式提交的PDF forms
以下程式碼範例會處理以PDF資料提交的表單。 傳遞至processFormSubmission方法的內容型別值為CONTENT_TYPE=application/pdf。 提交的表單會儲存為名為 tempPDF.pdf 的PDF檔案。 此外,由於表單是以PDF方式提交,因此可擷取檔案附件。 任何檔案附件都會儲存為JPEG檔案。 (請參閱處理已提交的Forms。)
/*
* This Java Quick Start uses the following JAR files
* 1. adobe-forms-client.jar
* 2. adobe-livecycle-client.jar
* 3. adobe-usermanager-client.jar
* 4. activation.jar (required for SOAP mode)
* 5. axis.jar (required for SOAP mode)
* 6. commons-codec-1.3.jar (required for SOAP mode)
* 7. commons-collections-3.2.jar (required for SOAP mode)
* 8. commons-discovery.jar (required for SOAP mode)
* 9. commons-logging.jar (required for SOAP mode)
* 10. dom3-xml-apis-2.5.0.jar (required for SOAP mode)
* 11. jaxen-1.1-beta-9.jar (required for SOAP mode)
* 12. jaxrpc.jar (required for SOAP mode)
* 13. log4j.jar (required for SOAP mode)
* 14. mail.jar (required for SOAP mode)
* 15. saaj.jar (required for SOAP mode)
* 16. wsdl4j.jar (required for SOAP mode)
* 17. xalan.jar (required for SOAP mode)
* 18. xbean.jar (required for SOAP mode)
* 19. xercesImpl.jar (required for SOAP mode)
*
* (Because Forms quick starts are implemented as Java servlets, it is
* not necessary to include J2EE specific JAR files - the Java project
* that contains this quick start is exported as a WAR file which
* is deployed to the J2EE application server)
*
* These JAR files are in the following path:
* <install directory>/sdk/client-libs/common
*
* For complete details about the location of these JAR files,
* see "Including AEM Forms library files" in Programming with AEM forms
*/
import java.io.IOException;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.adobe.livecycle.formsservice.client.*;
import java.util.*;
import java.io.DataInputStream;
import java.io.File;
import java.io.InputStream;
import java.io.PrintWriter;
import com.adobe.idp.Document;
import com.adobe.idp.dsc.clientsdk.ServiceClientFactory;
import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties;
//Import DOM libraries
import org.w3c.dom.NodeList;
import org.w3c.dom.Node;
import javax.xml.parsers.*;
public class HandleSubmittedPDFData extends HttpServlet implements Servlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req,resp);
}
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
try{
PrintWriter pp = resp.getWriter();
//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 FormsServiceClient object
FormsServiceClient formsClient = new FormsServiceClient(myFactory);
//Get Form data to pass to the processFormSubmission method
Document formData = new Document(req.getInputStream());
//Set run-time options
RenderOptionsSpec processSpec = new RenderOptionsSpec();
processSpec.setLocale("en_US");
//Invoke the processFormSubmission method
FormsResult formOut = formsClient.processFormSubmission(formData,
"CONTENT_TYPE=application/pdf",
"",
processSpec);
//Determine if the form contains file attachments
//It is assumed that file attachments are JPG files
List fileAttachments = formOut.getAttachments();
//Create an Iterator object and iterate through
//the List object
Iterator iter = fileAttachments.iterator();
int i = 0 ;
while (iter.hasNext()) {
Document file = (Document)iter.next();
file.copyToFile(new File("C:\\Adobe\tempFile"+i+".jpg"));
i++;
}
//Get the processing state
short processState = formOut.getAction();
//Determine if the form data is ready to be processed
//This code example checks only for submitted data (value is 0)
if (processState == 0)
{
//Determine the content type of the data
String myContentType = formOut.getContentType();
if (myContentType.equals("application/pdf")){
//Get the form data
Document myPDFfile = formOut.getOutputContent();
//Create a PDF object
File myPDFFile = new File("C:\\Adobe\tempPDF.pdf");
//Populate the PDF file
myPDFfile.copyToFile(myPDFFile);
pp.println("<p> The PDF file is saved as C:\\Adobe\tempPDF.pdf") ;
}
}
}
catch (Exception e) {
e.printStackTrace();
}
}
}
快速入門(SOAP模式):使用Java™ API處理以XML格式提交的HTML表單
下列程式碼範例會處理以XML資料提交的HTML表單。 傳遞至processFormSubmission方法的內容型別值為CONTENT_TYPE=application/x-www-form-urlencoded。 顯示對應至名為mortgageAmount、lastName和firstName之欄位的值。 此快速入門中使用名為getNodeText的使用者定義方法。 它接受org.w3c.dom.Document執行個體和指定節點名稱的字串值。 此方法會傳回代表節點值的字串值。 (請參閱處理已提交的Forms。)
/*
* This Java Quick Start uses the following JAR files
* 1. adobe-forms-client.jar
* 2. adobe-livecycle-client.jar
* 3. adobe-usermanager-client.jar
* 4. activation.jar (required for SOAP mode)
* 5. axis.jar (required for SOAP mode)
* 6. commons-codec-1.3.jar (required for SOAP mode)
* 7. commons-collections-3.2.jar (required for SOAP mode)
* 8. commons-discovery.jar (required for SOAP mode)
* 9. commons-logging.jar (required for SOAP mode)
* 10. dom3-xml-apis-2.5.0.jar (required for SOAP mode)
* 11. jaxen-1.1-beta-9.jar (required for SOAP mode)
* 12. jaxrpc.jar (required for SOAP mode)
* 13. log4j.jar (required for SOAP mode)
* 14. mail.jar (required for SOAP mode)
* 15. saaj.jar (required for SOAP mode)
* 16. wsdl4j.jar (required for SOAP mode)
* 17. xalan.jar (required for SOAP mode)
* 18. xbean.jar (required for SOAP mode)
* 19. xercesImpl.jar (required for SOAP mode)
*
* (Because Forms quick starts are implemented as Java servlets, it is
* not necessary to include J2EE specific JAR files - the Java project
* that contains this quick start is exported as a WAR file which
* is deployed to the J2EE application server)
*
* These JAR files are in the following path:
* <install directory>/sdk/client-libs/common
*
* For complete details about the location of these JAR files,
* see "Including AEM Forms library files" in Programming with AEM forms
*/
import java.io.IOException;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.adobe.livecycle.formsservice.client.*;
import java.util.*;
import java.io.DataInputStream;
import java.io.File;
import java.io.InputStream;
import java.io.PrintWriter;
import com.adobe.idp.Document;
import com.adobe.idp.dsc.clientsdk.ServiceClientFactory;
import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties;
//Import DOM libraries
import org.w3c.dom.NodeList;
import org.w3c.dom.Node;
import javax.xml.parsers.*;
/*
* This quick start handles data submitted as XML from a rendered HTML form
*/
public class HandleSubmittedHTMLForm extends HttpServlet implements Servlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req,resp);
}
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
try{
PrintWriter pp = resp.getWriter();
//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 FormsServiceClient object
FormsServiceClient formsClient = new FormsServiceClient(myFactory);
//Get Form data to pass to the processFormSubmission method
Document formData = new Document(req.getInputStream());
//Set run-time options
RenderOptionsSpec processSpec = new RenderOptionsSpec();
processSpec.setLocale("en_US");
//Invoke the processFormSubmission method
FormsResult formOut = formsClient.processFormSubmission(formData,
"CONTENT_TYPE=application/x-www-form-urlencoded",
"",
processSpec);
//Get the processing state
short processState = formOut.getAction();
//Determine if the form data is ready to be processed
//This code example checks only for submitted data (value is 0)
if (processState == 0)
{
//Get the form data
Document formOutput = formOut.getOutputContent();
InputStream formInputStream = new DataInputStream(formOutput.getInputStream());
//Create DocumentBuilderFactory and DocumentBuilder objects
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
org.w3c.dom.Document myDOM = builder.parse(formInputStream);
//Call for each field in the form
String Amount = getNodeText("mortgageAmount", myDOM);
String myLastName = getNodeText("lastName", myDOM);
String myFirstName = getNodeText("firstName", myDOM);
//Write the form data to the web browser
pp.println("<p> The form data is :<br><br>" +
"<li> The mortgage amount is "+ Amount+"" +
"<li> Last name is "+ myLastName+"" +
"<li> First name is "+ myFirstName+"") ;
}
}
catch (Exception e) {
e.printStackTrace();
}
}
//This method returns the value of the specified node
private String getNodeText(String nodeName, org.w3c.dom.Document myDOM)
{
//Get the XML node by name
NodeList oList = myDOM.getElementsByTagName(nodeName);
Node myNode = oList.item(0);
NodeList oChildNodes = myNode.getChildNodes();
String sText = "";
for (int i = 0; i < oChildNodes.getLength(); i++)
{
Node oItem = oChildNodes.item(i);
if (oItem.getNodeType() == Node.TEXT_NODE)
{
sText = sText.concat(oItem.getNodeValue());
}
}
return sText;
}
}
快速入門(SOAP模式):使用Java™ API以提交的XML資料建立PDF檔案
以下Java™程式碼範例會處理以XML格式提交的表單資料。 表單資料是使用Forms API從表單提交中擷取的,並傳送至輸出服務。 表單資料和表單設計可用來建立非互動式PDF檔案。 非互動式PDF檔案儲存在名為/Company Home/Test Directory的Content Services (已過時)節點中。 表單名稱會以動態方式建立。 也就是說,系統會使用使用者的名字和姓氏來命名PDF檔案。 新內容的資源識別碼會寫入使用者端Web瀏覽器。 (請參閱使用已提交的XML資料建立PDF檔案。)
/*
* This Java Quick Start uses the following JAR files
* 1. adobe-forms-client.jar
* 2. adobe-livecycle-client.jar
* 3. adobe-usermanager-client.jar
* 4. activation.jar (required for SOAP mode)
* 5. axis.jar (required for SOAP mode)
* 6. commons-codec-1.3.jar (required for SOAP mode)
* 7. commons-collections-3.2.jar (required for SOAP mode)
* 8. commons-discovery.jar (required for SOAP mode)
* 9. commons-logging.jar (required for SOAP mode)
* 10. dom3-xml-apis-2.5.0.jar (required for SOAP mode)
* 11. jaxen-1.1-beta-9.jar (required for SOAP mode)
* 12. jaxrpc.jar (required for SOAP mode)
* 13. log4j.jar (required for SOAP mode)
* 14. mail.jar (required for SOAP mode)
* 15. saaj.jar (required for SOAP mode)
* 16. wsdl4j.jar (required for SOAP mode)
* 17. xalan.jar (required for SOAP mode)
* 18. xbean.jar (required for SOAP mode)
* 19. xercesImpl.jar (required for SOAP mode)
* 20. adobe-output-client.jar
* 21. adobe-contentservices-client.jar
*
* (Because Forms quick starts are implemented as Java servlets, it is
* not necessary to include J2EE specific JAR files - the Java project
* that contains this quick start is exported as a WAR file which
* is deployed to the J2EE application server)
*
* These JAR files are in the following path:
* <install directory>/sdk/client-libs/common
*
* For complete details about the location of these JAR files,
* see "Including AEM Forms library files" in Programming with AEM forms
*/
import java.io.IOException;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.adobe.livecycle.contentservices.client.CRCResult;
import com.adobe.livecycle.contentservices.client.impl.DocumentManagementServiceClientImpl;
import com.adobe.livecycle.contentservices.client.impl.UpdateVersionType;
import com.adobe.livecycle.formsservice.client.*;
import com.adobe.livecycle.output.client.OutputClient;
import com.adobe.livecycle.output.client.OutputResult;
import com.adobe.livecycle.output.client.PDFOutputOptionsSpec;
import com.adobe.livecycle.output.client.TransformationFormat;
import java.util.*;
import java.io.DataInputStream;
import java.io.File;
import java.io.InputStream;
import java.io.PrintWriter;
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;
//Import DOM libraries
import org.w3c.dom.NodeList;
import org.w3c.dom.Node;
import javax.xml.parsers.*;
public class HandleDataSendToOutput extends HttpServlet implements Servlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req,resp);
}
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
try{
PrintWriter pp = resp.getWriter();
//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 FormsServiceClient object
FormsServiceClient formsClient = new FormsServiceClient(myFactory);
//Get Form data to pass to the processFormSubmission method
Document formData = new Document(req.getInputStream());
//Set run-time options
RenderOptionsSpec processSpec = new RenderOptionsSpec();
processSpec.setLocale("en_US");
//Invoke the processFormSubmission method
FormsResult formOut = formsClient.processFormSubmission(formData,
"CONTENT_TYPE=text/xml",
"",
processSpec);
//Get the processing state
short processState = formOut.getAction();
//Determine if the form data is ready to be processed
//This code example checks only for submitted data (value is 0)
if (processState == 0)
{
//Determine the content type of the data
String myContentType = formOut.getContentType();
if (myContentType.equals("application/vnd.adobe.xdp+xml")) {
//Get the form data
Document formOutput = formOut.getOutputContent();
InputStream formInputStream = new DataInputStream(formOutput.getInputStream());
//Create DocumentBuilderFactory and DocumentBuilder objects
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
org.w3c.dom.Document myDOM = builder.parse(formInputStream);
//Call for each field in the form
String Amount = getNodeText("mortgageAmount", myDOM);
String myLastName = getNodeText("lastName", myDOM);
String myFirstName = getNodeText("firstName", myDOM);
//Write the form data to the web browser
pp.println("<p> The form data is :<br><br>" +
"<li> The mortgage amount is "+ Amount+"" +
"<li> Last name is "+ myLastName+"" +
"<li> First name is "+ myFirstName+"") ;
//Create a non-interactive PDF document by invoking the Output service
Document myPDFform = GeneratePDFDocument(myFactory, formOutput);
//Create the name of the PDF file to store
String pdfName = "Loan_"+myLastName+"_"+myFirstName+".pdf" ;
String userName = myFirstName+" "+myLastName ;
//Store the PDF form into Content Services (deprecated)
String resourceID = StorePDFDocument(myFactory, myPDFform, pdfName,userName);
pp.println("<p> The pdf document was store in :<br><br>" +
"<li> /Company home "+
"<li> The identifier value of the new resource is "+ resourceID+"");
}
}
}
catch (Exception e) {
e.printStackTrace();
}
}
//Store the PDF document in /Company Home/Test Directory using the
//AEM Forms Content Service API
private String StorePDFDocument(ServiceClientFactory myFactory, com.adobe.idp.Document pdfDoc, String formName, String userName)
{
try
{
//Create a DocumentManagementServiceClientImpl object
DocumentManagementServiceClientImpl docManager = new DocumentManagementServiceClientImpl(myFactory);
//Specify the store and node name
String storeName ="SpacesStore";
String nodeName = "/Company Home/Test Directory";
//Create a MAP instance to store attributes
Map<String,Object> inputs = new HashMap<String,Object>();
//Specify attributes that belong to the new content
String creator = "{https://www.alfresco.org/model/content/1.0}creator";
String description = "{https://www.alfresco.org/model/content/1.0}description";
inputs.put(creator,userName);
inputs.put(description,"A mortgage application form");
//Store MortgageForm.pdf in /Company Home/Test Directory
CRCResult result = docManager.storeContent(storeName,
nodeName,
formName,
"{https://www.alfresco.org/model/content/1.0}content",
pdfDoc,
"UTF-8",
UpdateVersionType.INCREMENT_MAJOR_VERSION,
null,
inputs);
//Get the identifier value of the new resource
String id = result.getNodeUuid();
return id;
}
catch (Exception ee)
{
ee.printStackTrace();
}
return null ;
}
//This method returns the value of the specified node
private com.adobe.idp.Document GeneratePDFDocument(ServiceClientFactory myFactory, com.adobe.idp.Document formData)
{
try
{
//Create an OutputClient object
OutputClient outClient = new OutputClient(myFactory);
//Set PDF run-time options
com.adobe.livecycle.output.client.PDFOutputOptionsSpec outputOptions = new PDFOutputOptionsSpec();
outputOptions.setLocale("en_US");
//Set rendering run-time options
com.adobe.livecycle.output.client.RenderOptionsSpec pdfOptions = new com.adobe.livecycle.output.client.RenderOptionsSpec();
pdfOptions.setLinearizedPDF(true);
//Create a PDF document
OutputResult outputDocument = outClient.generatePDFOutput(
TransformationFormat.PDF,
"Loan.xdp",
"C:\\Adobe",
outputOptions,
pdfOptions,
formData
);
//Get the Generated PDF file
Document ouputDoc = outputDocument.getGeneratedDoc();
return ouputDoc ;
}
catch (Exception ee)
{
ee.printStackTrace();
}
return null;
}
//This method returns the value of the specified node
private String getNodeText(String nodeName, org.w3c.dom.Document myDOM)
{
//Get the XML node by name
NodeList oList = myDOM.getElementsByTagName(nodeName);
Node myNode = oList.item(0);
NodeList oChildNodes = myNode.getChildNodes();
String sText = "";
for (int i = 0; i < oChildNodes.getLength(); i++)
{
Node oItem = oChildNodes.item(i);
if (oItem.getNodeType() == Node.TEXT_NODE)
{
sText = sText.concat(oItem.getNodeValue());
}
}
return sText;
}
}