反饋已提交

網絡繁忙

JS呼叫FR列印方法

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:不彈出

該參數說明如下:

  • 10.0.11 版本之前,isPopUp 參數既綁定了列印設定的彈窗,又綁定了指定 sheet 頁的彈窗,會導致 isPopUp 為 false 時指定 sheet 頁彈窗不會出現

  • 10.0.11 版本及之後,指定 sheet 頁的彈窗從 isPopUp 參數分離出來,新增參數 isSheetSelectPopUp 。為 true 時彈出指定 sheet 彈窗,為 false 或者不寫時不彈。(相容老的寫法:老的邏輯是如果 isPopUp 為 true 時才彈出指定 sheet 的視窗)

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 程式碼:

var printurl="http://localhost:8075/webroot/decision/view/report";
var reportlets ="[{reportlet: 'GettingStartedTW.cpt', 地區: '華北'}, {reportlet: 'GettingStartedTW.cpt', 地區: '華東'}]";
var config = {
printUrl : printurl,
isPopUp : true
// 是否彈出設定視窗,true為彈出,false為不彈出
data :{ 
// 多範本格式: [{reportlet: 'name.cpt', a: 'a1'}, {reportlet: 'name.cpt', b: 'b1'}]  同樣的範本會出現多頁
// 單範本格式: [{reportlet: 'name.cpt', a: 'a1', b: 'b1'}]  同樣的範本只會有單頁
reportlets: reportlets // 需要列印的範本列表
},
printType : 1, // 列印類型,0為零使用者端列印,1為本地列印
// 以下為零使用者端列印的參數,僅當 printType 為 0 時生效
ieQuietPrint : false,// IE靜默列印設定 true為靜默,false為不靜默
// 以下為本地列印的參數,僅當 printType 為 1 時生效
printerName : 'Microsoft Print to PDF', // 印表機名
pageType: 2, // 列印頁碼類型:0:所有頁,1:當前頁,2:指定頁
pageIndex: '1-3', // 頁碼範圍。當 pageType 為 2 時有效
copy: 3, // 列印份數
};
FR.doURLPrint(config)

儲存範本,選擇填報預覽,當點選按鈕時,將使用本地列印方式列印範本,如下圖:

注:如果無法正常列印,請參見文檔 [新]列印 中的注意事項。

3. 伺服器列印API

伺服器端列印:直接呼叫伺服器連結的印表機,可解決本地 PC 沒有連結印表機無法列印的問題

10.0 中,伺服器端列印只能透過 JS 呼叫。如果不傳參數,則彈窗;如果傳參數,則靜默列印。參數有預設值,不需要設定的話可以不傳。

// 彈窗
window.contentPane.printReportServer();
// 靜默列印
window.contentPane.printReportServer({
     pageType: 2// 列印頁碼類型:0:所有頁,1:當前頁,2:指定頁
     pageIndex: '1-3'// 頁碼範圍。當 pageType 為 2 時有效
     printerName: "" // 指定印表機
});
// 靜默列印
window.contentPane.printReportServer({
     pageType: 1
});
// 靜默列印
window.contentPane.printReportServer({})

範例:將上面的範本裏的 JS 程式碼修改為:window.contentPane.printReportServer();

填報預覽後,點選按鈕,將呼叫伺服器端列印(彈窗),效果如下圖所示:


附件列表


主題: 報表專題
  • 有幫助
  • 沒幫助
  • 只是瀏覽
  • 圖片不清晰
  • 用語看不懂
  • 功能說明看不懂
  • 操作說明太簡單
  • 內容有錯誤
中文(繁體)

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

10s後關閉

獲取幫助
線上支援
獲取專業技術支援,快速幫助您解決問題
工作日9:00-12:00,13:30-17:30在线
頁面反饋
針對當前網頁的建議、問題反饋
售前咨詢
業務咨詢
電話:0933-790886或 0989-092892
郵箱:taiwan@fanruan.com
頁面反饋
*問題分類
不能為空
問題描述
0/1000
不能為空

反馈已提交

网络繁忙