1. 程式人生 > >finereport的js列印,js呼叫列印_…

finereport的js列印,js呼叫列印_…

轉自:http://help.finereport.com/doc-view-1087.html

目錄:

1. 問題描述編輯

FR工具欄中雖然有列印按鈕,但是位置與樣式比較死,只能固定在報表上方或下方的工具欄中,不靈活。 使用者系統已經自己定義了一套工具欄按鈕,頁面中只需要嵌入報表內容,不使用FR的工具欄,如果需要列印報表,點選自定義的按鈕,呼叫FR的列印方法進行列印,如下圖:
222

2. 解決方案編輯

對於這種列印iframe中嵌入的報表情況,點選“列印”按鈕時,先通過js獲取到報表所在iframe,進而獲得iframe中的window物件,最後呼叫列印事件,打印出當前iframe中的報表內容。 該方法不管iframe中的報表與當前系統是否是同一個應用,都可以使用,而且不用額外引入finereport.js,避免了js跨域問題。

3. 實現步驟編輯

如報表嵌入在id為reportFrame的iframe中,則點選“列印”按鈕觸發的事件js如下:
  1. "text/javascript">   
  2.     function doFRPrint(){  //點選列印按鈕時觸發  
  3.         document.getElementByIdx_x('reportFrame').contentWindow.contentPane.pdfPrint();  
  4.         //flash列印:.contentWindow.contentPane.flashPrint();  
  5.         //applet列印:.contentWindow.contentPane.appletPrint();
      
  6.         //伺服器端列印:.contentWindow.contentPane.printReportServer();  
  7.     }  

4. 注意編輯

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