讓使用者能夠填寫互動式表單的網頁型應用程式,需要將資料提交回伺服器。 使用Forms服務,您可以擷取使用者在互動式表單中輸入的表單資料。 然後,您可以將表單資料傳遞至其他AEM Forms服務操作,並使用資料建立PDF檔案。
閱讀此內容之前,建議您對處理已提交表單有紮實的了解。 處理已提交的Forms中涵蓋表單設計與已提交XML資料之間的關係等概念。
請考量下列涉及三個AEM Forms服務的工作流程:
下圖提供此工作流程的視覺表示法。
使用者從用戶端網頁瀏覽器提交表單後,非互動式PDF檔案會儲存在內容服務中(已過時)。 下圖顯示儲存在「內容服務」中的PDF檔案(已過時)。
要使用已提交的XML資料建立非互動式PDF文檔,並將其儲存在Content Services中的PDF文檔中(已過時),請執行以下任務:
包含項目檔案
在您的開發專案中加入必要的檔案。 如果要使用Java建立客戶端應用程式,請包括必要的JAR檔案。 如果您使用Web服務,請確定您包含Proxy檔案。
建立Forms、輸出和文檔管理對象
在以程式設計方式執行Forms服務API操作之前,請先建立Forms用戶端API物件。 同樣,由於此工作流調用了輸出和文檔管理服務,因此請同時建立輸出客戶端API對象和文檔管理客戶端API對象。
使用Forms服務擷取表單資料
擷取已提交至Forms服務的表單資料。 您可以處理提交的資料,以符合您的業務需求。 例如,您可以將表單資料儲存在企業資料庫中。 不過,若要建立非互動式PDF檔案,表單資料會傳遞至輸出服務。
使用輸出服務建立非互動式PDF文檔。
使用輸出服務建立基於表單設計和XML表單資料的非互動式PDF文檔。 在工作流程中,表單資料會從Forms服務中擷取。
使用檔案管理服務將PDF表單儲存在內容服務(已淘汰)中
使用檔案管理服務API將PDF檔案儲存在內容服務中(已過時)。
另請參閱
使用Forms、輸出和文檔管理API(Java),使用提交的XML資料建立PDF文檔:
包含項目檔案
在您的Java專案的類別路徑中包含用戶端JAR檔案,例如adobe-forms-client.jar、adobe-output-client.jar和adobe-contentservices-client.jar。
建立Forms、輸出和文檔管理對象
ServiceClientFactory
對象。ServiceClientFactory
物件,以建立FormsServiceClient
物件。ServiceClientFactory
物件,以建立OutputClient
物件。ServiceClientFactory
物件,以建立DocumentManagementServiceClientImpl
物件。使用Forms服務擷取表單資料
調用FormsServiceClient
對象的processFormSubmission
方法並傳遞以下值:
com.adobe.idp.Document
物件。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)
)的字串值。RenderOptionsSpec
對象。processFormSubmission
方法會傳回包含表單提交結果的FormsResult
物件。
叫用FormsResult
物件的getAction
方法,判斷Forms服務是否已完成表單資料的處理。 如果此方法返回值0
,則資料已準備好進行處理。
調用FormsResult
對象的getOutputContent
方法,通過建立com.adobe.idp.Document
對象來檢索表單資料。 (此物件包含可傳送至輸出服務的表單資料。)
通過調用java.io.DataInputStream
建構子並傳遞com.adobe.idp.Document
對象來建立java.io.InputStream
對象。
呼叫靜態org.w3c.dom.DocumentBuilderFactory
物件的newInstance
方法,建立org.w3c.dom.DocumentBuilderFactory
物件。
調用org.w3c.dom.DocumentBuilderFactory
對象的newDocumentBuilder
方法,建立org.w3c.dom.DocumentBuilder
對象。
調用org.w3c.dom.DocumentBuilder
對象的parse
方法並傳遞java.io.InputStream
對象,建立org.w3c.dom.Document
對象。
檢索XML文檔中每個節點的值。 完成此工作的一種方式是建立接受兩個參數的自訂方法:org.w3c.dom.Document
對象以及要檢索其值的節點的名稱。 此方法會傳回代表節點值的字串值。 在此程式後的程式碼範例中,此自訂方法稱為getNodeText
。 此方法的內文如所示。
使用輸出服務建立非互動式PDF文檔。
叫用OutputClient
物件的generatePDFOutput
方法並傳遞下列值,以建立PDF檔案:
TransformationFormat
枚舉值。 要生成PDF文檔,請指定TransformationFormat.PDF
。PDFOutputOptionsSpec
對象。RenderOptionsSpec
對象。com.adobe.idp.Document
對象,該對象包含要與表單設計合併的資料的XML資料源。 確保此對象由FormsResult
對象的getOutputContent
方法返回。generatePDFOutput
方法返回包含操作結果的OutputResult
對象。OutputResult
對象的getGeneratedDoc
方法,檢索非互動式PDF文檔。 此方法會傳回代表非互動式PDF檔案的com.adobe.idp.Document
例項。使用檔案管理服務將PDF表單儲存在內容服務(已淘汰)中
叫用DocumentManagementServiceClientImpl
物件的storeContent
方法並傳遞下列值,以新增內容:
SpacesStore
。 此值是必要參數。/Company Home/Test Directory
)。 此值是必要參數。MortgageForm.pdf
)。 此值是必要參數。{https://www.alfresco.org/model/content/1.0}content
。 此值是必要參數。com.adobe.idp.Document
物件。 此值是必要參數。UTF-8
)。 此值是必要參數。UpdateVersionType
列舉值,指定如何處理版本資訊(例如UpdateVersionType.INCREMENT_MAJOR_VERSION
)以增加內容版本。 )此值是必填參數。java.util.List
實例,它指定與內容相關的方面。 此值是選用參數,您可以指定null
。java.util.Map
物件。storeContent
方法返回描述內容的CRCResult
對象。 例如,使用CRCResult
物件,您可以取得內容的唯一識別碼值。 要執行此任務,請調用CRCResult
對象的getNodeUuid
方法。
另請參閱