1. 描述
FineReport 内部封裝好的js打印方法是一個很好的資源,在用戶系統中有如下圖所示情形,一張清單列表,對於每條記錄後面都希望有一個“打印”,點擊的時候可以将該記錄對應的明細報表打印出來。
實現效果如下圖:
2. 解決方案
通過 JS 調用 FR 的打印方法,傳遞需要打印的報表路徑及參數,将報表打印出來。
3. 示例一(設計器模板中調用FR打印方法)
3.1 模板設置
1)子模板
新建模板,添加數據集 ds1:SELECT * FROM 訂單明細
将字段拖入單元格中,模板設置如下:
雙擊 A2 單元格,添加過濾條件,如下所示:
保存模板:%FR_HOME%\webapps\webroot\doc\Parameter\參數傳遞打印_子模板.cpt
2)主模板
新建模板,添加數據集 ds1:SELECT * FROM 訂單 limit 10
将字段拖入單元格中,模板設置如下:
保存模板:%FR_HOME%\webapps\webroot\doc\Parameter\參數傳遞打印_主模板.cpt
3.2 設計器模板中調用FR打印方法
只是查看時,可以通過超級鏈接-JavaScript調用打印事件;
填報預覽也可以通過按鈕控件的點擊事件來調用打印事件,并且可以傳遞參數,主模板設置如下圖:
保存模板,選擇分頁預覽,實現效果如描述中所示。
注:在設計器中調用打印方法時不需要事先引入 finereport.js,因爲報表模板轉換成網頁時會自動引入。
4. 示例二(Web 頁面中調用 FR 打印方法)
若不使用 FR 設計器制作的,而是用戶自己語言實現的,此時在點擊“打印”時,可以通過 JS 獲取需要傳遞的參數值拼接出需要打印的模板路徑,然後調用 FR 打印方法進行打印。
在 Web 頁面中調用FR打印方法前,需要先引入 finereport.js,調用代碼如下:
<html>
<head>
<title>FineReport Demo</title>
<meta http-equiv="Content-Type" content="text/html; charset=GBK" />
<script type="text/javascript" src="/webroot/decision/view/report?op=emb&resource=finereport.js"></script>
<link rel="stylesheet" type="text/css" href="/webroot/decision/view/report?op=emb&resource=finereport.css"/>
<script type='text/javascript'>
function doPrint(){
var printurl="http://localhost:8075/webroot/decision/view/report";
var reportlets ="[{reportlet: "+document.report.cpt.value+"}]";
var config = {
printUrl : printurl,
isPopUp : true,
// 是否彈出設置窗口,true爲彈出,false爲不彈出
data :{
reportlets: reportlets // 需要打印的模板列表
},
printType : 1, // 打印類型,0爲零客戶端打印,1爲本地打印
// 以下爲本地打印的參數,僅當 printType 爲 1 時生效
printerName : 'Microsoft Print to PDF', // 打印機名
pageType: 2, // 打印頁碼類型:0:所有頁,1:當前頁,2:指定頁
pageIndex: '1-3', // 頁碼範圍。當 pageType 爲 2 時有效
copy: 3, // 打印份數
};
FR.doURLPrint(config);
}
</script>
</head>
<body>
<form name="report">
<input id="cpt" type="checkbox" value="GettingStarted.cpt" />GettingStarted.cpt<br>
</form>
<input type=button name=doprint onclick=doPrint() value='doPrint'></input>
</body>
</html>
注:以上都是使用的本地打印,若想使用其他打印方法可以查看 JS 調用 FR 打印方法文檔,用法類似。
已完成 HTML 頁面保存在%FR_HOME%\webapps\webroot\help\page_demo\immeprint.html
打開内置服務器,在浏覽器中輸入http://localhost:8075/webroot/help/page_demo/cusprint_batch.html,選中複選框,點擊 doprint 按鈕,既可以實現打印了。