步驟摘要

若要根據片段轉譯表單,請執行以下工作:

  1. 包含專案檔案。
  2. 建立Forms使用者端API物件。
  3. 指定URI值。
  4. 演算表單。
  5. 將表單資料流寫入使用者端網頁瀏覽器。

包含專案檔

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

建立Forms使用者端API物件

您必須先建立Forms服務使用者端,才能以程式設計方式執行Forms服務使用者端API作業。

指定URI值

若要成功根據片段轉譯表單,您必須確保Forms服務同時找到表單和表單設計參考的片段(XDP檔案)。 例如,假設表單名為PO.xdp,此表單使用名為FooterUS.xdp和FooterCanada.xdp的兩個片段。 在這種情況下,Forms服務必須能夠找到所有三個XDP檔案。

您可以將表單放在某個位置,並將片段放在另一個位置,以組織表單及其片段,或將所有XDP檔案放在同一個位置。 就本節而言,假設所有XDP檔案都在AEM Forms存放庫中。 如需有關將XDP檔案放入AEM Forms存放庫的資訊,請參閱寫入資源

根據片段呈現表單時,您必須僅參考表單本身,而非片段。 例如,您必須參考PO.xdp,而非FooterUS.xdp或FooterCanada.xdp。 請確定您將片段放置在Forms服務可找到它們的位置。

轉譯表單

以片段為基礎的表單能以與非片段表單相同的方式轉譯。 也就是說,您可以將表單轉譯為PDF、HTML或表單參考線(已棄用)。 本節中的範例將以片段為基礎的表單轉譯為互動式PDF表單。 (請參閱呈現互動式PDF forms。)

將表單資料流寫入使用者端網頁瀏覽器

Forms服務轉譯表單時,會傳回您必須寫入使用者端網頁瀏覽器的表單資料流。 寫入使用者端網頁瀏覽器時,使用者可看見表單。

另請參閱

使用Java API根據片段轉譯表單

使用網站服務API根據片段轉譯表單

包含AEM Forms Java程式庫檔案

設定連線屬性

Forms服務API快速入門

呈現互動式PDF forms

建立轉譯Forms的網頁應用程式

使用Java API根據片段轉譯表單

使用Forms API (Java)根據片段轉譯表單:

  1. 包含專案檔案

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

  2. 建立Forms使用者端API物件

    • 建立包含連線屬性的ServiceClientFactory物件。
    • 使用它的建構函式並傳遞ServiceClientFactory物件來建立FormsServiceClient物件。
  3. 指定URI值

    • 使用它的建構函式建立儲存URI值的URLSpec物件。
    • 叫用URLSpec物件的setApplicationWebRoot方法,並傳遞代表應用程式網頁根目錄的字串值。
    • 叫用URLSpec物件的setContentRootURI方法,並傳遞指定內容根URI值的字串值。 確認表單設計和片段位於內容根URI中。 否則,Forms服務會擲回例外狀況。 若要參考存放庫,請指定repository://
    • 叫用URLSpec物件的setTargetURL方法,並傳遞字串值,該值指定要將表單資料張貼到的目標URL值。 如果您在表單設計中定義目標URL,您可以傳遞空字串。 您也可以指定傳送表單以執行計算的URL。
  4. 演算表單

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

    • 字串值,指定表單設計名稱,包括副檔名。 如果您參照的表單設計屬於Forms應用程式的一部分,請確定您指定完整路徑,例如Applications/FormsApplication/1.0/FormsFolder/Loan.xdp
    • 包含要與表單合併之資料的com.adobe.idp.Document物件。 如果您不想合併資料,請傳遞空的com.adobe.idp.Document物件。
    • 儲存執行階段選項的PDFFormRenderSpec物件。
    • URLSpec物件包含Forms服務根據片段轉譯表單所需的URI值。
    • 儲存檔案附件的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方法。