1. 概述
1.1 版本
報表伺服器版本 | 功能變更 |
---|---|
11.0 | - |
1.2 功能簡介
在進行報表整合時,常常需要透過 JavaScript 來呼叫FR的列印事件。例如:不查看報表直接列印、批量列印
在實現具體實體前,您需要了解 JS 呼叫 FR 列印方法的文法。
注:列印功能不支援行動端。
1.3 注意事項
1)10.0 設計器和部署包使用的都是 openjdk,而使用 openjdk 無法啟動 flash 列印,使用 Oracle/sun jdk 可以。
2)flash 列印目前是已經被淘汰了的技術,很多瀏覽器都將不再支援 flash 列印,建議客戶使用零用戶端或本地列印。
3)範本的參數是包含'的,需要傳入這個引號才能有正確的資料,可用\\'轉義',例如:var a = "\\'234"; reportlets += ",a:'" + a + "'";
4)若 9.0 設計器升級至 11.0 版本,使用 JS 呼叫 FR 列印方法需要根據說明文檔重新編寫 JS 程式碼,或去掉原 9.0 程式碼中的 FR.cjkEncode(),若 10.0 不開啟範本認證則無需去掉。
5)若第三方系統引用列印API,需要配套引用 finereport.css 和 finereport.js 檔案,否則會列印失敗。引用方式請參考 FR物件使用說明 。
2. 新列印API
JS 列印API:FR.doURLPrint(config),使用 get 傳參,具體 config 參數如下表所示:
參數 | 含義 |
---|---|
printurl | 需要列印的範本的應用地址和服務,如"http://localhost:8075/webroot/decision/view/report" 允許為空。如果為空的話,就使用當前的 servlet 地址。如果需要跨域,則此參數不能為空 |
isPopUp | 是否彈出設定視窗 true:彈出 false:不彈出 該參數說明如下:
|
data | 為需要列印的範本列表及其參數,如"[{reportlet: '1.cpt', p1: 'a'}, {reportlet: '1.cpt', p1: 'b'}]" |
printType | 列印類型 0:零使用者端列印 1:本地列印 |
下面的參數為零使用者端列印的參數,僅當 printType 為 0 時生效 | |
ieQuietPrint | IE 靜默列印設定 true:靜默 false:不靜默 |
下面的參數為本地列印的參數,僅當 printType 為 1 時生效 | |
printerName | 印表機名 |
pageType | 列印頁碼類型 0:所有頁 1:當前頁 2:指定頁 |
pageIndex | 頁碼範圍 當 pageType 為 2 時有效 |
copy | 列印份數 |
needSelectSheet | 是否列印指定 Sheet 頁 true:指定 Sheet 頁 false或參數為空:列印全部 Sheet |
sheetIndex | Sheet頁,只支援正整數或正整數區間 正整數範例:2 正整數區間範例:'7-10' |
範例:建立一個範本,在儲存格 A1 新增「按鈕元件」,並新增「點選」事件,如下圖所示:
JS 程式碼:
儲存範本,選擇填報預覽,當點選按鈕時,將使用本地列印方式列印範本,如下圖:
注:如果無法正常列印,請參見文檔 [新]列印 中的注意事項。
3. 伺服器列印API
伺服器端列印:直接呼叫伺服器連結的印表機,可解決本地 PC 沒有連結印表機無法列印的問題
10.0 中,伺服器端列印只能透過 JS 呼叫。如果不傳參數,則彈窗;如果傳參數,則靜默列印。參數有預設值,不需要設定的話可以不傳。
範例:將上面的範本裏的 JS 程式碼修改為:window.contentPane.printReportServer();
填報預覽後,點選按鈕,將呼叫伺服器端列印(彈窗),效果如下圖所示: