Forms服務可呈現以您使用Designer建立之片段為基礎的表單。 fragment是表單的可重複使用部分,並儲存為可插入到多個表單設計中的獨立XDP檔案。 例如,片段可以包含地址塊或法律文字。
使用片段可簡化及加速大量表單的建立與維護作業。 建立新表單時,您會插入對所需片段的參考,片段會出現在表單中。 片段參考包含指向物理XDP檔案的子表單。 如需根據片段建立表單設計的相關資訊,請參閱Forms Designer
片段可以包括包裝在選擇子表單集中的多個子表單。 選擇子表單集基於來自資料連接的資料流控制子表單的顯示。 您可以使用條件陳述式來判斷傳送的表單中,會出現集內的子表單。 例如,集合中的每個子表單可以包括特定地理位置的資訊,並且可以根據用戶的位置確定顯示的子表單。
指令碼片段包含可重複使用的JavaScript函式或值,這些函式或值與任何特定對象(如日期解析器或Web服務調用)分開儲存。 這些片段包含單一指令碼物件,在階層浮動視窗中顯示為變數的子項。 無法從屬於其他物件屬性的指令碼建立片段,例如驗證、計算或初始化等事件指令碼。
以下是使用片段的優點:
您可以根據多個片段組合表單設計以傳遞至Forms服務。 要組合多個片段,請使用組合器服務。 若要查看使用組合服務建立其他Forms服務(輸出服務)所使用的表單設計的範例,請參閱使用片段建立PDF檔案。 您可以使用Forms服務來執行相同的工作流程,而不使用輸出服務。
使用組合器服務時,您正在傳遞使用片段組合的表單設計。 建立的表單設計不會參考其他片段。 相反地,本主題探討如何將參考其他片段的表單設計傳遞至Forms服務。 但是,表單設計不是由組合器裝配的。 是在Designer中建立的。
如需Forms服務的詳細資訊,請參閱AEM Forms的服務參考。
有關建立基於Web的應用程式以根據片段呈現表單的資訊,請參閱建立使Forms呈現的Web應用程式。
若要根據片段轉譯表單,請執行下列工作:
包含項目檔案
在您的開發專案中加入必要的檔案。 如果要使用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。)
將表單資料流寫入客戶端Web瀏覽器
Forms服務轉譯表單時,會傳回您必須寫入用戶端網頁瀏覽器的表單資料流。 寫入客戶端Web瀏覽器時,用戶可以看到該表單。
另請參閱
使用Forms API(Java)根據片段轉譯表單:
包含項目檔案
在Java專案的類別路徑中加入用戶端JAR檔案,例如adobe-forms-client.jar。
建立Forms用戶端API物件
ServiceClientFactory
對象。ServiceClientFactory
物件,以建立FormsServiceClient
物件。指定URI值
URLSpec
對象,該對象使用其建構子儲存URI值。URLSpec
物件的setApplicationWebRoot
方法,並傳遞代表應用程式Web根的字串值。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瀏覽器的表單資料流。
將表單資料流寫入客戶端Web瀏覽器
FormsResult
對象s getOutputContent
方法,建立com.adobe.idp.Document
對象。getContentType
方法,獲取com.adobe.idp.Document
對象的內容類型。setContentType
方法並傳遞com.adobe.idp.Document
對象的內容類型來設定javax.servlet.http.HttpServletResponse
對象的內容類型。javax.servlet.http.HttpServletResponse
對象的getOutputStream
方法,建立用於將表單資料流寫入客戶端Web瀏覽器的javax.servlet.ServletOutputStream
對象。com.adobe.idp.Document
對象的getInputStream
方法,建立java.io.InputStream
對象。InputStream
物件的read
方法並將位元組陣列傳遞為引數,以填入表單資料流的位元組陣列。javax.servlet.ServletOutputStream
對象的write
方法,將表單資料流發送到客戶端Web瀏覽器。 將位元組陣列傳遞至write
方法。另請參閱
快速入門(SOAP模式):使用Java API根據片段轉譯表單
使用Forms API(網站服務)根據片段轉譯表單:
包含項目檔案
建立Forms用戶端API物件
建立FormsService
物件並設定驗證值。
指定URI值
URLSpec
物件,以儲存URI值。URLSpec
物件的setApplicationWebRoot
方法,並傳遞代表應用程式Web根的字串值。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瀏覽器
com.adobe.idp.services.holders.FormsResultHolder
對象的value
資料成員的值,以建立FormResult
對象。FormsResult
對象的getOutputContent
方法,建立包含表單資料的BLOB
對象。getContentType
方法,獲取BLOB
對象的內容類型。setContentType
方法並傳遞BLOB
對象的內容類型來設定javax.servlet.http.HttpServletResponse
對象的內容類型。javax.servlet.http.HttpServletResponse
對象的getOutputStream
方法,建立用於將表單資料流寫入客戶端Web瀏覽器的javax.servlet.ServletOutputStream
對象。BLOB
對象的getBinaryData
方法來填入。 此任務將FormsResult
對象的內容分配給位元組陣列。javax.servlet.http.HttpServletResponse
對象的write
方法,將表單資料流發送到客戶端Web瀏覽器。 將位元組陣列傳遞至write
方法。另請參閱