在使用者端轉譯Forms rendering-forms-at-the-client

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

在使用者端轉譯Forms rendering-forms-at-the-client-inner

您可以最佳化PDF內容的傳送,並使用Forms或Adobe Reader的使用者端轉譯功能,改善Acrobat服務處理網路負載的能力。 此過程稱為在使用者端呈現表單。 若要在使用者端轉譯表單,使用者端裝置(通常為網頁瀏覽器)必須使用Acrobat 7.0或Adobe Reader 7.0或更新版本。

伺服器端指令碼執行導致的表單變更,不會反映在使用者端轉譯的表單中,除非根子表單包含 restoreState 屬性已設為 auto. 如需有關這個屬性的詳細資訊,請參閱 Forms Designer.

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

步驟摘要 summary-of-steps

若要在使用者端轉譯表單,請執行下列工作:

  1. 包含專案檔案。
  2. 建立Forms使用者端API物件。
  3. 設定使用者端演算執行階段選項。
  4. 在使用者端轉譯表單。
  5. 將表單寫入使用者端網頁瀏覽器。

包含專案檔案

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

建立Forms使用者端API物件

您必須先建立Forms服務使用者端,才能以程式設計方式執行Forms服務使用者端API作業。 如果您使用Java API,請建立 FormsServiceClient 物件。 如果您使用Forms Web服務API,請建立 FormsService 物件。

設定使用者端演算執行階段選項

設定使用者端轉譯執行階段選項,透過設定 RenderAtClient 執行階段選項至 true. 這會導致表單傳送至產生表單的使用者端裝置。 如果 RenderAtClientauto (預設值),表單設計會決定是否在使用者端轉譯表單。 表單設計必須是具有可流動配置的表單設計。

您可以設定的選擇性執行階段選項為 SeedPDF 選項。 此 SeedPDF 選項會將PDF容器(種子PDF檔案)與表單設計和XML資料相結合。 表單設計和XML資料都會傳送到Acrobat或Adobe Reader,表單會在該處呈現。 此 SeedPDF 當使用者端電腦沒有表單中使用的字型時,例如當一般使用者未授權使用表單擁有者授權使用的字型時,可以使用選項。

您可以使用Designer建立簡單的動態PDF檔案,以作為種子PDF檔案。 若要執行此工作,必須執行下列步驟:

  1. 決定是否需要在種子PDF檔案中嵌入任何字型。 種子PDF檔案必須包含正在呈現的表單所需的其他字型。 將字型嵌入種子PDF檔案時,請確定您沒有違反任何字型授權合約。 在Designer中,您可以決定您是否可合法嵌入字型。 儲存後,如果表單中有無法嵌入的字型,Designer會顯示一則訊息,列出無法嵌入的字型。 靜態PDF檔案的設計工具中不會顯示此訊息。
  2. 如果您是在Designer中建立種子PDF檔案,建議您至少新增包含訊息的文字欄位。 應該將訊息導向舊版Adobe Reader的使用者,告知他們需要Acrobat 7.0 (含)以上版本或Adobe Reader 7.0 (含)以上版本才能檢視檔案。
  3. 將種子PDF檔案另存為動態PDF檔案,並以PDF檔案的副檔名命名。
NOTE
您不需要定義種子PDF執行階段選項就能在使用者端上轉譯表單。 如果您未指定種子PDF,Forms服務會建立殼層pdf,其中不會包含COS物件,但會包含內嵌實際XDP內容的PDF包裝函式。 本節中的步驟不會設定種子PDF執行階段選項。 如需COS物件的相關資訊,請參閱《Adobe PDF參考指南》。

在使用者端轉譯表單

若要在使用者端轉譯表單,您必須確定使用者端轉譯執行階段選項已包含在要轉譯表單的應用程式邏輯中。

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

Forms服務會建立您必須寫入使用者端網頁瀏覽器的表單資料流。 寫入使用者端網頁瀏覽器時,表單會由Acrobat 7.0或Adobe Reader 7.0或更新版本轉譯,且使用者可看到。

另請參閱

使用Java API在使用者端轉譯表單

使用網站服務API在使用者端轉譯表單

包含AEM Forms Java程式庫檔案

設定連線屬性

Forms服務API快速入門

將檔案傳遞至Forms服務

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

使用Java API在使用者端轉譯表單 render-a-form-at-the-client-using-the-java-api

