1. 描述
用戶系統中使用 iframe 嵌入報表,客戶端浏覽器看到的是報表樣式 1,打印的時候不是看到的效果,而是樣式 2。
例如用戶系統顯示報表的 iframe 大小固定,無法完全顯示 A4 紙張大小的模板,因此在顯示報表的時候進行了分頁處理,如每頁顯示 10 條數據。如果直接将這個顯示結果打印到 A4 紙上,每頁紙上只顯示 10 條數據,下面全是空白的,不美觀并且浪費紙張,所以希望打印的時候按正常頁面打印。
2. 解決方案
類似上述這種打印效果與報表查看效果不同的情況,統一的解決方案是做二張模板,一張對應查看的模板;另一張對應打印的模板;
進行打印時,通過 JS 調用 FR 的打印方法,将打印模板打印出來。
3. 實現步驟
點擊打印的時候,通過 JS 調用 FR 的打印方法,使用打印模板進行打印,如下:
<html>
<head>
<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 doFRPrint(){ //點擊打印時觸發
var reportURL="/webroot/decision/view/report?reportlet=report_print.cpt"; //打印模板路徑,與BS查看的效果不同
FR.doURLFlashPrint(reportURL); //調用FR打印方法
}
</script>
</head>
<body>
<div id="toolbar">
<button type="button" onclick=doFRPrint()>打印</button>
</div>
<iframe id="reportFrame" src="/webroot/decision/view/report?reportlet=report.cpt&__showtoolbar__=false" width=100% height=80%></iframe>
</body>
</html>
4. 移動端
移動端不支持各種打印和導出方式