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

批量打印

1. 概述

1.1 版本

報表服務器版本
10.0

1.2 預期效果

對於多張模板,用戶希望一鍵打印出來。

對於動态參數模板,用戶希望一鍵打印不同參數值時的報表。

例如有一張全國銷售人員的業績報表,傳入不同地區參數後,批量打印出這些報表。如下圖所示:

2020-08-26_16-42-27.gif

1.3 實現思路

使用 JavaScript 調用 FineReport 的打印接口 FR.doURLPrint(config) 來批量打印報表。

2. 接口簡介

FR.doURLPrint(config)打印接口内容可參考文檔 JS調用FR打印接口 第 2 章

實現批量打印需要對接口中 data 參數進行設置。data參數形式:

data: {
reportlets: "[{reportlet: 'reportname1.cpt',param1: 'value1',param2: 'value2'},
{reportlet: 'reportname2.cpt',param3: 'value3',param4: 'value4}]"

}

注:其中“[]”中的内容對應需要打印的内容,一個“{}”對應一個模板,“{}”中内容用“,”隔開,順序依次爲模板名稱、模板中參數名稱,若有多個參數也用","隔開。

舉例給出不同應用場景下對應的設置:

1)打印同一個模板,傳入模板的參數不同

"[{reportlet: 'GettingStarted.cpt',地區: '華北'}, 
{reportlet: 'GettingStarted.cpt', 地區: '華東'}]"

2)打印多個模板,傳入的模板名稱不同

"[{reportlet: 'GettingStarted001.cpt',地區: '華北'}, 
{reportlet: 'GettingStarted002.cpt', 地區: '華東'}]"

3)打印同一個模板,傳入兩個參數

"[{reportlet: 'GettingStarted.cpt',地區: '華北',銷售員: '孫林'}, 
{reportlet: 'GettingStarted.cpt', 地區: '華東',銷售員: '張珊'}]"

3. 示例

3.1 模板準備

3.1.1 新建數據集

新建普通報表,新建數據集 ds1:

select 地區 from 銷量

3.1.2  設置參數複選框按鈕

将地區字段拖入 A2 單元格,選中 A2 單元格,點擊「單元格屬性」>「高級」按鈕,自定義顯示值,如下圖所示:

自定義顯示值内容:

'<input id="config1" type="checkbox" value="'+$$$+'" checked />'+$$$

注:checked 代表初始化時參數複選框默認全選,如果不需要被選中,去掉此參數。

2020-08-26_17-29-06.png

爲了将 A2 顯示成複選框樣式,還需要将其樣式設計成「用 HTML 顯示内容」。

選中 A2 單元格,點擊「單元格屬性>其他」,設置顯示内容爲「用 HTML 顯示内容」,如下圖所示:

2020-08-26_17-37-04.png

3.1.3 設置按鈕控件

選中 A4 單元格,點擊「控件」,設置爲「按鈕控件」。

按鈕類型爲「普通」,按鈕名字爲「批量打印」,如下圖所示:

2020-08-26_17-40-11.png

3.2 設置批量打印 JS 事件

選中 A4 單元格,點擊「控件」>「事件」,添加「點擊事件」,輸入 JavaScript 代碼,如下圖所示:

2020-08-26_17-46-29.png

JavaScript 代碼如下:

var printurl = "http://localhost:8075/webroot/decision/view/report";
var p = [];
//獲取當前頁面選中的參數值,并将值放入數組中  
$(":checkbox").each(function({
if ($(this).attr("checked") == "checked")
p.push("{reportlet: 'GettingStarted.cpt', 地區 : " + $(this).val() + "}");
})
if (p.length > 0) {
//将參數值組成的數組轉化爲字符串  
var rp = p.join(",");
var reportlets = "[" + rp + "]";
var config = {
printUrl: printurl,
isPopUp: true,
// 是否彈出設置窗口,true爲彈出,false爲不彈出
data: {
reportlets: reportlets // 需要打印的模板列表
},
printType: 0// 打印類型,0爲零客戶端打印,1爲本地打印
// 以下爲本地打印的參數,僅當 printType 爲 1 時生效
printerName: 'Microsoft Print to PDF'// 打印機名
pageType: 2// 打印頁碼類型:0:所有頁,1:當前頁,2:指定頁
pageIndex: '1-3'// 頁碼範圍。當 pageType 爲 2 時有效
copy: 1// 打印份數
};
FR.doURLPrint(config);
else
alert("請選擇需要打印的參數");
顯示代碼

3.3 效果預覽

保存模板,點擊填報預覽,即可對選中的按鈕值根據不同參數批量打印。效果如「1.2 節預期效果」所示。

注:不支持移動端。

4. 模板下載

已完成模板請參見:%FR_HOME%\webroot\WEB-INF\reportlets\doc\Advanced\PrintReport\JS實現批量打印.cpt

點擊下載模板:JS實現批量打印.cpt

附件列表


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

文 檔回 饋

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

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

不再提示

9s后關閉

反饋已提交

網絡繁忙