使用Forms API (Java)在使用者端轉譯表單:

  1. 包含專案檔案

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

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

    • 建立 ServiceClientFactory 包含連線屬性的物件。
    • 建立 FormsServiceClient 物件,使用它的建構函式並傳遞 ServiceClientFactory 物件。
  3. 設定使用者端演算執行階段選項

    • 建立 PDFFormRenderSpec 物件(使用其建構函式)。
    • 設定 RenderAtClient 執行階段選項,透過叫用 PDFFormRenderSpec 物件的 setRenderAtClient 方法和傳遞列舉值 RenderAtClient.Yes.
  4. 在使用者端轉譯表單

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

    • 字串值,指定表單設計名稱,包括副檔名。 如果您參照的表單設計屬於AEM Forms應用程式的一部分,請務必指定完整路徑,例如 Applications/FormsApplication/1.0/FormsFolder/Loan.xdp.
    • A com.adobe.idp.Document 包含要與表單合併之資料的物件。 如果您不想合併資料,請傳遞空白字元 com.adobe.idp.Document 物件。
    • A PDFFormRenderSpec 物件,儲存在使用者端轉譯表單所需的執行階段選項。
    • A URLSpec 此物件包含Forms服務轉譯表單所需的URI值。
    • A java.util.HashMap 儲存檔案附件的物件。 此為選用引數,您可以指定 null 如果您不想將檔案附加至表單。

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

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

    • 建立 com.adobe.idp.Document 物件(透過叫用 FormsResult 物件 getOutputContent 方法。
    • 取得 com.adobe.idp.Document 物件(透過叫用其 getContentType 方法。
    • 設定 javax.servlet.http.HttpServletResponse 物件的內容型別,透過叫用其 setContentType 方法並傳遞的內容型別 com.adobe.idp.Document 物件。
    • 建立 javax.servlet.ServletOutputStream 用來將表單資料流寫入使用者端網頁瀏覽器的物件,方法是叫用 javax.servlet.http.HttpServletResponse 物件的 getOutputStream 方法。
    • 建立 java.io.InputStream 物件(透過叫用 com.adobe.idp.Document 物件的 getInputStream 方法。
    • 建立位元組陣列,並叫用 InputStream 物件的 read 方法,並將位元組陣列作為引數傳遞。
    • 叫用 javax.servlet.ServletOutputStream 物件的 write 將表單資料流傳送至使用者端web瀏覽器的方法。 將位元組陣列傳遞至 write 方法。

另請參閱

快速入門(SOAP模式):使用Java API在使用者端轉譯表單

包含AEM Forms Java程式庫檔案

設定連線屬性

使用網站服務API在使用者端轉譯表單 render-a-form-at-the-client-using-the-web-service-api

使用Forms API (Web服務)在使用者端轉譯表單:

  1. 包含專案檔案

    • 建立使用Forms服務WSDL的Java Proxy類別。
    • 將Java Proxy類別納入您的類別路徑中。
  2. 建立Forms使用者端API物件

    建立 FormsService 物件並設定驗證值。

  3. 設定使用者端演算執行階段選項

    • 建立 PDFFormRenderSpec 物件(使用其建構函式)。
    • 設定 RenderAtClient 執行階段選項,透過叫用 PDFFormRenderSpec 物件的 setRenderAtClient 方法和傳遞字串值 RenderAtClient.Yes.
  4. 在使用者端轉譯表單

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

    • 字串值,指定表單設計名稱,包括副檔名。 如果您參照的表單設計屬於Forms應用程式的一部分,請務必指定完整路徑,例如 Applications/FormsApplication/1.0/FormsFolder/Loan.xdp.
    • A BLOB 包含要與表單合併之資料的物件。 如果您不想合併資料,請傳遞 null. (請參閱 使用可流程配置預先填入Forms.)
    • A PDFFormRenderSpec 物件,儲存在使用者端轉譯表單所需的執行階段選項。
    • A URLSpec 包含Forms服務所需URI值的物件。
    • A java.util.HashMap 儲存檔案附件的物件。 此為選用引數,您可以指定 null 如果您不想將檔案附加至表單。
    • 空白 com.adobe.idp.services.holders.BLOBHolder 由方法填入的物件。 此引數用於儲存轉譯的PDF表單。
    • 空白 javax.xml.rpc.holders.LongHolder 由方法填入的物件。 (此引數會儲存表單中的頁數)。
    • 空白 javax.xml.rpc.holders.StringHolder 由方法填入的物件。 (此引數將會儲存地區設定值)。
    • 空白 com.adobe.idp.services.holders.FormsResultHolder 將包含此作業結果的物件。

    renderPDFForm 方法填入 com.adobe.idp.services.holders.FormsResultHolder 以表單資料流傳遞作為最後一個引數值的物件,必須寫入使用者端Web瀏覽器。

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

    • 建立 FormResult 物件,方法是取得 com.adobe.idp.services.holders.FormsResultHolder 物件的 value 資料成員。
    • 建立 BLOB 包含表單資料的物件(透過叫用 FormsResult 物件的 getOutputContent 方法。
    • 取得 BLOB 物件(透過叫用其 getContentType 方法。
    • 設定 javax.servlet.http.HttpServletResponse 物件的內容型別,透過叫用其 setContentType 方法並傳遞的內容型別 BLOB 物件。
    • 建立 javax.servlet.ServletOutputStream 用來將表單資料流寫入使用者端網頁瀏覽器的物件,方法是叫用 javax.servlet.http.HttpServletResponse 物件的 getOutputStream 方法。
    • 建立位元組陣列,並透過叫用 BLOB 物件的 getBinaryData 方法。 此任務會指派 FormsResult 物件至位元組陣列。
    • 叫用 javax.servlet.http.HttpServletResponse 物件的 write 將表單資料流傳送至使用者端web瀏覽器的方法。 將位元組陣列傳遞至 write 方法。

另請參閱

在使用者端轉譯Forms

使用Base64編碼叫用AEM Forms

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