1. 概述
1.1 應用場景
FineReport 8.0 和 9.0 自帶 PDF 打印、Flash 打印和 Applet 打印方式,且配套一個本地軟件打印的插件,以覆蓋各種場景和滿足客戶的特殊需求。
但過多的打印方式對用戶的選擇造成了一定的困擾,且随着 Web 協議框架和技術的完善,有些打印方式漸漸被淘汰,部分浏覽器對老打印方式的支持也越來越差。
爲了提升用戶的體驗、簡化打印的場景,FineReport 10.0 對打印功能進行了升級,将各種打印方式整合到一起,形成一個統一的打印入口,讓客戶的選擇變得更加簡單清晰。
注1:10.0 設計器和部署包使用的都是 openjdk,而使用 openjdk 無法啓動 flash 打印,但使用 Oracle/sun jdk 可以。
注2:flash 打印目前是已經被淘汰了的技術,很多浏覽器都将不再支持 flash 打印,建議客戶使用零客戶端或本地打印。
1.2 功能簡介
新打印有以下特點:
易用性強:易於設置,可預先進行頁面設置傳遞至打印機,并可以保存用戶打印習慣,無需複雜設置,一鍵打印。同時對於市面上幾乎所有類型打印機都能很好的支持。針式、 熱敏打印機打印是容易出現打印不清晰、打印效果不好的問題都能通過本地軟件打印得到解決。
功能豐富:提供套打、批量打印、打印内容控制、打印偏移、靜默打印等豐富的功能。
性能強大:相同環境下,零客戶端打印耗時不到同類競品的一半,本地軟件打印耗時不到同類競品的 1/3。
2. 打印功能
新打印支持兩種打印方式:
零客戶端打印:無需安裝打印軟件,任何機器上随時都能打印,适合更偏向打印便捷性的客戶。
本地軟件打印:需要安裝打印軟件,适合固定機器進行大量打印的客戶,有更高的效率和更豐富的設置,不受浏覽器約束。
功能 | 簡介 | 零客戶端打印 | 本地軟件打印 | 相關文檔 |
---|---|---|---|---|
首選打印機 | 支持報表綁定打印機,打印報表時優先選擇綁定的打印機進行打印,免去了用戶每次都要選擇打印機的麻煩 | 不支持 | 支持 | - |
打印偏移 | 增加頁面邊距設置,可以調整打印内容的邊距來進行打印偏移,以适應不同打印機的打印效果不同的問題 | 支持 | 打印偏移 | |
靜默打印 | 打印繼承模板中的紙張、布局和邊距設置,可在設計器中提前設置好要打印的樣式,用戶直接使用統一設置,不再彈出設置窗口 | IE 下支持 其他不支持 | 支持 | 靜默打印 |
打印内容控制 | 可在設計器中通過對内容進行設置,實現内容是否打印 | 支持 | 打印單元格 | |
套打 | 支持發票、貨運單等内容的套打 | 支持 | 套打 | |
批量打印 | 支持對單張模板多個參數值進行批量打印 | 支持 | 批量打印 | |
服務器端打印 | 提供了易調用的 JS 接口,直接調用服務器連接的打印機,可解決本地PC沒有連接打印機無法打印的問題 | 支持 | 服務器端打印 | |
Https 下的打印 | 在 https 環境下使用 FineReport10.0,支持使用本地打印功能 | 支持 | 本地打印 https 配置說明 | |
跨域打印 | - | 不支持 https 訪問 http 支持 http 訪問 http 支持 http 訪問 https 支持 https 訪問 https | - |
3. 打印設置
3.1 設置方法
3.1.1 服務器配置
點擊「服務器>服務器配置>打印設置」,可設置打印方式,對所有模板生效,如下圖所示:
3.1.2 模板配置
點擊「模板>打印設置」,默認爲「采用服務器設置」,可選擇「爲該模板單獨設置」,則只對當前模板有效,如下圖所示:
3.2 零客戶端打印
零客戶端打印設置内容如下圖所示:
各項設置的定義如下表所示:
設置 | 定義 | |
---|---|---|
打印時可設置打印邊距 | 勾選 | 彈框對打印邊距進行設置 |
不勾選 | 直接使用默認設置中的打印邊距 | |
IE 浏覽器中不顯示打印設置 | 勾選 | IE 浏覽器使用靜默打印功能 |
不勾選 | IE 浏覽器中顯示打印設置 | |
針式打印優化 | 勾選 | 打印時,将文字字體替換爲黑體以優化打印效果 |
不勾選 | 打印實際的文字字體 | |
繼承頁面邊距設置 | 勾選 | 繼承頁面邊距設置 |
不勾選 | 自定義設置上下左右的邊距 |
3.3 本地軟件打印
3.3.1 軟件安裝
選擇本地軟件打印,需在服務器端安裝 FinePrint 軟件。點擊下載FinePrint V5 版本:FinePrint 。
用戶可在「服務器配置>打印設置」中設置軟件下載地址,如下圖所示:
設置的定義如下表所示:
設置 | 定義 | |
---|---|---|
軟件下載地址 | 勾選「默認」 | 打印軟件的下載地址爲默認地址(FineReport 提供的下載地址) |
不勾選「默認」 | 可以自定義下載地址,當客戶使用的是内網時,可以設置内網地址來下載 例如在軟件下載地址裏填相對路徑 /webroot/FinePrint_Windows_5_0.exe ,可以将下載的 FinePrint 軟件放在報表路徑 webroot 下 | |
打印軟件端口号 | IE 浏覽器使用靜默打印功能 注:遠程設計修改打印端口後,需要重啓工程才可生效 |
3.3.2 基礎設置
本地軟件打印基礎設置内容如下圖所示:
設置的定義如下表所示:
設置 | 定義 | |
---|---|---|
打印時需要打印設置窗口 | 勾選 | 彈框對打印屬性進行設置 |
不勾選 | 繼承模板中的紙張、布局和邊距設置,可在設計器中提前設置好要打印的樣式,用戶直接使用統一設置,不再彈出設置窗口,實現靜默打印 | |
打印時需要指定 sheet | 默認不勾選。 勾選後,打印時,點擊打印按鈕彈出如下彈窗,默認選中所有 sheet,如下圖所示: 注:分頁預覽下不支持 | |
打印機 | 支持報表綁定打印機,自動獲取本地可用的打印機,無可用打印機時,顯示爲空 | |
份數 | 打印的份數,默認爲 1 份 | |
頁碼 | 默認打印「所有頁」 勾選「指定頁」時,在後面文本框中輸入符合格式要求的數值 勾選「雙面打印」,可以設置打印「奇數頁」或者打印「偶數頁」 | |
紙張 | 勾選 | 繼承頁面紙張設置 |
不勾選 | 在下拉框中設置需要打印的紙張大小。 | |
布局 | 勾選 | 繼承頁面布局設置 |
不勾選 | 自定義設置頁面是縱向還是橫向打印,默認爲縱向 | |
邊距 | 勾選 | 繼承頁面邊距設置 |
不勾選 | 自定義設置頁面的上下左右邊距 | |
縮放 | 勾選 | 根據紙張大小縮放打印 |
不勾選 | 自定義縮放的比例 |
4. 打印按鈕
點擊「模板>模板 Web 屬性」,根據模板類型選擇「分頁預覽設置、填報頁面設置、數據分析設置」,設置「爲該模板單獨設置」,雙擊打印按鈕,在工具欄中新增打印按鈕,如下圖所示:
注1:老的打印按鈕,顯示爲「打印(兼容)」。
注2:版本升級後,老的打印按鈕無法添加到工具欄上進行使用,若想使用老的打印方法,可以通過在工具欄中添加自定義按鈕調用接口的方法實現。接口詳情請參見:JS 調用 FR 打印方法。
5. 打印權限
JAR 包時間在 2020-04-26 及之後的 FineReport,新增打印鑒權機制,打印權限受 模板認證 權限控制。
打印鑒權機制适用於「本地打印、零客戶端」打印和兼容的多個打印方式( PDF 打印、Flash 打印),服務器端打印不受限制。
注:跨域情況下打印,模板認證控制打印權限功能需要做單點登錄,否則無法支持模板認證。
5.1 打印鑒權機制
情況 | 打印權限 | 提示 |
---|---|---|
模板認證關閉 | 「任何用戶」可打印任何模板 | - |
模板認證開啓 模板無需認證 | ||
模板認證開啓 僅認證用戶密碼 | 「登錄用戶」可以打印任何模板 | 未登錄用戶打印時提示:請登錄後進行打印 |
模板認證開啓 角色權限認證 | 「登錄用戶」可以打印「有權限」的模板 | 登錄用戶打印無權限模板時提示:此用戶無權限打印該模板 未登錄用戶打印時右上角提示:請登錄後進行打印 |
模板認證開啓 數字簽名認證 | 「通過數字簽名認證」的用戶可以打印「有權限」的模板 | 通過數字簽名認證的用戶打印無權限模板時提示:此用戶無權限打印該模板 未通過數字簽名認證的用戶打印時提示:此用戶無權限打印該模板 |
5.2 跨域打印鑒權
跨域打印時,需要點擊「服務器>報表平台管理」登錄數據決策系統,再點擊「管理系統>安全管理>安全防護」,點擊 Security Headers 的「高級管理」,關閉「點擊劫持攻擊防護」和「内容嗅探攻擊防護」。如下圖所示:
6. 注意事項
6.1 打印軟件不生效
6.1.1 問題描述
升級至 2020-04-26 之後的 JAR 包,打印軟件不生效。
6.1.2 原因分析
一般是由於打印軟件版本過低,使用文檔中 3.3.1 節提供的 FinePrint V5 版本即可。
6.2 本地打印軟件啓動失敗
6.2.1 問題描述
選擇「本地軟件打印」時,提示本地打印軟件啓動失敗,如下圖所示:
6.2.2 解決方案
點擊提示中的「下載安裝」,下載并啓動本地打印軟件。并注意以下幾點:
1)本地打印不要安裝在設計器的安裝目錄下。
2)若已安裝好本地打印軟件,提示啓動失敗,請檢查 9092 端口是否被占用。
3)若機器性能較差,會導緻首次啓動消耗時間較長。出現以上報錯時請耐心等待,或稍後再次嘗試打印。
6.3 浏覽器不兼容
6.3.1 問題描述
目前浏覽器打印預覽不兼容 IE10 及以下版本,不兼容時打印預覽右側 iframe 提示「此浏覽器暫不支持打印預覽」,如下圖所示:
注:IE11 有些小版本可能不兼容,更換浏覽器即可。
6.3.2 解決方案
在 IE 浏覽器下進行打印時,需要啓用管理加載項中的 Adobe PDF Reader 控件,否則提示「安裝警告」或打印出來的文件名默認 ReportSerber,如下圖所示:
6.4 報錯 404
6.4.1 問題描述
Tomcat 上調用 FR 工程的本地打印,如果 Tomcat 上無 FR 工程,下面這個請求報錯 404,如下圖所示:
注:該問題在 Finereport 10.0 和 Finereport 9.0 中都會出現。
6.4.2 原因分析
執行 FineReport.js 的時候,會嘗試從本服務器上加載資源,而調用者的服務器上,沒有報表工程,加載不到資源,所以報錯。
6.4.3 解決方案
在跨域調用新打印時,需要額外引入兩個 js,分别是 socket.io.js 和 jquery.watermark.js (引入位置在 FineReport.js 後面),示例代碼如下所示:
注:Tomcat 下不能有報表工程。
1)10.0 示例
<script type="text/javascript"
src="http://localhost:8075/webroot/decision/view/report?op=resource&resource=/com/fr/web/core/js/socket.io.js"></script>
<script type="text/javascript"
src="http://localhost:8075/webroot/decision/view/report?op=resource&resource=/com/fr/web/core/js/jquery.watermark.js"></script>
2)9.0 示例
<script type="text/javascript"
src="http://localhost:8075/WebReport/ReportServer?op=resource&resource=/com/fr/web/core/js/socket.io.js"></script>
<script type="text/javascript"
src="http://localhost:8075/WebReport/ReportServer?op=resource&resource=/com/fr/web/core/js/jquery.watermark.js"></script>
6.5 自定義紙張打印不全
6.5.1 問題描述
當「模板>頁面設置」中紙張大小爲「自定義」時,本地軟件打印的内容可能會顯示不全。
6.5.2 原因分析
因爲 Java 默認的打印,會從打印機紙張裏尋找相近的紙張進行匹配。如果沒有在打印軟件中添加自定義紙張,可能找出來的是别的紙張。從而導緻打印内容被截斷。
6.5.3 解決方案
需要在打印軟件中添加自定義紙張大小。具體設置請參見:Java 讀取打印機自定義紙張。