步驟摘要

要計算表單資料,請執行以下任務:

  1. 包含專案檔案。
  2. 建立Forms用戶端API物件。
  3. 檢索包含計算指令碼的表單。
  4. 將表單資料流寫回客戶端Web瀏覽器

包含項目檔案

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

建立Forms用戶端API物件

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

檢索包含計算指令碼的表單

您可使用Forms服務用戶端API來建立應用程式邏輯,以處理包含設定為在伺服器上執行之指令碼的表單。 此程式類似於處理提交的表單。 (請參閱 處理已提交的Forms.)

確認已提交表單的相關處理狀態為 1 (Calculate),這表示Forms服務正在對表單資料執行計算操作,且結果必須寫回給使用者。 在此情況下,會自動執行設定為在伺服器上執行的指令碼。

將表單資料流寫回客戶端Web瀏覽器

確認已提交表單的相關處理狀態為之後 1,必須將結果寫回用戶端網頁瀏覽器。 顯示表單時,計算值會出現在適當欄位中。

另請參閱

包含AEM Forms Java程式庫檔案

設定連接屬性

Forms服務API快速入門

轉譯互動式PDF forms

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

使用Java API計算表單資料

使用Forms API(Java)計算表單資料:

  1. 包含項目檔案

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

  2. 建立Forms用戶端API物件

    • 建立 ServiceClientFactory 包含連接屬性的對象。
    • 建立 FormsServiceClient 對象,使用其建構子並傳遞 ServiceClientFactory 物件。
  3. 檢索包含計算指令碼的表單

    • 要檢索包含計算指令碼的表單資料,請建立 com.adobe.idp.Document 對象,使用其建構子並調用 javax.servlet.http.HttpServletResponse 物件 getInputStream 方法。

    • 叫用 FormsServiceClient 物件 processFormSubmission 方法,並傳遞下列值:

      • com.adobe.idp.Document 包含表單資料的物件。
      • 一個字串值,它指定包括所有相關HTTP標題的環境變數。 您必須指定要處理的內容類型,方法是為 CONTENT_TYPE 環境變數。 例如,要處理XML和PDF資料,請為此參數指定以下字串值: CONTENT_TYPE=application/xml&CONTENT_TYPE=application/pdf
      • 指定 HTTP_USER_AGENT 標題值;例如, Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322).
      • A RenderOptionsSpec 儲存運行時選項的對象。

      processFormSubmission 方法傳回 FormsResult 包含表單提交結果的物件。

    • 確認已提交表單的相關處理狀態為 1 叫用 FormsResult 物件 getAction 方法。 如果此方法傳回值 1,則計算已執行,且資料可寫回用戶端網頁瀏覽器。

  4. 將表單資料流寫回客戶端Web瀏覽器

    • 建立 javax.servlet.ServletOutputStream 用於將表單資料流發送到客戶端web瀏覽器的對象。
    • 建立 com.adobe.idp.Document 對象,方法是調用 FormsResult 物件s getOutputContent 方法。
    • 建立 java.io.InputStream 對象,方法是調用 com.adobe.idp.Document 物件 getInputStream 方法。
    • 建立位元組陣列,並叫用 InputStream 物件 read 方法,並將位元組陣列傳遞為引數。
    • 叫用 javax.servlet.ServletOutputStream 物件 write 將表單資料流傳送至用戶端網頁瀏覽器的方法。 將位元組陣列傳遞至 write 方法。

使用網站服務API計算表單資料

使用Forms API(網站服務)計算表單資料:

  1. 包含項目檔案

    • 建立使用Forms服務WSDL的Java代理類。
    • 將Java代理類包含到類路徑中。
  2. 建立Forms用戶端API物件

    建立 FormsService 對象和設定驗證值。

  3. 檢索包含計算指令碼的表單

    • 若要擷取張貼至Java Servlet的表單資料,請建立 BLOB 物件,使用其建構子。

    • 建立 java.io.InputStream 物件,使用 javax.servlet.http.HttpServletResponse 物件 getInputStream 方法。

    • 建立 java.io.ByteArrayOutputStream 對象,使用其建構子並傳遞長度 java.io.InputStream 物件。

    • 複製 java.io.InputStream 物件 java.io.ByteArrayOutputStream 物件。

    • 叫用 java.io.ByteArrayOutputStream 物件 toByteArray 方法。

    • 填入 BLOB 對象 setBinaryData 方法,並將位元組陣列傳遞為引數。

    • 建立 RenderOptionsSpec 物件,使用其建構子。 調用 RenderOptionsSpec 物件 setLocale 方法,並傳遞指定區域設定的字串值。

    • 叫用 FormsServiceClient 物件 processFormSubmission 方法,並傳遞下列值:

      • BLOB 包含表單資料的物件。
      • 指定環境變數的字串值包含所有相關的HTTP標題。 例如,您可以指定下列字串值: HTTP_REFERER=referrer&HTTP_CONNECTION=keep-alive&CONTENT_TYPE=application/xml
      • 指定 HTTP_USER_AGENT 標題值;例如, Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322).
      • A RenderOptionsSpec 儲存運行時選項的對象。 如需詳細資訊,請參閱。
      • 空白 BLOBHolder 由方法填入的物件。
      • 空白 javax.xml.rpc.holders.StringHolder 由方法填入的物件。
      • 空白 BLOBHolder 由方法填入的物件。
      • 空白 BLOBHolder 由方法填入的物件。
      • 空白 javax.xml.rpc.holders.ShortHolder 由方法填入的物件。
      • 空白 MyArrayOf_xsd_anyTypeHolder 由方法填入的物件。 此參數用於儲存隨表單提交的檔案附件。
      • 空白 FormsResultHolder 由方法填入且已提交表單的物件。

      processFormSubmission 方法填入 FormsResultHolder 參數與表單提交結果。 此 processFormSubmission 方法傳回 FormsResult 包含表單提交結果的物件。

    • 確認已提交表單的相關處理狀態為 1 叫用 FormsResult 物件 getAction 方法。 如果此方法傳回值 1,則計算已執行,且資料可寫回用戶端網頁瀏覽器。

  4. 將表單資料流寫回客戶端Web瀏覽器

    • 建立 javax.servlet.ServletOutputStream 用於將表單資料流發送到客戶端web瀏覽器的對象。
    • 建立 BLOB 包含表單資料的物件,方法是叫用 FormsResult 物件 getOutputContent 方法。
    • 建立位元組陣列,並叫用 BLOB 物件 getBinaryData 方法。 此任務分配 FormsResult 位元組陣列的物件。
    • 叫用 javax.servlet.http.HttpServletResponse 物件 write 將表單資料流傳送至用戶端網頁瀏覽器的方法。 將位元組陣列傳遞至 write 方法。