2013-06-25 64 views
4

我想知道是否可以打印包含跨越多个页面的IFRAME的HTML页面。出于某种原因,浏览器会在第一页后继续截断IFRAME。这是一个简单的例子,它演示了上面概述的问题。起初,这里是包含应打印进行优化的IFRAME一个简单的HTML页面:如何打印包含多页的IFRAME?

<!DOCTYPE html> 
<html> 
    <head> 
    <meta charset="utf-8"> 
    <title>TEST</title> 

    <style> 
     html, body { 
      height: 100%; 
     } 

     iframe { 
      width: 100%; 
      height: 100%; 
     } 
    </style> 

    </head> 
    <body> 
    <iframe src="iframe-content.html"> 
    </iframe> 
    </body> 
</html> 

这里是我要嵌入页面:

<!DOCTYPE html> 
<html> 
    <head> 
    <meta charset="utf-8"> 
    <title>TEST-CONTENT</title> 

    </head> 
    <body> 
    <p> 
     Some very, very long text spawning multiple pages. 
    </p> 
    </body> 
</html> 

使用JavaScript是不是一种选择。我正在寻找仅使用CSS的解决方案。任何帮助将不胜感激。

+0

你想要发生什么?什么是用例?当某人按下'ctrl + p'时是否要打印整个iFrame? – raam86

+0

是的,确切地说:我希望在用户按下CTRL + P时打印整个IFRAME。用例是我正在处理嵌入来自另一个应用程序的内容的应用程序。这是一个严格的要求,印刷只是没有应用任何JavaScript魔术的作品。 –

+0

作为IFrame原点链接的“打印”按钮如何?也是来自同一个域的iframe? – raam86

回答

0

您可以在父文档的元文件中指定,因为CSS无法指定要打印的页面,而只是它的外观。

<link rel=alternate media=print href="printme.html"> 

如果您尝试在父级内打印整个iframe,则需要嵌入特定于打印的CSS文档。与打印预览一起使用将有助于您零入。

<link rel="stylesheet" href="print.css" media="print"> 
+0

非常感谢您的回答。不幸的是''link rel = alternate media = print href =“printme.html”>'似乎只能在IE中工作。至于打印特定的CSS文件:我们已经尝试过很多,但没有找到解决方案。你能更具体一点吗? –

+0

我真的希望这是一件事。 ([它是规范的一部分](https://www.w3.org/wiki/HTML/Elements/link#Example_B))不幸的是,我无法在Chrome中使用它,并且我发现[this Firefox ticket](https://bugzilla.mozilla.org/show_bug.cgi?id=104618),这似乎表明他们并不急于支持这一点。 –

0

只有CSS解决方案 - 必须将iframe宽度设置为静态大小。对于A4肖像,宽度值接近670像素。对于横向印刷,价值将是另一个。

iframe { 
    width: 670px; 
} 

在铬浏览器中工作。