報表管理軟體FineReport中自定義列印按鈕介紹

下面通過報表管理軟體FineReport來簡單介紹一下。

工具/原料

報表管理軟體FineReport7.1.1
大小:148.2M 適用平台:windows/linux

方法/步驟

用戶系統已經自己定義了一套工具欄按鈕,頁面中只需要嵌入報表內容,不使用FR的工具欄,如果需要列印報表,點擊自定義的按鈕,調用FR的列印方法進行列印,如下圖:

解決方案

對於這種列印iframe中嵌入的報表情況,點擊「列印」按鈕時,先通過js獲取到報表所在iframe,進而獲得iframe中的window對象,最後調用列印事件,列印出當前iframe中的報表內容。

該方法不管iframe中的報表與當前系統是否是同一個應用,都可以使用,而且不用額外引入finereport.js,避免了js跨域問題。

實現步驟

如報表嵌入在id為reportFrame的iframe中,則點擊「列印」按鈕觸發的事件js如下:

<head>

<script type="text/javascript">

function doFRPrint(){  //點擊列印按鈕時觸發

document.getElementById('reportFrame').contentWindow.contentPane.pdfPrint();

//flash列印:.contentWindow.contentPane.flashPrint();

//applet列印:.contentWindow.contentPane.appletPrint();

//伺服器端列印:.contentWindow.contentPane.printReportServer();

}

</script>

</head>

注意

在自定義按鈕列印時,有的可能由於業務需要,會將報表所在的iframe隱藏,直接點擊列印按鈕的時候就列印報表,如果用flash和applet列印的時候,就會發現無法進行下去,這個是因為flash和applet列印的時候會彈出一個列印設置窗口,這個窗口時彈出在報表頁面的,即iframe框架內,而iframe框卻被隱藏了,所以才無法進行下去,需要在管理平台設置不彈出該設置窗口即可。如下圖:

原作者:FineReport

本文內容整理自網絡, 文中所有觀點看法不代表淘大白的立場