將檔案傳遞至Forms服務

本檔案中的範例和範例僅適用於JEE環境上的AEM Forms。

AEM Forms服務會將互動式PDF forms轉譯給用戶端裝置(通常是網頁瀏覽器),以收集使用者的資訊。 互動式PDF表單以表單設計為基礎,通常會儲存為XDP檔案,並在Designer中建立。 自AEM Forms起,您可以將包含表單設計的com.adobe.idp.Document物件傳遞至Forms服務。 然後,Forms服務會轉譯位於com.adobe.idp.Document物件中的表單設計。

com.adobe.idp.Document物件傳遞至Forms服務的好處,是其他服務操作會傳回com.adobe.idp.Document例項。 也就是說,可以從其他服務操作獲取com.adobe.idp.Document實例並呈現它。 例如,假設XDP檔案儲存在名為/Company Home/Form Designs的內容服務(已廢止)節點中,如下圖所示。

您可以以程式設計方式從內容服務(已淘汰)擷取Loan.xdp(已淘汰),並將XDP檔案傳遞至com.adobe.idp.Document物件內的Forms服務。

注意

如需Forms服務的詳細資訊,請參閱AEM Forms的服務參考

步驟的摘要

若要將從內容服務取得的檔案(已過時)(已過時)傳遞至Forms服務,請執行下列工作:

  1. 包含專案檔案。
  2. 建立Forms和Document Management用戶端API物件。
  3. 從內容服務擷取表單設計(已淘汰)。
  4. 轉譯互動式PDF表單。
  5. 對表單資料流執行動作。

包含項目檔案

在您的開發專案中加入必要的檔案。 如果您是使用Java建立客戶端應用程式,請包括必要的JAR檔案。 如果您使用Web服務,請包含代理檔案。

建立Forms和Document Management用戶端API物件

在以程式設計方式執行Forms服務API操作之前,請先建立Forms用戶端API物件。 此外,由於此工作流程會從內容服務擷取XDP檔案(已淘汰),因此請建立檔案管理API物件。

從內容服務擷取表單設計(已淘汰)

