使用已提交的XML資料建立PDF文檔 creating-pdf-documents-with-submittedxml-data
使用已提交的XML資料建立PDF文檔 creating-pdf-documents-with-submitted-xml-data
讓使用者能夠填寫互動式表單的網頁型應用程式,需要將資料提交回伺服器。 使用Forms服務,您可以擷取使用者在互動式表單中輸入的表單資料。 然後,您可以將表單資料傳遞至其他AEM Forms服務作業,並使用資料建立PDF檔案。
請考量下列涉及三個AEM Forms服務的工作流程:
- 用戶從基於Web的應用程式向Forms服務提交XML資料。
- Forms服務可用於處理已提交的表單及擷取表單欄位。 可處理表單資料。 例如,可將資料提交到企業資料庫。
- 表單資料會傳送至輸出服務,以建立非互動式PDF檔案。
- 非互動式PDF檔案會儲存在內容服務中(已淘汰)。
下圖提供此工作流程的視覺表示法。
當用戶從客戶端Web瀏覽器提交表單後,非互動式PDF文檔將儲存在內容服務中(已廢止)。 下圖顯示儲存在「內容服務」中的PDF檔案(已過時)。
步驟摘要 summary-of-steps
要使用已提交的XML資料建立非互動式PDF文檔,並將其儲存在Content Services的PDF文檔中(已廢止),請執行以下任務:
- 包含專案檔案。
- 建立Forms、輸出和文檔管理對象。
- 使用Forms服務擷取表單資料。
- 使用輸出服務建立非互動式PDF文檔。
- 使用檔案管理服務將PDF表單儲存在內容服務(已淘汰)。
包含項目檔案
在您的開發專案中加入必要的檔案。 如果要使用Java建立客戶端應用程式,請包括必要的JAR檔案。 如果您使用Web服務,請確定您包含Proxy檔案。
建立Forms、輸出和文檔管理對象
在以程式設計方式執行Forms服務API操作之前,請先建立Forms用戶端API物件。 同樣,由於此工作流調用了輸出和文檔管理服務,因此請同時建立輸出客戶端API對象和文檔管理客戶端API對象。
使用Forms服務擷取表單資料
擷取已提交至Forms服務的表單資料。 您可以處理提交的資料,以符合您的業務需求。 例如,您可以將表單資料儲存在企業資料庫中。 但是,要建立非互動式PDF文檔,表單資料將傳遞到輸出服務。
使用輸出服務建立非互動式PDF文檔。
使用輸出服務建立基於表單設計和XML表單資料的非互動式PDF文檔。 在工作流程中,表單資料會從Forms服務中擷取。
使用檔案管理服務將PDF表單儲存在內容服務(已淘汰)中
使用檔案管理服務API將PDF檔案儲存在內容服務中(已過時)。
另請參閱
使用Java API建立PDF文檔,該文檔包含已提交的XML資料 create-a-pdf-document-with-submitted-xml-data-using-the-java-api
使用Forms、輸出和文檔管理API(Java)建立具有已提交XML資料的PDF文檔:
-
包含項目檔案
在您的Java專案的類別路徑中包含用戶端JAR檔案,例如adobe-forms-client.jar、adobe-output-client.jar和adobe-contentservices-client.jar。
-
建立Forms、輸出和文檔管理對象
- 建立
ServiceClientFactory包含連接屬性的對象。 - 建立
FormsServiceClient對象,使用其建構子並傳遞ServiceClientFactory物件。 - 建立
OutputClient對象,使用其建構子並傳遞ServiceClientFactory物件。 - 建立
DocumentManagementServiceClientImpl對象,使用其建構子並傳遞ServiceClientFactory物件。
- 建立
-
使用Forms服務擷取表單資料
-
叫用
FormsServiceClient物件processFormSubmission方法,並傳遞下列值:- 此
com.adobe.idp.Document包含表單資料的物件。 - 指定環境變數的字串值,包括所有相關的HTTP標題。 指定要處理的內容類型,方法是為
CONTENT_TYPE環境變數。 例如,要處理XML資料,請為此參數指定以下字串值:CONTENT_TYPE=text/xml. - 指定
HTTP_USER_AGENT標題值,例如Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322). - A
RenderOptionsSpec儲存運行時選項的對象。
此
processFormSubmission方法傳回FormsResult包含表單提交結果的物件。 - 此
-
判斷Forms服務是否已借由叫用
FormsResult物件getAction方法。 如果此方法傳回值0,則資料已準備好供處理。 -
透過建立
com.adobe.idp.Document對象,方法是調用FormsResult物件getOutputContent方法。 (此物件包含可傳送至輸出服務的表單資料。) -
建立
java.io.InputStream對象,方法是調用java.io.DataInputStream建構子和傳遞com.adobe.idp.Document物件。 -
建立
org.w3c.dom.DocumentBuilderFactory物件,方法是呼叫靜態org.w3c.dom.DocumentBuilderFactory物件newInstance方法。 -
建立
org.w3c.dom.DocumentBuilder對象,方法是調用org.w3c.dom.DocumentBuilderFactory物件newDocumentBuilder方法。 -
建立
org.w3c.dom.Document對象,方法是調用org.w3c.dom.DocumentBuilder物件parse方法和傳遞java.io.InputStream物件。 -
檢索XML文檔中每個節點的值。 完成此工作的一種方式是建立接受兩個參數的自訂方法:the
org.w3c.dom.Document對象和要檢索其值的節點的名稱。 此方法會傳回代表節點值的字串值。 在此程式後的程式碼範例中,此自訂方法稱為getNodeText. 此方法的內文如所示。
-
-
使用輸出服務建立非互動式PDF文檔。
通過調用
OutputClient物件generatePDFOutput方法並傳遞下列值:- A
TransformationFormat列舉值。 要生成PDF文檔,請指定TransformationFormat.PDF. - 指定表單設計名稱的字串值。 確認表單設計與從Forms服務擷取的表單資料相容。
- 一個字串值,它指定表單設計所在的內容根。
- A
PDFOutputOptionsSpec包含PDF運行時選項的對象。 - A
RenderOptionsSpec包含呈現運行時選項的對象。 - 此
com.adobe.idp.Document包含要與表單設計合併的資料的XML資料源的對象。 請確定此物件是由FormsResult物件getOutputContent方法。 - 此
generatePDFOutput方法傳回OutputResult包含操作結果的對象。 - 通過調用
OutputResult物件getGeneratedDoc方法。 此方法會傳回com.adobe.idp.Document代表非互動式PDF檔案的例項。
- A
-
使用檔案管理服務將PDF表單儲存在內容服務(已淘汰)中
叫用
DocumentManagementServiceClientImpl物件storeContent方法並傳遞下列值:- 一個字串值,它指定添加內容的儲存區。 預設商店為
SpacesStore. 此值是必要參數。 - 一個字串值,它指定添加內容的空間的完全限定路徑(例如,
/Company Home/Test Directory)。 此值是必要參數。 - 代表新內容的節點名稱(例如
MortgageForm.pdf)。 此值是必要參數。 - 指定節點類型的字串值。 若要新增內容(例如PDF檔案),請指定
{https://www.alfresco.org/model/content/1.0}content. 此值是必要參數。 - A
com.adobe.idp.Document代表內容的物件。 此值是必要參數。 - 指定編碼值的字串值(例如
UTF-8)。 此值是必要參數。 - 安
UpdateVersionType指定如何處理版本資訊的枚舉值(例如,UpdateVersionType.INCREMENT_MAJOR_VERSION來增加內容版本。 )此值是必填參數。 - A
java.util.List指定與內容相關的方面的實例。 此值是選用參數,您可以指定null. - A
java.util.Map儲存內容屬性的物件。
此
storeContent方法傳回CRCResult描述內容的物件。 使用CRCResult物件,例如,您可以取得內容的唯一識別碼值。 要執行此任務,請調用CRCResult物件getNodeUuid方法。 - 一個字串值,它指定添加內容的儲存區。 預設商店為
另請參閱