2013-10-10 71 views
2

我在頁面中有幾個iframe。我想在打印預覽中顯示所有iframe內容作爲iframe的快照。我用window.print()爲個別iframes,它工作正常,但我怎麼做多幀?從多個iframe打印預覽?

+0

你所說的「I幀的快照」是什麼意思? –

+0

就像iframe contentwindow的打印預覽一樣。 –

+0

此預覽可以是靜態圖像嗎? –

回答

4

您需要將所有框架逐一聚焦併合併到打印報告中。

可以實現它,使用此代碼:

HTML

<button id="printButton" onclick="javascript:printPage()" >Print this page</button> 

<h1 id='header'><b>Awesome Print Report</b></h1> 
<iframe id="ifr1" src="http://amazon.com"></iframe> 
<iframe id="ifr2" src="http://amazon.com"></iframe> 
<iframe id="ifr3" src="http://amazon.com"></iframe> 
<iframe id="ifr4" src="http://amazon.com"></iframe> 
<iframe id="ifr5" src="http://amazon.com"></iframe> 
<iframe id="ifr6" src="http://amazon.com"></iframe> 

的JavaScript

function printPage() { 

    window.print(); 

    for (var k = 0; k < window.frames.length; k++) { 
     window.frames[k].focus(); 
     window.frames[k].print(); 
    } 

} 

CSS

#header { 
    margin - top: 20px; 
} 

@media print { 
    #printButton { 
     display: none; 
    } 
} 

此CSS將隱藏打印報告上的打印按鈕。

這裏的jsfiddle你:http://jsfiddle.net/zur4ik/r7pvF/

+0

這可能是一個很好的資源 http://www.codingforums.com/javascript-programming/41713-print-preview-shows-only-1-first-print-page-iframe.html – konxie

0

如果iframe預覽可能只是靜態圖像,你可以做到以下幾點:

  • 提供隱藏的圖像(預覽)旁邊的每個iframe
  • 使用提供打印機獨立的CSS文件media queries
  • 在這個文件中,隱藏iframe並顯示圖像

如果你這樣做,你將有圖像預覽而不是打印視圖中的iframe。

+0

你能告訴我如何將iframe內容轉換爲圖像?我的想法是將iframe轉換爲單個圖像,並從這些圖像構建PDF。這個pdf很容易打印。 –

+0

爲什麼不只是做一個'iframe'的內容的打印屏幕?生成PDF是整個其他話題。 –

+0

是的,我在一個網頁中有多個iframe,我想要一個打印屏幕中的所有iframe。 –

0

我認爲這裏最大的問題是從不同的框架中獲取內容到一個可以打印的視圖中。無論你想要這個在.pdf或window.print()。是否有可能將需要打印的所有幀的內容放入一個文檔(幀)中?例如使用AJAX,cURL或PHP方法?我認爲這是製作一個可打印文檔的唯一方法。

祝你好運!

+0

沒有這個iframe包含cognos url,它們是基於urls繪製的。 –

1

月這段代碼對你有幫助..

HTML

<input type="submit" value="Print All" 
    onclick="javascript:printall()" 
/> 
<p>Hi! I'm a report!</p> 
<iframe id="frame1" src="http://indiabix.com"></iframe> 
<iframe id="frame2" src="http://indiabix.com"></iframe> 
<iframe id="frame3" src="http://indiabix.com"></iframe> 
<iframe id="frame4" src="http://indiabix.com"></iframe> 

腳本

function printall() { 
    window.print(); 
    for (var i=0; i<window.frames.length; i++) { 

    window.frames[i].focus(); 
    window.frames[i].print(); 
    } 
} 

小提琴http://jsfiddle.net/ackMC/5/

+0

抱歉不正確 –