將檔案傳遞至Forms服務 passing-documents-to-the-formsservice

本檔案中的範例和範例僅適用於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的Content Services (已過時)節點中,如下圖所示。

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

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

步驟摘要 summary-of-steps

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

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

包含專案檔

在您的開發專案中包含必要的檔案。 如果您使用Java建立使用者端應用程式,請包含必要的JAR檔案。 如果您使用Web服務,請包含Proxy檔案。

建立Forms和Document Management Client API物件

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

從內容服務擷取表單設計(已棄用)

使用Java或網站服務API從內容服務擷取XDP檔案(已棄用)。 XDP檔案是在com.adobe.idp.Document執行個體中傳回(如果您使用Web服務,則是BLOB執行個體)。 然後您可以將com.adobe.idp.Document執行個體傳遞至Forms服務。

演算互動式PDF表單

若要呈現互動式表單,請將從Content Services (已棄用)傳回的com.adobe.idp.Document執行個體傳遞至Forms服務。

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

使用表單資料流執行動作

根據使用者端應用程式的型別,您可以將表單寫入使用者端網頁瀏覽器,或將表單儲存為PDF檔案。 網頁式應用程式通常會將表單寫入網頁瀏覽器。 不過,案頭應用程式通常會將表單儲存為PDF檔案。

另請參閱

包含AEM Forms Java程式庫檔案

設定連線屬性

Forms服務API快速入門

使用Java API將檔案傳遞至Forms服務 pass-documents-to-the-forms-service-using-the-java-api

使用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方法,並傳遞下列值:

    • 包含從Content Services擷取之表單設計的com.adobe.idp.Document物件(已棄用)。
    • 包含要與表單合併之資料的com.adobe.idp.Document物件。 如果您不想合併資料,請傳遞空的com.adobe.idp.Document物件。
    • 儲存執行階段選項的PDFFormRenderSpec物件。 此值是選用引數,如果您不想指定執行階段選項,可以指定null
    • 包含URI值的URLSpec物件。 此值是選用引數,您可以指定null
    • 儲存檔案附件的java.util.HashMap物件。 此值是選用引數,如果您不想將檔案附加至表單,可以指定null

    renderPDFForm方法傳回FormsResult物件,其中包含必須寫入使用者端網頁瀏覽器的表單資料流。

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

    • 呼叫FormsResult物件的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物件。
    • 呼叫com.adobe.idp.Document物件的getInputStream方法,以建立java.io.InputStream物件。
    • 呼叫InputStream物件的read方法,建立位元組陣列並以表單資料流填入該陣列。 傳遞位元組陣列作為引數。
    • 叫用javax.servlet.ServletOutputStream物件的write方法,將表單資料流傳送至使用者端網頁瀏覽器。 將位元組陣列傳遞至write方法。

另請參閱

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

包含AEM Forms Java程式庫檔案

設定連線屬性

使用網站服務API將檔案傳遞至Forms服務 pass-documents-to-the-forms-service-using-the-web-service-api

使用Forms服務和內容服務(已棄用) API (網頁服務),傳遞從內容服務(已棄用)取得的檔案:

  1. 包含專案檔案

    建立使用MTOM的Microsoft .NET專案。 由於此使用者端應用程式會叫用兩個AEM Forms服務,請建立兩個服務參考。 使用下列WSDL定義作為與Forms服務相關聯的服務參考: http://localhost:8080/soap/services/FormsService?WSDL&lc_version=9.0.1

    使用下列WSDL定義作為與Document Management服務相關聯的服務參考: http://localhost:8080/soap/services/DocumentManagementService?WSDL&lc_version=9.0.1

    因為BLOB資料型別是兩個服務參考的共同型別,使用它時,請完全限定BLOB資料型別。 在對應的Web服務快速入門中,所有BLOB執行個體都是完全合格的。

    note note
    NOTE
    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

    note note
    NOTE
    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方法,並傳遞下列值:

    • 包含從Content Services擷取之表單設計的BLOB物件(已棄用)。
    • 包含要與表單合併之資料的BLOB物件。 如果您不想合併資料,請傳遞空的BLOB物件。
    • 儲存執行階段選項的PDFFormRenderSpec物件。 此值是選用引數,如果您不想指定執行階段選項,可以指定null
    • 包含URI值的URLSpec物件。 此值是選用引數,您可以指定null
    • 儲存檔案附件的Map物件。 此值是選用引數,如果您不想將檔案附加至表單,可以指定null
    • 用來儲存頁數的長輸出引數。
    • 用來儲存地區設定值的字串輸出引數。
    • FormsResult輸出引數,用來儲存互動PDF表單.

    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

recommendation-more-help
19ffd973-7af2-44d0-84b5-d547b0dffee2