將檔案傳遞至Forms服務

AEM Forms服務會將互動式PDF表單轉譯至用戶端裝置(通常是網頁瀏覽器),以收集使用者的資訊。 互動式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的Content Services(已過時)節點中,如下圖所示。

您可以以程式設計方式從Content Services(不建議使用)擷取Loan.xdp,並將XDP檔案傳遞至com.adobe.idp.Document物件內的Forms服務。

注意

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

步驟摘要

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

  1. 包含專案檔案。
  2. 建立表單和檔案管理用戶端API物件。
  3. 從Content Services擷取表單設計(已過時)。
  4. 轉換互動式PDF表單。
  5. 對表單資料流執行動作。

包含專案檔案

在您的開發專案中加入必要的檔案。 如果要使用Java建立客戶端應用程式,請包括必要的JAR檔案。 如果您使用web services,請加入proxy檔案。

建立表單和檔案管理用戶端API物件

在以程式設計方式執行Forms服務API操作之前,請先建立Forms Client API物件。 此外,由於此工作流程會從Content Services擷取XDP檔案(已停用),因此請建立Document Management API物件。

從Content Services擷取表單設計(已過時)

使用Java或web service API從Content Services(已過時)擷取XDP檔案。 在com.adobe.idp.Document實例(或在使用web services時為BLOB實例)中返回XDP檔案。 然後,您可以將com.adobe.idp.Document實例傳遞至Forms服務。

轉換互動式PDF表單

若要轉譯互動式表單,請將從Content Services(不建議使用)傳回的com.adobe.idp.Document例項傳遞至Forms服務。

注意

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

使用表單資料流執行動作

視用戶端應用程式類型而定,您可將表單寫入用戶端網頁瀏覽器,或將表單儲存為PDF檔案。 網頁型應用程式通常會將表單寫入網頁瀏覽器。 不過,案頭應用程式通常會將表單儲存為PDF檔案。

另請參閱

包含AEM Forms Java程式庫檔案

設定連接屬性

Forms Service API快速入門

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

使用Forms服務和Content Services(不建議使用)API(Java)傳遞從Content Services(不建議使用)取得的檔案:

  1. 包含專案檔案

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

  2. 建立表單和檔案管理用戶端API物件

    • 建立包含連接屬性的ServiceClientFactory對象。 (請參閱設定連接屬性。)
    • 使用其建構子並傳遞ServiceClientFactory對象,建立FormsServiceClient對象。
    • 使用其建構子並傳遞ServiceClientFactory對象,建立DocumentManagementServiceClientImpl對象。
  3. 從Content Services擷取表單設計(已過時)

    叫用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物件,包含從Content Services擷取的表單設計(已過時)。
    • 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方法,建立javax.servlet.ServletOutputStream物件,用來將表單資料串流寫入用戶端Web瀏覽器。
    • 調用com.adobe.idp.Document物件的getInputStream方法,以建立java.io.InputStream物件。
    • 建立位元組陣列,並呼叫InputStream物件的read方法,以表單資料流填入。 將位元組陣列作為引數傳遞。
    • 叫用javax.servlet.ServletOutputStream物件的write方法,將表單資料串流傳送至用戶端網頁瀏覽器。 將位元組陣列傳遞到write方法。

另請參閱

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

包含AEM Forms Java程式庫檔案

設定連接屬性

使用web service API將檔案傳遞至Forms Service

使用Forms服務和Content Services(不建議使用)API(web service)傳遞從Content Services(不建議使用)取得的檔案:

  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資料類型時可完全限定<a1/>資料類型。 在相應的Web服務快速啟動中,所有BLOB實例都完全限定。

    注意

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

  2. 建立表單和檔案管理用戶端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. 從Content Services擷取表單設計(已過時)

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

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

    叫用FormsServiceClient物件的renderPDFForm2方法並傳遞下列值:

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

    renderPDFForm2方法會傳回包含互動式PDF表單的FormsResult物件。

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

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

另請參閱

使用MTOM叫用AEM Forms

本頁內容