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.   
  2. "text/javascript">   
  3.     function doFRPrint(){  //點擊打印按鈕時觸發  
  4.         document.getElementByIdx_x('reportFrame').contentWindow.contentPane.pdfPrint();  
  5.         //flash打印:.contentWindow.contentPane.flashPrint();  
  6.         //applet打印:.contentWindow.contentPane.appletPrint();  
  7.         //服務器端打印:.contentWindow.contentPane.printReportServer();  
  8.     }  
  9.     
  10.   

4. 注意編輯

在自定義按鈕打印時,有的可能由於業務需要,會將報表所在的iframe隱藏,直接點擊打印按鈕的時候就打印報表,如果用flash和applet打印的時候,就會發現無法進行下去,這個是因爲flash和applet打印的時候會彈出一個打印設置窗口,這個窗口時彈出在報表頁面的,即iframe框架內,而iframe框卻被隱藏了,所以才無法進行下去,需要在管理平臺設置不彈出該設置窗口即可。如下圖:
222
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章