您可以使用Acrobat或Adobe Reader的用戶端轉譯功能,最佳化PDF內容的傳送,並改善Forms服務處理網路負載的能力。 此程式稱為在客戶端上呈現表單。 若要在用戶端上轉譯表格,用戶端裝置(通常是網頁瀏覽器)必須使用Acrobat 7.0或Adobe Reader 7.0或更新版本。
對伺服器端指令碼執行的表單所做的更改不會反映在客戶端呈現的表單中,除非根子表單包含設定為auto
的restoreState
屬性。 有關此屬性的詳細資訊,請參閱表單設計器。
如需Forms服務的詳細資訊,請參閱AEM Forms的服務參考。
要在客戶端上渲染表單,請執行以下任務:
包含專案檔案
將必要的檔案加入您的開發專案中。 如果要使用Java建立客戶端應用程式,請包括必要的JAR檔案。 如果您使用web services,請確定您包含proxy檔案。
建立Forms用戶端API物件
您必須先建立Forms服務用戶端,才能以程式設計方式執行Forms服務用戶端API操作。 如果您使用Java API,請建立FormsServiceClient
物件。 如果您使用Forms web service API,請建立FormsService
物件。
設定客戶端渲染運行時選項
您必須將RenderAtClient
運行時選項設定為true
,將客戶端渲染運行時選項設定為在客戶端渲染表單。 這會導致表單被傳送至要轉譯的用戶端裝置。 如果RenderAtClient
是auto
(預設值),表單設計會決定表單是否在用戶端呈現。 表單設計必須是具有可流動版面的表單設計。
您可以設定的選用執行時期選項是SeedPDF
選項。 SeedPDF
選項結合了PDF容器(種子PDF檔案)與表單設計和XML資料。 表單設計和XML資料都會傳送至Acrobat或Adobe Reader,然後在Acrobat或Adobe Reader中轉譯表單。 SeedPDF
選項可在用戶端電腦沒有表單中使用的字型時使用,例如當使用者未取得授權使用表單擁有者有權使用的字型時。
您可以使用Designer建立簡單的動態PDF檔案,做為種子PDF檔案。 執行此任務需要執行以下步驟:
您不需要定義種子PDF執行時期選項,就能在用戶端上轉換表單。 如果您未指定種子PDF,Forms服務會建立一個外殼pdf,其中不包含COS物件,但將包含內嵌實際XDP內容的PDF包裝函式。 本節中的步驟不會設定種子PDF執行時期選項。 如需COS物件的詳細資訊,請參閱Adobe PDF參考指南。
在用戶端上演算表格
若要在用戶端上轉換表格,您必須確保在應用程式邏輯中包含用戶端轉換執行時期選項,才能轉換表格。
將表單資料串流寫入用戶端網頁瀏覽器
Forms服務會建立必須寫入客戶端Web瀏覽器的表單資料流。 當寫入用戶端網頁瀏覽器時,表格會由Acrobat 7.0或Adobe Reader 7.0或更新版本轉譯,而且使用者可以看見。
另請參閱
使用Forms API(Java)在用戶端演算表格:
包含專案檔案
在Java專案的類別路徑中包含用戶端JAR檔案,例如adobe-forms-client.jar。
建立Forms用戶端API物件
ServiceClientFactory
對象。ServiceClientFactory
對象,建立FormsServiceClient
對象。設定客戶端渲染運行時選項
PDFFormRenderSpec
對象。PDFFormRenderSpec
物件的setRenderAtClient
方法並傳遞列舉值RenderAtClient.Yes
,以設定RenderAtClient
執行時期選項。在用戶端上演算表格
叫用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瀏覽器的表單資料流。
將表單資料串流寫入用戶端網頁瀏覽器
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
方法,建立javax.servlet.ServletOutputStream
物件,用來將表單資料串流寫入用戶端Web瀏覽器。com.adobe.idp.Document
物件的getInputStream
方法,以建立java.io.InputStream
物件。InputStream
物件的read
方法來填入表單資料流,並將位元組陣列傳入為引數。javax.servlet.ServletOutputStream
物件的write
方法,將表單資料串流傳送至用戶端網頁瀏覽器。 將位元組陣列傳遞到write
方法。另請參閱
快速入門(SOAP模式):使用Java API在用戶端轉譯表單
使用Forms API(web service)在用戶端演算表格:
包含專案檔案
建立Forms用戶端API物件
建立FormsService
對象並設定驗證值。
設定客戶端渲染運行時選項
PDFFormRenderSpec
對象。PDFFormRenderSpec
物件的setRenderAtClient
方法並傳遞字串值RenderAtClient.Yes
,以設定RenderAtClient
執行時期選項。在用戶端上演算表格
叫用FormsService
物件的renderPDFForm
方法並傳遞下列值:
Applications/FormsApplication/1.0/FormsFolder/Loan.xdp
。BLOB
物件,包含要與表單合併的資料。 如果您不想合併資料,請傳遞null
。 (請參閱使用可排程版面預填表單)。PDFFormRenderSpec
物件,儲存在用戶端上轉譯表單所需的執行時期選項。URLSpec
物件,包含Forms服務所需的URI值。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
物件。
將表單資料串流寫入用戶端網頁瀏覽器
com.adobe.idp.services.holders.FormsResultHolder
對象value
資料成員的值,建立FormResult
對象。FormsResult
物件的getOutputContent
方法,建立包含表單資料的BLOB
物件。getContentType
方法獲取BLOB
對象的內容類型。setContentType
方法並傳遞BLOB
物件的內容類型,以設定javax.servlet.http.HttpServletResponse
物件的內容類型。javax.servlet.http.HttpServletResponse
物件的getOutputStream
方法,建立javax.servlet.ServletOutputStream
物件,用來將表單資料串流寫入用戶端Web瀏覽器。BLOB
物件的getBinaryData
方法以填入它。 此任務將FormsResult
對象的內容分配給位元組陣列。javax.servlet.http.HttpServletResponse
物件的write
方法,將表單資料串流傳送至用戶端網頁瀏覽器。 將位元組陣列傳遞到write
方法。另請參閱