一、概述
應用場景:在報表中透過傳參的方式列印其他報表。例如:有一張訂單表,對於每條記錄後面都希望有一個【列印】按鈕,點擊的時候可以將該記錄對應的明細報表列印出來。
實現思路:透過 JavaScript 型別的超連結,實現點擊超連結後呼叫 FineReport 的列印方法,傳遞需要列印的報表路徑及參數,將報表列印出來。
二、範例一:範本傳參列印
1
設計子範本。
子範本是被列印的範本,建立普通報表,新增資料集:SELECT * FROM 訂單明細。資料庫查詢詳情請看資料庫查詢。
設計子範本表格,將對應欄位拖曳到儲存格中,如下圖1所示。
為了在主範本中將參數傳遞給子範本,需要透過參數設定資料過濾。子範本和主範本共有的欄位是【訂單ID】,雙擊 A2 儲存格,進入【過濾】進行配置。如下圖2所示。
2
設計主範本。
主範本是列印的地方,建立普通報表,新增資料集:SELECT * FROM 訂單 limit 10 。
設計主範本表格,將對應欄位拖曳到儲存格中,其中 F2 儲存格填寫正文【列印】,這個儲存格後面會新增超連結,如下圖所示。
3
新增超連結。
主範本選中 F2 儲存格,新增一個 JavaScript 型別的超連結,新增一個參數【id】,其值為【=A2】,作為傳參用,然後輸入 JavaScript 代碼,如下圖所示。JavaScript 代碼如下代碼塊所示。
var reportURL="/webroot/decision/view/report?viewlet=doc%2FParameter%2F%5B53c2%5D%5B6570%5D%5B4f20%5D%5B9012%5D%5B6253%5D%5B5370%5D_%5B5b50%5D%5B6a21%5D%5B677f%5D.cpt&id=" +id; //範例用到的子範本路徑,可根據實際修改
FR.doURLPDFPrint(reportURL); //呼叫FR列印方法。
4
效果預覽。
主範本點擊【分頁預覽】,效果如下圖所示。
注1:列印不支援行動端。
注2:填報預覽也可以透過按鈕元件的點擊事件來呼叫列印事件,並且可以傳遞參數。
三、範例二:Web頁面傳參列印
1
原始碼。
在 Web 頁面中呼叫 FineReport 列印方法前,需要先引入 finereport.js,這個檔案是報表工程自帶的,直接在 Web 代碼中新增即可。
以下代碼為原始碼,裏面包括了函式可以實現的功能,參數的不同效果。您可以根據自己的實際需求進行修改。
注1:finereport.js 在報表工程目錄中沒有實體檔案,引用它有個固定寫法,詳情參見文檔:FineReport內置方法 。
注2:以上都是使用的本地列印,若想使用其他列印方法可以查看 JS呼叫FR列印方法文檔,用法類似。
<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
</form>
<input type=button name=doprint onclick=doPrint() value='doPrint'></input>
</body>
</html>
2
實體。
根據上面的原始碼,檔案下載後放入下圖所示的路徑中,可以直接在本地透過 URL 開啟預覽,如下圖1所示。
或者開啟內建伺服器,在瀏覽器中輸入:http://localhost:8075/webroot/help/page_demo/immeprint.html,選中複選框,點擊 【doprint】 按鈕即可列印,效果如下圖2所示。
四、範本下載
已完成範本請參見以下路徑。或者點擊下載檔案。
%FR_HOME%\webapps\webroot\doctw\Parameter\參數傳遞列印_主範本.cpt
%FR_HOME%\webapps\webroot\doctw\Parameter\參數傳遞列印_子範本.cpt