本檔案中的範例和範例僅適用於JEE環境上的AEM Forms 。
Forms服務可以轉譯以您使用Designer建立的片段為基礎的表單。 A 片段 是可重複使用的表單部分,並另存為可插入多個表單設計的個別XDP檔案。 例如,片段可以包含位址區塊或合法文字。
使用片段可簡化並加速大量表單的建立與維護。 建立表單時,插入所需片段的參考,片段就會顯示在表單中。 片段參考包含指向實體XDP檔案的子表單。 如需有關根據片段建立表單設計的資訊,請參閱 Forms Designer
片段可以包含數個包在選擇子表單集中的子表單。 選擇子表單集根據資料連線的資料流程控制子表單的顯示。 您可以使用條件陳述式來決定集合中哪個子表單會出現在傳遞的表單中。 例如,集合中的每個子表單可以包含特定地理位置的資訊,而顯示的子表單可以根據使用者的位置來決定。
A 指令碼片段 包含可重複使用的JavaScript函式或值,這些函式或值是與任何特定物件(例如日期剖析器或Web服務引動)分開儲存。 這些片段包含單一指令碼物件,會在「階層」浮動視窗中顯示為變數的子項。 無法從其他物件的屬性指令碼(例如驗證、計算或初始化等事件指令碼)建立片段。
使用片段的優點如下:
您可以組合表單設計,以根據多個片段傳遞至Forms服務。 若要組裝多個片段,請使用Assembler服務。 若要檢視使用組合服務建立其他Forms服務(Output服務)使用的表單設計的範例,請參閱 使用片段建立PDF檔案. 您可以使用Forms服務執行相同的工作流程,而不使用輸出服務。
使用Assembler服務時,您傳遞的是使用片段組裝的表單設計。 已建立的表單設計未參考其他片段。 相較之下,本主題將討論傳送參照其他片段至Forms服務的表單設計。 不過,組合器並未組裝表單設計。 已在Designer中建立。
如需Forms服務的詳細資訊,請參閱 AEM Forms服務參考.
如需有關建立可依據片段轉譯表單的網頁型應用程式的資訊,請參閱 建立轉譯Forms的網頁應用程式.
若要根據片段轉譯表單,請執行以下工作:
包含專案檔案
將必要的檔案納入您的開發專案中。 如果您使用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服務轉譯表單時,會傳回您必須寫入使用者端網頁瀏覽器的表單資料流。 寫入使用者端網頁瀏覽器時,使用者可看見表單。
另請參閱
使用Forms API (Java)根據片段轉譯表單:
包含專案檔案
在您的Java專案的類別路徑中包含使用者端JAR檔案,例如adobe-forms-client.jar。
建立Forms使用者端API物件
ServiceClientFactory
包含連線屬性的物件。FormsServiceClient
物件,使用它的建構函式並傳遞 ServiceClientFactory
物件。指定URI值
URLSpec
物件,使用它的建構函式儲存URI值。URLSpec
物件的 setApplicationWebRoot
方法,並傳遞代表應用程式網頁根目錄的字串值。URLSpec
物件的 setContentRootURI
方法並傳遞字串值,該值會指定內容根URI值。 確認表單設計和片段位於內容根URI中。 否則,Forms服務會擲回例外狀況。 若要參考存放庫,請指定 repository://
.URLSpec
物件的 setTargetURL
方法並傳遞字串值,該值會指定將表單資料發佈到的目標URL值。 如果您在表單設計中定義目標URL,您可以傳遞空字串。 您也可以指定傳送表單以執行計算的URL。演算表單
叫用 FormsServiceClient
物件的 renderPDFForm
方法並傳遞下列值:
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
包含必須寫入使用者端Web瀏覽器的表單資料流的物件。
將表單資料流寫入使用者端網頁瀏覽器
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根據片段呈現表單
使用Forms API (Web服務)根據片段轉譯表單:
包含專案檔案
建立Forms使用者端API物件
建立 FormsService
物件並設定驗證值。
指定URI值
URLSpec
使用建構函式儲存URI值的物件。URLSpec
物件的 setApplicationWebRoot
方法,並傳遞代表應用程式網頁根目錄的字串值。URLSpec
物件的 setContentRootURI
方法並傳遞字串值,該值會指定內容根URI值。 確認表單設計位於內容根URI中。 否則,Forms服務會擲回例外狀況。 若要參考存放庫,請指定 repository://
.URLSpec
物件的 setTargetURL
方法並傳遞字串值,該值會指定將表單資料發佈到的目標URL值。 如果您在表單設計中定義目標URL,您可以傳遞空字串。 您也可以指定傳送表單以執行計算的URL。演算表單
叫用 FormsService
物件的 renderPDFForm
方法並傳遞下列值:
Applications/FormsApplication/1.0/FormsFolder/Loan.xdp
.BLOB
包含要與表單合併之資料的物件。 如果您不想合併資料,請傳遞 null
.PDFFormRenderSpec
儲存執行階段選項的物件。 如果輸入檔案是PDF檔案,則無法設定標籤的PDF選項。 如果輸入檔案是XDP檔案,則可以設定標籤的PDF選項。URLSpec
包含Forms服務所需URI值的物件。java.util.HashMap
儲存檔案附件的物件。 此為選用引數,您可以指定 null
如果您不想將檔案附加至表單。com.adobe.idp.services.holders.BLOBHolder
由方法填入的物件。 此引數用於儲存演算後的表單。javax.xml.rpc.holders.LongHolder
由方法填入的物件。 此引數會儲存表單中的頁數。javax.xml.rpc.holders.StringHolder
由方法填入的物件。 此引數將會儲存地區設定值。com.adobe.idp.services.holders.FormsResultHolder
將包含此作業結果的物件。此 renderPDFForm
方法填入 com.adobe.idp.services.holders.FormsResultHolder
以表單資料流傳遞作為最後一個引數值的物件,必須寫入使用者端Web瀏覽器。
將表單資料流寫入使用者端網頁瀏覽器
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
方法。另請參閱