我想只打印我网页的某一部分(所以不是整个页面)。如何在JSF中实现这一点?
这通常是由CSS控制的display: none|block
。查看CSS媒体规则
例如,默认CSS文件中的@media print {}
:
@media print {
#header, #footer, #menu {
display: none;
}
}
(上面的示例将隐藏id为header
, footer
和menu
的HTML元素)
或者通过泛型样式类:
@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%兼容,而不需要在web应用程序本身进行任何代码和配置更改)。否则就使用普通的HTML <link>
方法。
这可以通过指定媒体类型通过纯CSS实现:http://www.w3.org/TR/CSS2/media.html