步驟摘要
若要根據片段轉譯表單,請執行以下工作:
- 包含專案檔案。
- 建立Forms使用者端API物件。
- 指定URI值。
- 演算表單。
- 將表單資料流寫入使用者端網頁瀏覽器。
包含專案檔
將必要的檔案納入您的開發專案中。 如果您使用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根據片段轉譯表單
使用Forms API (Java)根據片段轉譯表單:
-
包含專案檔案
在您的Java專案的類別路徑中包含使用者端JAR檔案,例如adobe-forms-client.jar。
-
建立Forms使用者端API物件
- 建立包含連線屬性的
ServiceClientFactory
物件。 - 使用它的建構函式並傳遞
ServiceClientFactory
物件來建立FormsServiceClient
物件。
- 建立包含連線屬性的
-
指定URI值
- 使用它的建構函式建立儲存URI值的
URLSpec
物件。 - 叫用
URLSpec
物件的setApplicationWebRoot
方法,並傳遞代表應用程式網頁根目錄的字串值。 - 叫用
URLSpec
物件的setContentRootURI
方法,並傳遞指定內容根URI值的字串值。 確認表單設計和片段位於內容根URI中。 否則,Forms服務會擲回例外狀況。 若要參考存放庫,請指定repository://
。 - 叫用
URLSpec
物件的setTargetURL
方法,並傳遞字串值,該值指定要將表單資料張貼到的目標URL值。 如果您在表單設計中定義目標URL,您可以傳遞空字串。 您也可以指定傳送表單以執行計算的URL。
- 使用它的建構函式建立儲存URI值的
-
演算表單
叫用
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
物件,其中包含必須寫入使用者端網頁瀏覽器的表單資料流。 - 字串值,指定表單設計名稱,包括副檔名。 如果您參照的表單設計屬於Forms應用程式的一部分,請確定您指定完整路徑,例如
-
將表單資料流寫入使用者端網頁瀏覽器
- 呼叫
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
方法。
- 呼叫