當前為10.0版本文檔,更多實例內容將在最新幫助文檔中展現,點選跳轉至 最新版幫助文檔

JS 調用 FR 打印方法

1. 概述

在進行報表集成時,常常需要通過 JavaScript 來調用FR的打印事件。例如:不查看報表直接打印批量打印 

JAR 包時間在 2018-04-09 之前的設計器,有兩種辦法實現 Flash、PDF 兩種客戶端打印:doURLFlashPrintdoURLPDFPrint

JAR 包時間在 2018-04-09 及之後的設計器,有一種辦法實現新客戶端打印:doURLPrint

在實現具體實例前,您需要了解 JS 調用 FR 打印方法的語法。

注1:10.0 設計器和部署包使用的都是 openjdk,而使用 openjdk 無法啓動 flash 打印,使用 Oracle/sun jdk 可以。

注2:flash 打印目前是已經被淘汰了的技術,很多浏覽器都将不再支持 flash 打印,建議客戶使用零客戶端或本地打印。

2. 新打印接口

JS 打印接口: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 添加“按鈕控件”,并添加“點擊”事件,如下圖所示:

222

JS 代碼:

var printurl="http://localhost:8075/webroot/decision/view/report";
var reportlets ="[{reportlet: 'GettingStarted.cpt', 地區: '華北'}, {reportlet: 'GettingStarted.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)
顯示代碼

保存模板,選擇填報預覽,當點擊按鈕時,将使用本地打印方式打印模板,如下圖:

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

3. 服務器端打印接口

服務器端打印:直接調用服務器連接的打印機,可解決本地  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();
填報預覽後,點擊按鈕,将調用服務器端打印(彈窗),效果如下圖所示:
222

4. 老打印接口

調用以下方法前,需要先引入 finereport.js,再通過 doURLxxxxPrint() 進行調用。

4.1 doURLxxxxPrint(printurl)

說明:printurl 爲需要打印的報表路徑,printurl以get 方式傳遞給服務器,服務器将報表結果返回給客戶端,彈出打印選項框及打印對話框,供用戶選擇打印範圍及打印機,然後進行打印。

示例:

FR.doURLFlashPrint("/webroot/decision/view/report?viewlet=report.cpt")

4.2 doURLxxxxPrint(printurl,isPopUp)

說明:printurl 爲需要打印的報表路徑

isPopUp 布爾值(true/false),表示是否進行靜默打印,true 爲彈出打印對話框,false 爲不彈出。

示例:

FR.doURLFlashPrint("/webroot/decision/view/report?viewlet=report.cpt",true);

Flash 打印不支持靜默打印,true/false 效果相同

FR.doURLPDFPrint("/webroot/decision/view/report?viewlet=report.cpt",true);

PDF 打印,true 時彈出打印對話框,false 不彈出

4.3 doURLxxxxPrint(config)

4.3.1 post 傳參

說明:config 爲參數配置,參數可以以 post 方式傳遞給服務器,config 數據格式爲 {url : url,isPopUp : isPopUp,data:{reportlets:reportlets}}.

URL 爲需要打印的報表路徑,isPopUp 布爾值(true/false),表示是否進行靜默打印,true 爲彈出打印對話框,false 爲不彈出,data 需要打印的報表以及報表參數。

示例:

var printurl="http://localhost:8075/webroot/decision/view/report";     
var reportlets ="[{reportlet: '1.cpt', p1: 'a'}, {reportlet: '1.cpt', p1: 'b'}]";
var config = {
url : printurl,
isPopUp : false,
data : {
reportlets: reportlets
}
};
FR.doURLPDFPrint(config)

詳細示例可查看 批量打印_(Get/Post)

4.3.2 get 傳參

說明:config 爲參數配置,參數可以以 get 方式傳遞給服務器,config 數據格式爲 {url : url,isPopUp : isPopUp}.

URL 爲需要打印的報表路徑,isPopUp 布爾值(true/false),表示是否進行靜默打印,true 爲彈出打印對話框,false 爲不彈出。

示例:

var  url="http://localhost:8075/webroot/decision/view/report?viewlet=";  
url+=document.report.cpt.value;  
var  isPopUp = false;  
var  config = {url : url,isPopUp : isPopUp}  
FR.doURLPDFPrint(config)

詳細示例可查看 JS 調用打印_不查看直接打印

注:post 傳參與 get 傳參的區别請查看 post 傳參和 get 傳參

附件列表


主題: 原簡體文檔
  • 有幫助
  • 沒幫助
  • 只是瀏覽

文 檔回 饋

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

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

不再提示

9s后關閉

反饋已提交

網絡繁忙