Я хочу напечатать только определенную часть моей веб-страницы (а не всю страницу). Как я могу добиться этого в JSF?
Условно отображать компоненты JSF для печати
Ответы (2)
Обычно этим управляет CSS с помощью display: none|block
. Проверьте правила CSS для мультимедиа.
Например, как @media print {}
внутри файла CSS по умолчанию:
@media print {
#header, #footer, #menu {
display: none;
}
}
(в приведенном выше примере будут скрыты элементы HTML с идентификаторами 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% совместим без каких-либо изменений кода и конфигурации в самом веб-приложении). В противном случае просто используйте простой подход HTML <link>
.
media
отсутствует в <h:outputStylesheet>
. Является ли версия атрибута media
конкретной? У меня com.sun.faces
версия 2.1.18
.
- person Jasper de Vries; 22.02.2013
<attribute>
в html_basic.taglib.xml
- person user123444555621; 22.07.2014
Это можно сделать с помощью чистого CSS, указав тип носителя: http://www.w3.org/TR/CSS2/media.html