我只想打印我网页的某个部分(所以不打印整页)。我怎样才能在JSF中实现这一目标?
答案 0 :(得分:14)
这通常由CSS display: none|block
控制。查看CSS media rules。
例如,默认CSS文件中的@media print {}
:
@media print {
#header, #footer, #menu {
display: none;
}
}
(上面的示例将隐藏ID为header
,footer
和menu
的
或通过通用样式类:
@media screen {
.printonly {
display: none;
}
}
@media print {
.noprint {
display: none;
}
.printonly {
display: block;
}
}
然后,您将styleClass="noprint"
添加到您要隐藏的内容中,styleClass="printonly"
添加到您希望仅以打印方式显示的内容。
您还可以将特定于打印的CSS放在自己的样式表文件中,并使用<link media="print">
或<h:outputStylesheet media="print">
引用它,如下所示:
<link rel="stylesheet" href="#{request.contextPath}/css/print.css" media="print" />
<!-- Or -->
<link rel="stylesheet" href="#{resource['css/print.css']}" media="print" />
<!-- Or -->
<h:outputStylesheet name="css/print.css" media="print" />
#header, #footer, #menu {
display: none;
}
请注意,<h:outputStylesheet media>
属性仅在JSF 2.1中添加,因此如果您仍在使用JSF 2.0,请考虑升级到至少2.1(应该100%兼容,而不需要更改代码和配置webapp本身)。否则,只需使用纯HTML <link>
方法。
答案 1 :(得分:0)
这可以通过纯CSS通过指定媒体类型来完成:http://www.w3.org/TR/CSS2/media.html