使用Java或Web服務API從「內容服務」擷取XDP檔案(已淘汰)。 在com.adobe.idp.Document實例(或BLOB實例(如果您使用Web服務)中返回XDP檔案。 然後,您可以將com.adobe.idp.Document例項傳遞至Forms服務。

轉譯互動式PDF表單

若要轉譯互動式表單,請將從內容服務(已過時)傳回的com.adobe.idp.Document例項傳遞至Forms服務。

注意

您可以將包含表單設計的com.adobe.idp.Document傳遞至Forms服務。 名為renderPDFForm2renderHTMLForm2的兩種新方法接受包含表單設計的com.adobe.idp.Document對象。

使用表單資料流執行動作

根據客戶端應用程式的類型,您可以將表單寫入客戶端Web瀏覽器,或將表單另存為PDF檔案。 基於Web的應用程式通常會將表單寫入Web瀏覽器。 不過,案頭應用程式通常會將表單儲存為PDF檔案。

另請參閱

包含AEM Forms Java程式庫檔案

設定連接屬性

Forms服務API快速入門

使用Java API將檔案傳遞至Forms服務

使用Forms服務和內容服務(已過時)API(Java)傳遞從內容服務取得的檔案(已過時):

  1. 包含項目檔案

    在您Java專案的類別路徑中包含用戶端JAR檔案,例如adobe-forms-client.jar和adobe-contentservices-client.jar。

  2. 建立Forms和Document Management用戶端API物件

    • 建立包含連接屬性的ServiceClientFactory對象。 (請參閱設定連接屬性。)
    • 使用其建構子並傳遞ServiceClientFactory物件,以建立FormsServiceClient物件。
    • 使用其建構子並傳遞ServiceClientFactory物件,以建立DocumentManagementServiceClientImpl物件。
  3. 從內容服務擷取表單設計(已淘汰)

    調用DocumentManagementServiceClientImpl對象的retrieveContent方法並傳遞以下值:

    • 一個字串值,它指定添加內容的儲存區。 預設儲存為SpacesStore。 此值是必要參數。
    • 一個字串值,它指定要檢索的內容的完全限定路徑(例如/Company Home/Form Designs/Loan.xdp)。 此值是必要參數。
    • 指定版本的字串值。 此值是選用參數,您可以傳遞空白字串。 在此情況下,會擷取最新版本。

    retrieveContent方法返回包含XDP檔案的CRCResult對象。 叫用CRCResult物件的getDocument方法,取得com.adobe.idp.Document例項。

  4. 轉譯互動式PDF表單

    調用FormsServiceClient對象的renderPDFForm2方法並傳遞以下值:

    • com.adobe.idp.Document物件,包含從內容服務擷取的表單設計(已廢止)。
    • com.adobe.idp.Document物件,包含要與表單合併的資料。 如果您不想合併資料,請傳遞空白的com.adobe.idp.Document物件。
    • 儲存運行時選項的PDFFormRenderSpec對象。 此值是可選參數,如果不想指定運行時選項,可以指定null
    • 包含URI值的URLSpec對象。 此值是選用參數,您可以指定null
    • 儲存檔案附件的java.util.HashMap對象。 此值是可選參數,如果不想將檔案附加到表單,則可以指定null

    renderPDFForm方法返回一個FormsResult對象,該對象包含必須寫入客戶端Web瀏覽器的表單資料流。

  5. 使用表單資料流執行動作

    • 調用FormsResult對象s getOutputContent方法,建立com.adobe.idp.Document對象。
    • 調用getContentType方法,獲取com.adobe.idp.Document對象的內容類型。
    • 通過調用setContentType方法並傳遞com.adobe.idp.Document對象的內容類型來設定javax.servlet.http.HttpServletResponse對象的內容類型。
    • 通過調用javax.servlet.http.HttpServletResponse對象的getOutputStream方法,建立用於將表單資料流寫入客戶端Web瀏覽器的javax.servlet.ServletOutputStream對象。
    • 調用com.adobe.idp.Document對象的getInputStream方法,建立java.io.InputStream對象。
    • 叫用InputStream物件的read方法,建立位元組陣列,並填入表單資料流。 將位元組陣列傳遞為引數。
    • 調用javax.servlet.ServletOutputStream對象的write方法,將表單資料流發送到客戶端Web瀏覽器。 將位元組陣列傳遞至write方法。

另請參閱

快速入門(SOAP模式):使用Java API將檔案傳遞至Forms服務

包含AEM Forms Java程式庫檔案

設定連接屬性

使用網站服務API將檔案傳遞至Forms服務

使用Forms服務與內容服務(已過時)API(網站服務),傳遞從內容服務取得的檔案(已過時):

  1. 包含項目檔案

    建立使用MTOM的Microsoft .NET項目。 由於此客戶端應用程式調用了兩個AEM Forms服務,因此請建立兩個服務引用。 為與Forms服務關聯的服務引用使用以下WSDL定義:http://localhost:8080/soap/services/FormsService?WSDL&lc_version=9.0.1

    為與文檔管理服務關聯的服務引用使用以下WSDL定義:http://localhost:8080/soap/services/DocumentManagementService?WSDL&lc_version=9.0.1

    因為BLOB資料類型對兩個服務引用都是通用的,因此在使用BLOB資料類型時,請完全限定該資料類型。 在相應的Web服務快速入門中,所有BLOB實例都完全限定。

    注意

    localhost取代為托管AEM Forms之伺服器的IP位址。

  2. 建立Forms和Document Management用戶端API物件

    • 使用其預設建構子建立FormsServiceClient物件。

    • 使用System.ServiceModel.EndpointAddress建構子建立FormsServiceClient.Endpoint.Address物件。 將指定WSDL的字串值傳遞到AEM Forms服務(例如http://localhost:8080/soap/services/FormsService?WSDL)。 您不需要使用lc_version屬性。 建立服務參考時會使用此屬性。)

    • 獲取FormsServiceClient.Endpoint.Binding欄位的值,建立System.ServiceModel.BasicHttpBinding對象。 將傳回值轉換為BasicHttpBinding

    • System.ServiceModel.BasicHttpBinding物件的MessageEncoding欄位設為WSMessageEncoding.Mtom。 此值可確保使用MTOM。

    • 通過執行以下任務來啟用基本HTTP身份驗證:

      • 將AEM表單使用者名稱指派給欄位FormsServiceClient.ClientCredentials.UserName.UserName
      • 將相應的密碼值分配給欄位FormsServiceClient.ClientCredentials.UserName.Password
      • 將常數值HttpClientCredentialType.Basic指派給欄位BasicHttpBindingSecurity.Transport.ClientCredentialType
    • 將常數值BasicHttpSecurityMode.TransportCredentialOnly指派給欄位BasicHttpBindingSecurity.Security.Mode

    注意

    DocumentManagementServiceClient服務客戶端重複這些步驟。

  3. 從內容服務擷取表單設計(已淘汰)

    叫用DocumentManagementServiceClient物件的retrieveContent方法並傳遞下列值,以擷取內容:

    • 一個字串值,它指定添加內容的儲存區。 預設儲存為SpacesStore。 此值是必要參數。
    • 一個字串值,它指定要檢索的內容的完全限定路徑(例如/Company Home/Form Designs/Loan.xdp)。 此值是必要參數。
    • 指定版本的字串值。 此值是選用參數,您可以傳遞空白字串。 在此情況下,會擷取最新版本。
    • 儲存瀏覽連結值的字串輸出參數。
    • 儲存內容的BLOB輸出參數。 您可以使用此輸出參數來擷取內容。
    • 儲存內容屬性的ServiceReference1.MyMapOf_xsd_string_To_xsd_anyType輸出參數。
    • CRCResult輸出參數。 您可以使用BLOB輸出參數來取得內容,而不使用此物件。
  4. 轉譯互動式PDF表單

    調用FormsServiceClient對象的renderPDFForm2方法並傳遞以下值:

    • BLOB物件,包含從內容服務擷取的表單設計(已廢止)。
    • BLOB物件,包含要與表單合併的資料。 如果您不想合併資料,請傳遞空白的BLOB物件。
    • 儲存運行時選項的PDFFormRenderSpec對象。 此值是可選參數,如果不想指定運行時選項,可以指定null
    • 包含URI值的URLSpec對象。 此值是選用參數,您可以指定null
    • 儲存檔案附件的Map對象。 此值是可選參數,如果不想將檔案附加到表單,則可以指定null
    • 用於儲存頁數的長輸出參數。
    • 用於儲存地區設定值的字串輸出參數。
    • 用於儲存交互PDF表單.FormsResult輸出參數

    renderPDFForm2方法返回包含互動式PDF表單的FormsResult對象。

  5. 使用表單資料流執行動作

    • 通過獲取FormsResult對象的outputContent欄位的值,建立包含表單資料的BLOB對象。
    • 調用System.IO.FileStream對象的建構子以建立對象。 傳遞一個字串值,該字串值表示互動式PDF文檔的檔案位置以及開啟檔案的模式。
    • 建立位元組陣列,用於儲存從FormsResult對象檢索到的BLOB對象的內容。 獲取BLOB對象的MTOM資料成員的值,以填充位元組陣列。
    • 通過調用其建構子並傳遞System.IO.FileStream對象來建立System.IO.BinaryWriter對象。
    • 調用System.IO.BinaryWriter對象的Write方法並傳遞位元組陣列,將位元組陣列的內容寫入PDF檔案。

另請參閱

使用MTOM叫用AEM Forms

本頁內容