Forms 서비스 API 빠른 시작 :headding-anchor:forms-service-api-quick-starts
이 문서의 샘플과 예제는 JEE 환경의 AEM Forms에 대해서만 적용됩니다.
Forms 서비스에서는 다음 빠른 시작을 사용할 수 있습니다.
빠른 시작(SOAP 모드): Java를 사용하여 대화형 PDF 양식 렌더링
빠른 시작(SOAP 모드): Java를 사용하여 클라이언트에서 양식 렌더링
빠른 시작(SOAP 모드): Java를 사용하여 조각을 기반으로 양식 렌더링
빠른 시작(SOAP 모드): Java를 사용하여 권한이 활성화된 양식 렌더링
빠른 시작(SOAP 모드): Java를 사용하여 HTML 양식 렌더링
빠른 시작(SOAP 모드): Java를 사용하여 사용자 지정 도구 모음으로 HTML 양식 렌더링
빠른 시작(SOAP 모드): Java를 사용하여 XML로 제출된 PDF forms 처리
빠른 시작(SOAP 모드): Java를 사용하여 PDF으로 제출된 PDF forms 처리
빠른 시작(SOAP 모드): Java를 사용하여 XML로 제출된 HTML 양식 처리
빠른 시작(SOAP 모드): Java를 사용하여 제출된 XML 데이터로 PDF 문서 생성
빠른 시작(SOAP 모드): Java를 사용하여 흐름 가능한 레이아웃으로 Forms 미리 채우기
빠른 시작(SOAP 모드): Java를 사용하여 계산 스크립트가 포함된 양식 처리
빠른 시작(SOAP 모드): Java를 사용하여 성능 최적화
빠른 시작(SOAP 모드): Java를 사용하여 값별 렌더링
빠른 시작(SOAP 모드): Java를 사용하여 Forms 서비스에 문서 전달
Forms 서비스 API를 사용하는 애플리케이션 논리는 Java™ 서블릿으로 구현됩니다. AEM Forms 작업은 AEM Forms 강력한 형식의 API를 사용하여 수행할 수 있으며 연결 모드를 SOAP으로 설정해야 합니다.
팁: Adobe Developer 웹 사이트에는 Forms 서비스를 호출하고 양식을 렌더링하는 ASP.NET 응용 프로그램을 만드는 방법에 대해 설명하는 다음 문서가 포함되어 있습니다.
빠른 시작(SOAP 모드): Java™ API를 사용하여 대화형 PDF 양식 렌더링 :headding-anchor:quick-start-soap-mode-rendering-an-interactive-pdf-form-using-the-java-api
다음 코드 예제에서는 이름이 Loan.xdp 인 대화형 PDF 양식을 클라이언트 웹 브라우저로 렌더링합니다. 파일이 양식에 첨부됩니다. 양식 디자인은 응용 프로그램의 일부이며 콘텐츠 루트 URI 값 repository:///
을(를) 사용하여 참조됩니다. (대화형 PDF 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 RenderPDFForm 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/Loan.xdp";
byte[] cData = "".getBytes();
Document oInputData = new Document(cData);
//Set run-time options using a PDFFormRenderSpec instance
PDFFormRenderSpec pdfFormRenderSpec = new PDFFormRenderSpec();
pdfFormRenderSpec.setCacheEnabled(new Boolean(true));
pdfFormRenderSpec.setAcrobatVersion(AcrobatVersion.Acrobat_9);
//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 to attach to the form
FileInputStream fileAttachment = new FileInputStream("C:\\rideau1.jpg");
Document attachment1 = new Document(fileAttachment);
String fileName = "rideau1.jpg";
Map fileAttachments = new HashMap();
fileAttachments.put(fileName, attachment1);
//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
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 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) {
e.printStackTrace();
}
}
}
빠른 시작(SOAP 모드): Java™ API를 사용하여 클라이언트에서 양식 렌더링 :headding-anchor:quick-start-soap-mode-rendering-a-form-at-the-client-using-the-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를 사용하여 안내서 렌더링(삭제 예정) :headding-anchor:quick-start-soap-mode-rendering-a-guide-deprecated-using-the-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를 사용하여 조각을 기반으로 양식 렌더링 :headding-anchor:quick-start-soap-mode-rendering-a-form-based-on-fragments-using-the-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를 사용하여 권한이 활성화된 양식 렌더링 :headding-anchor:quick-start-soap-mode-rendering-a-rights-enabled-form-using-the-java-api
다음 코드 예제에서는 권한이 활성화된 양식을 클라이언트 웹 브라우저에 렌더링합니다. 이 코드 예제에서 설정한 사용 권한을 사용하면 사용자가 양식에 주석을 추가하고 양식 데이터를 저장할 수 있습니다. 권한이 활성화된 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 양식 렌더링 :headding-anchor:quick-start-soap-mode-rendering-an-html-form-using-the-java-api
다음 코드 예제에서는 Forms 서비스 Java™ API를 사용하여 HTML 양식을 렌더링합니다. HTML 양식과 두 개의 첨부 파일에 도구 모음이 추가됩니다. 또한 HttpServletRequest
개체에서 사용자 에이전트 값을 가져옵니다. (HTML으로 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 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 모드): Java™ API를 사용하여 CSS 파일을 사용하는 HTML 양식 렌더링 :headding-anchor:quick-start-soap-mode-rendering-an-html-form-that-uses-a-css-file-using-the-java-api
다음 코드 예제에서는 Forms 서비스 클라이언트 API를 사용하여 HTML 양식을 렌더링합니다. 참조되는 사용자 지정 CSS 파일의 이름은 custom.css 입니다. (사용자 지정 CSS 파일을 사용하여 HTML 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;
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 양식 렌더링 :headding-anchor:quick-start-soap-mode-rendering-an-html-form-with-a-custom-toolbar-using-the-java-api
다음 코드 예제에서는 프랑스어로 표시되는 도구 모음을 사용하여 HTML 양식을 렌더링합니다. fscmenu.xml의 위치는 C:\Adobe입니다(이 폴더는 AEM Forms을 호스팅하는 서버에 있어야 함). 로케일 값은 fr_FR
입니다. 사용자 지정 도구 모음을 사용하여 HTML 양식을 렌더링하는 방법에 대해 설명하는 섹션에는 이 빠른 시작에 사용된 fscmenu.xml 파일의 구문이 표시됩니다. (사용자 지정 도구 모음으로 HTML 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 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 처리 :headding-anchor:quick-start-soap-mode-handling-pdf-forms-submitted-as-xml-using-the-java-api
다음 코드 예제에서는 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 처리 :headding-anchor:quick-start-soap-mode-handling-pdf-forms-submitted-as-pdf-using-the-java-api
다음 코드 예제에서는 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 양식 처리 :headding-anchor:quick-start-soap-mode-handling-html-forms-submitted-as-xml-using-the-java-api
다음 코드 예제에서는 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 문서 생성 :headding-anchor:quick-start-soap-mode-creating-pdf-documents-with-submitted-xml-data-using-the-java-api
다음 Java™ 코드 예제에서는 XML로 제출된 양식 데이터를 처리합니다. 양식 데이터는 Forms API를 사용하여 양식 제출에서 검색되어 출력 서비스로 전송됩니다. 양식 데이터 및 양식 디자인은 비대화형 PDF 문서를 만드는 데 사용됩니다. 비대화형 PDF 문서는 /Company Home/Test Directory
(이)라는 Content Services(더 이상 사용되지 않음) 노드에 저장됩니다. 양식 이름은 동적으로 만들어집니다. 즉, 사용자의 이름과 성이 PDF 파일의 이름을 지정하는 데 사용됩니다. 새 콘텐츠의 리소스 식별자가 클라이언트 웹 브라우저에 작성됩니다. (제출된 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;
}
}
빠른 시작(SOAP 모드): Java™ API를 사용하여 흐름 가능한 레이아웃으로 Forms 미리 채우기 :headding-anchor:quick-start-soap-mode-prepopulating-forms-with-flowable-layouts-using-the-java-api
다음 코드 예제에서는 동적 데이터 소스로 양식을 미리 채웁니다. 즉, 데이터 소스는 런타임에 만들어지며 XML 파일에 포함되지 않거나 디자인 타임에 만들어지지 않습니다. 이 코드 예에는 세 가지 사용자 정의 메서드가 포함되어 있습니다.
-
createDataSource
: 양식을 미리 채우는 데 사용되는 데이터 원본을 나타내는org.w3c.dom.Document
개체를 만듭니다. 이 사용자 정의 메서드는org.w3c.dom.Document
개체를 반환합니다. -
convertDataSource
:org.w3c.dom.Document
개체를com.adobe.idp.Document
개체로 변환합니다. 이 메서드는org.w3c.dom.Document
개체를 입력 매개 변수로 수락하고com.adobe.idp.Document
개체를 반환합니다. -
renderPOForm
: Forms 서비스 Java™ API를 사용하여 동적 구매 주문 양식을 렌더링합니다.convertDataSource
메서드에서 반환된com.adobe.idp.Document
개체는 양식을 미리 채우는 데 사용됩니다.이러한 모든 메서드는 Java™ 서블릿의
doPost
메서드 내에서 호출됩니다. 유동성 레이아웃으로 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.ByteArrayOutputStream;
import java.io.InputStream;
import com.adobe.idp.Document;
import com.adobe.idp.dsc.clientsdk.ServiceClientFactory;
import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties;
import org.w3c.dom.Element;
import javax.xml.parsers. * ;
import javax.xml.transform. * ;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
public class RenderDynamicForm 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 {
//Render a dynamic purchase order form
//Create an org.w3c.dom.Document object
org.w3c.dom.Document myDom = createDataSource();
//Convert the org.w3c.dom.Document object
//to a com.adobe.idp.Document object
com.adobe.idp.Document formData = convertDataSource(myDom);
//Render the dynamic form using data located within the
//com.adobe.idp.Document object
renderPOForm(resp, formData);
}
//Creates an org.w3c.dom.Document object
private org.w3c.dom.Document createDataSource() {
org.w3c.dom.Document document = null;
try {
//Create DocumentBuilderFactory and DocumentBuilder objects
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
//Create a Document object
document = builder.newDocument();
//Create the root element and append it to the XML DOM
Element root = (Element) document.createElement("transaction");
document.appendChild(root);
//Create the header element
Element header = (Element) document.createElement("header");
root.appendChild(header);
//Create the txtPONum element and append it to the
//header element
Element txtPONum = (Element) document.createElement("txtPONum");
txtPONum.appendChild(document.createTextNode("8745236985"));
header.appendChild(txtPONum);
//Create the dtmDate element and append it to the
//header element
Element dtmDate = (Element) document.createElement("dtmDate");
dtmDate.appendChild(document.createTextNode("2007-02-08"));
header.appendChild(dtmDate);
//Create the orderedByAddress element and append
//it to the header element
Element orderedByAddress = (Element) document.createElement("orderedByAddress");
orderedByAddress.appendChild(document.createTextNode("222, Any Blvd"));
header.appendChild(orderedByAddress);
//Create the txtOrderedByPhone element and append
//it to the header element
Element txtOrderedByPhone = (Element) document.createElement("txtOrderedByPhone");
txtOrderedByPhone.appendChild(document.createTextNode("(555) 555-2334"));
header.appendChild(txtOrderedByPhone);
//Create the txtOrderedByFax element and append
//it to the header element
Element txtOrderedByFax = (Element) document.createElement("txtOrderedByFax");
txtOrderedByFax.appendChild(document.createTextNode("(555) 555-9334"));
header.appendChild(txtOrderedByFax);
//Create the txtOrderedByContactName element and append
//it to the header element
Element txtOrderedByContactName = (Element) document.createElement("txtOrderedByContactName");
txtOrderedByContactName.appendChild(document.createTextNode("Frank Jones"));
header.appendChild(txtOrderedByContactName);
//Create the deliverToAddress element and append
//it to the header element
Element deliverToAddress = (Element) document.createElement("deliverToAddress");
deliverToAddress.appendChild(document.createTextNode("555, Any Blvd"));
header.appendChild(deliverToAddress);
//Create the txtDeliverToPhone element and append
//it to the header element
Element txtDeliverToPhone = (Element) document.createElement("txtDeliverToPhone");
txtDeliverToPhone.appendChild(document.createTextNode("(555) 555-9098"));
header.appendChild(txtDeliverToPhone);
//Create the txtDeliverToFax element and append
//it to the header element
Element txtDeliverToFax = (Element) document.createElement("txtDeliverToFax");
txtDeliverToFax.appendChild(document.createTextNode("(555) 555-9000"));
header.appendChild(txtDeliverToFax);
//Create the txtDeliverToContactName element and
//append it to the header element
Element txtDeliverToContactName = (Element) document.createElement("txtDeliverToContactName");
txtDeliverToContactName.appendChild(document.createTextNode("Jerry Johnson"));
header.appendChild(txtDeliverToContactName);
//Create the detail element and append it to the root
Element detail = (Element) document.createElement("detail");
root.appendChild(detail);
//Create the txtPartNum element and append it to the
//detail element
Element txtPartNum = (Element) document.createElement("txtPartNum");
txtPartNum.appendChild(document.createTextNode("00010-100"));
detail.appendChild(txtPartNum);
//Create the txtDescription element and append it
//to the detail element
Element txtDescription = (Element) document.createElement("txtDescription");
txtDescription.appendChild(document.createTextNode("Monitor"));
detail.appendChild(txtDescription);
//Create the numQty element and append it to
//the detail element
Element numQty = (Element) document.createElement("numQty");
numQty.appendChild(document.createTextNode("1"));
detail.appendChild(numQty);
//Create the numUnitPrice element and append it
//to the detail element
Element numUnitPrice = (Element) document.createElement("numUnitPrice");
numUnitPrice.appendChild(document.createTextNode("350.00"));
detail.appendChild(numUnitPrice);
//Create another detail element named detail2 and
//append it to root
Element detail2 = (Element) document.createElement("detail");
root.appendChild(detail2);
//Create the txtPartNum element and append it to the
//detail2 element
Element txtPartNum2 = (Element) document.createElement("txtPartNum");
txtPartNum2.appendChild(document.createTextNode("00010-200"));
detail2.appendChild(txtPartNum2);
//Create the txtDescription element and append it
//to the detail2 element
Element txtDescription2 = (Element) document.createElement("txtDescription");
txtDescription2.appendChild(document.createTextNode("Desk lamps"));
detail2.appendChild(txtDescription2);
//Create the numQty element and append it to the
//detail2 element
Element numQty2 = (Element) document.createElement("numQty");
numQty2.appendChild(document.createTextNode("3"));
detail2.appendChild(numQty2);
//Create the NUMUNITPRICE element
Element numUnitPrice2 = (Element) document.createElement("numUnitPrice");
numUnitPrice2.appendChild(document.createTextNode("55.00"));
detail2.appendChild(numUnitPrice2);
}
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 Document convertDataSource(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;
}
//Render the purchase order form using the specified
//com.adobe.idp.Document object
private void renderPOForm(HttpServletResponse resp, Document formData) {
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, ServiceC
lientFactoryProperties.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/PO.xdp";
//Cache the form
PDFFormRenderSpec pdfFormRenderSpec = new PDFFormRenderSpec();
pdfFormRenderSpec.setCacheEnabled(new Boolean(true));
//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");
//Invoke the renderForm method
FormsResult formOut = formsClient.renderPDFForm(
formName, //formQuery
formData, //inDataDoc
pdfFormRenderSpec, //PDFFormRenderSpec
uriValues, //urlSpec
null //attachments
);
//Create a ServletOutputStream object
ServletOutputStream oOutput = resp.getOutputStream();
//Create a Document object that stores form data
Document myData = formOut.getOutputContent();
//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를 사용하여 계산 스크립트가 포함된 양식 처리 :headding-anchor:quick-start-soap-mode-handling-a-form-containing-a-calculation-script-using-the-java-api
다음 코드 예제에서는 계산 스크립트가 포함된 양식을 처리하고 결과를 클라이언트 웹 브라우저에 다시 작성합니다. (양식 데이터 계산을 참조하십시오.)
/*
* 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 CalculateData 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);
//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&CONTENT_TYPE=application/vnd.adobe.xdp+xml","",processSpec);
//Get the processing state
short processState = formOut.getAction();
//Determine if the form data is calculated
if (processState == 1)
{
//Write the data back to the client web browser
ServletOutputStream oOutput = resp.getOutputStream();
Document calData = formOut.getOutputContent();
//Create an InputStream object
InputStream inputStream = calData.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를 사용하여 성능 최적화 :headding-anchor:quick-start-soap-mode-optimizing-performance-using-the-java-api
다음 코드 예제에서는 캐싱, 독립 실행형 및 선형 옵션을 설정하여 성능을 최적화합니다. 선형화된 파일은 웹에서 게재하도록 최적화됩니다. (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 RenderFormsPerformance 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 renderForm method
String formName = "Applications/FormsApplication/1.0/FormsFolder/Loan.xdp";
byte[] cData = "".getBytes();
Document oInputData = new Document(cData);
//Set performance run-time options
PDFFormRenderSpec renderSpec = new PDFFormRenderSpec();
renderSpec.setCacheEnabled(new Boolean(true));
renderSpec.setLinearizedPDF(true);
//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]'/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
renderSpec, //PDFFormRenderSpec
uriValues, //urlSpec
null //attachments
);
//Create a ServletOutputStream object
ServletOutputStream oOutput = resp.getOutputStream();
//Create a Document object that stores form data
Document myData = formOut.getOutputContent();
//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를 사용하여 값별 렌더링 :headding-anchor:quick-start-soap-mode-rendering-by-value-using-the-java-api
다음 Java™ 빠른 시작은 값별로 Loan.xdp 이라는 양식 디자인을 기반으로 하는 대화형 PDF 양식을 렌더링합니다. 양식 디자인은 이름이 inputXDP 인 com.adobe.idp.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.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 RenderByValue 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);
//Retrieve the form design
FileInputStream fileInputStream = new FileInputStream("C:\\Adobe\Loan.xdp");
Document inputXDP = new Document(fileInputStream);
//Specify URI values that are required to render a form
URLSpec uriValues = new URLSpec();
uriValues.setApplicationWebRoot("https://'[server]:[port]'/FormsQS");
uriValues.setTargetURL("https://'[server]:[port]'/FormsQS/HandleData");
//Invoke the renderPDFForm method and pass the
//form design by value
FormsResult formOut = formsClient.renderPDFForm(
"", //formQuery
inputXDP, //inDataDoc
new 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) {
e.printStackTrace();
}
}
}
빠른 시작(SOAP 모드): Java™ API를 사용하여 Forms 서비스에 문서 전달 :headding-anchor:quick-start-soap-mode-passing-documents-to-the-forms-service-using-the-java-api
다음 Java™ 빠른 시작은 콘텐츠 서비스에서 Loan.xdp 파일을 검색합니다(더 이상 사용되지 않음). 이 XDP 파일은 /Company Home/Form Designs
공간에 있습니다. XDP 파일이 com.adobe.idp.Document
인스턴스에 반환됩니다. com.adobe.idp.Document
인스턴스가 Forms 서비스로 전달됩니다. 대화형 양식은 클라이언트 웹 브라우저에 작성됩니다. (Forms 서비스에 문서 전달을 참조하십시오.)
/*
* This Java Quick Start uses the following JAR files
* 1. adobe-forms-client.jar
* 2. adobe-contentservices-client.jar
* 3. adobe-livecycle-client.jar
* 4. adobe-usermanager-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.ServletOutputStream;
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.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 RenderFormsFromContentServices 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);
//Create an empty Document that represents form data
byte[] cData = "".getBytes();
Document oInputData = new Document(cData);
//Get the form design from Content Services (deprecated)
Document formDesign = GetFormDesign(myFactory);
//Cache the PDF form
PDFFormRenderSpec pdfFormRenderSpec = new PDFFormRenderSpec();
pdfFormRenderSpec.setCacheEnabled(new Boolean(true));
//Invoke the renderPDFForm2 and pass to the
//Document that contains the form design
FormsResult formOut = formsClient.renderPDFForm2(
formDesign,
oInputData,
pdfFormRenderSpec,
null,
null
);
//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) {
e.printStackTrace();
}
}
//Retrieve the form design from Content Services (deprecated)
private Document GetFormDesign(ServiceClientFactory myFactory)
{
try{
//Create a DocumentManagementServiceClientImpl object
DocumentManagementServiceClientImpl docManager = new DocumentManagementServiceClientImpl(myFactory);
//Specify the name of the store and the content to retrieve
String storeName = "SpacesStore";
String nodeName = "/Company Home/Form Designs/Loan.xdp";
//Retrieve /Company Home/Form Designs/Loan.xdp
CRCResult content = docManager.retrieveContent(
storeName,
nodeName,
"");
//Return the Document instance
Document doc =content.getDocument();
return doc;
}
catch(Exception e)
{
e.printStackTrace();
}
return null;
}
}