Во-первых, я стараюсь заставить всех своих пользователей использовать Chrome при печати, потому что другие браузеры создают разные макеты.
Ответ от на этот вопрос рекомендует:
@page {
size: 210mm 297mm;
/* Chrome sets own margins, we change these printer settings */
margin: 27mm 16mm 27mm 16mm;
}
Однако в итоге я использовал этот CSS для печати всех моих страниц:
@media print
{
@page {
size: A4; /* DIN A4 standard, Europe */
margin:0;
}
html, body {
width: 210mm;
/* height: 297mm; */
height: 282mm;
font-size: 11px;
background: #FFF;
overflow:visible;
}
body {
padding-top:15mm;
}
}
Особый случай: длинные столы
Когда мне нужно было напечатать таблицу на нескольких страницах, margin:0
с @page
приводил к кровоточащим краям:
Я мог бы решить это благодаря этому ответу с:
table { page-break-inside:auto }
tr { page-break-inside:avoid; page-break-after:auto }
thead { display:table-header-group }
tfoot { display:table-footer-group }
Плюс установка верхних и нижних полей для @page
:
@page {
size: auto;
margin: 20mm 0 10mm 0;
}
body {
margin:0;
padding:0;
}
Результат:
Я бы предпочел решение, которое является кратким и работает со всеми браузерами. Пока, я надеюсь, что приведенная выше информация может помочь некоторым разработчикам с подобными проблемами.