Разрывы Страниц Печати Google Chrome
Я пытаюсь заставить google chrome делать разрывы страниц.
Мне сказали через кучу веб-сайтов, что page-break-after: always;
действительно в chrome, но я не могу заставить его работать даже с очень простым примером. есть ли способ заставить разрыв страницы при печати в chrome?
13 ответов
Я успешно использовал следующий подход во всех основных браузерах, включая Chrome:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
<title>Paginated HTML</title>
<style type="text/css" media="print">
div.page
{
page-break-after: always;
page-break-inside: avoid;
}
</style>
</head>
<body>
<div class="page">
<h1>This is Page 1</h1>
</div>
<div class="page">
<h1>This is Page 2</h1>
</div>
<div class="page">
<h1>This is Page 3</h1>
</div>
</body>
</html>
Это упрощенный пример. В реальном коде каждая страница div содержит еще много элементов.
на самом деле одна деталь отсутствует в ответе, который выбран как принятый (от Фила Росса)....
это тут работа в Chrome, и решение действительно глупо!!
как родительский, так и элемент, на который вы хотите контролировать разрыв страницы, должны быть объявлены как:
position: relative
проверьте эту скрипку: http://jsfiddle.net/petersphilo/QCvA5/5/show/
Это верно для:
page-break-before
page-break-after
page-break-inside
однако управление разрывом страницы в Safari не работает (по крайней мере, в 5.1.7)
надеюсь, это поможет!!!
PS: вопрос ниже поднял тот факт, что последние версии Chrome больше не уважают это, даже с позиции: относительный; трюк. Тем не менее, они, кажется, уважают:
-webkit-region-break-inside: avoid;
видите эту скрипку: http://jsfiddle.net/petersphilo/QCvA5/23/show
Так что я думаю, мы должны добавить это сейчас...
надеюсь, что это помогает!
Я просто хотел отметить, что Chrome также игнорирует настройки page-break - * css в divs, которые были плавающими.
Я подозреваю, что есть звуковое обоснование этого где-то в спецификации css, но я подумал, что это может помочь кому-то когда-нибудь; -)
еще одно примечание: IE7 не может подтвердить настройки разрыва страницы без явной высоты в предыдущем блоке элемент:
У меня сама эта проблема - мои разрывы страниц работают в каждом браузере, кроме Chrome , и смогли изолировать его до элемента page-break-after, находящегося внутри ячейки таблицы. (Старые, унаследованные шаблоны в CMS.)
по-видимому, Chrome не соблюдает свойства page-break-before или page-break-after внутри ячеек таблицы, поэтому эта измененная версия примера Фила помещает второй и третий заголовок на одной странице:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
<title>Paginated HTML</title>
<style type="text/css" media="print">
div.page
{
page-break-after: always;
page-break-inside: avoid;
}
</style>
</head>
<body>
<div class="page">
<h1>This is Page 1</h1>
</div>
<table>
<tr>
<td>
<div class="page">
<h1>This is Page 2</h1>
</div>
<div class="page">
<h1>This is, sadly, still Page 2</h1>
</div>
</td>
</tr>
</table>
</body>
</html>
реализация Chrome (сомнительно) разрешено с учетом спецификации CSS - вы можете увидеть больше здесь: http://www.google.com/support/forum/p/Chrome/thread?tid=32f9d9629d6f6789&hl=en
У меня была проблема, похожая на эту, но я нашел решение в конце концов. У меня было overflow-x: hidden; применяется к тегу , поэтому независимо от того, что я сделал ниже в DOM, он никогда не разрешит разрывы страниц. Возвращаясь к overflow-x: visible; он работал нормально.
надеюсь, это поможет кто-то.
остерегайтесь CSS:display:inline-block
при печати.
ни одно свойство CCS для перехода на следующую страницу не будет работать для меня в Chrome и Firefox, если моя таблица была внутри div со стилем display:inline-block
например, следующее не работает:
<div style='display:inline-block'>
<table style='page-break-before:always'>
...
</table>
<table style='page-break-before:always'>
...
</table>
</div>
но следующая работа:
<div>
<table style='page-break-before:always'>
...
</table>
<table style='page-break-before:always'>
...
</table>
</div>
я столкнулся с этой проблемой в chrome раньше, и причиной этого является то, что div имеет значение min-height. Решение состояло в том, чтобы сбросить минимальную высоту при печати следующим образом:
@media print {
.wizard-content{
min-height: 0;
}
}
обновление 2016:
Ну, я получил эту проблему, когда у меня было
overflow:hidden
на моем div.
после того, как я составила
@media print {
div {
overflow:initial !important
}
}
все стало просто прекрасно и идеально
похоже, что это относительно недавно (февраль 2014 года) обсуждалось (на старом билете ошибки 2005 года) на трекере ошибок webkit
Если вы используете Chrome с Bootstrap Css, классы, которые контролируют макет сетки, например col-xs-12 и т. д., используют "float: left", который, как указывали другие, разрушает разрывы страниц. Удалите их со страницы для печати. У меня получилось. (В версии Chrome = 49.0.2623.87)
есть эта проблема. Так много времени прошло... Без боковых полей страницы это нормально, но когда появятся поля, страница и" пространство разрыва страницы " будут масштабироваться. Таким образом, с обычным полем в документе это было показано неправильно. Я исправляю это с помощью set
width:100%
и использовать
div.page
{
page-break-before: always;
page-break-inside: avoid;
}
использовать его на первой строке.
насколько я знаю, единственный способ получить правильные разрывы страниц в таблицах с Google Chrome-это дать его элементу <tr>
свойства дисплей: инлайн-таблицы (или дисплей: встроенный блок, но он лучше подходит в других случаях, которые не являются таблицами). Также следует использовать свойства "page-break-after: always; page-break-inside: avoid;" как написано @Phil Ross
<table>
<tr style="display:inline-table;page-break-after: always; page-break-inside: avoid;">
<td></td>
<td></td>
...
</tr>
</table>
Он работал для меня, когда я использовал обивка как:
<div style="padding-top :200px;page-break-inside:avoid;">
<div>My content</div>
</div>