如何只打印部分页面?

时间:2008-10-22 00:38:54

标签: css filter printing

我试图在用户打印这个巨型表单之前隐藏一些div,然后再显示div。因此,我想忽略页面的其余部分,只打印表单本身。

当用户点击打印按钮时,我可以打开一个单独的页面。唯一的问题是形式真的很长,这样做会非常繁琐。


编辑:我之前的问题实际上并没有反映我在寻找什么。所以我把它改成现在的那个。

还要感谢所有建议的window.onbeforeprint和window.onafterprint。这与我编辑过的问题有关。

4 个答案:

答案 0 :(得分:25)

首先,好的方式:

看看window.onbeforeprint和window.onafterprint(原始问题询问如何以编程方式执行此操作我相信)。

现在,更好的方式:

更好的方法是使用专门用于打印的样式。换句话说,你的div可能如下所示:

<div class="someClass noPrint">My Info</div>

然后你会在样式表中找到它:

.someClass {font-family:arial;}
@media print {
    .noPrint { display: none; }
} 

另一个选项

如果您愿意,也可以将其放在单独的样式表中,这样您就不必混合样式:

<link rel="stylesheet" type="text/css" media="print" href="print.css">

您的屏幕样式表可以通过一种方式定义“.someClass”,然后您的打印样式表可以让它以完全不同的方式定义。

答案 1 :(得分:16)

IE支持onbeforeprintonafterprint,但您真正想要的是打印样式表。

<link rel="stylesheet" type="text/css" media="print" href="print.css">

另请参阅:this answer

答案 2 :(得分:0)

您可能需要考虑使用media="print"

创建专门用于打印的样式表

答案 3 :(得分:0)

您应该将其实现为CSS media = print styles。 link元素的media属性可用于选择应用样式表的媒体。查看this article