Предположим, что report.html - это страница, которую вы хотите распечатать. Разработайте страницу таким образом, чтобы она принимала аргумент медиа как параметр GET. то есть что-то вроде yoursite.com/report.html?media=X
- где X может быть 'screen'
, 'print'
и т. д. Если X пусто, он может использовать значение по умолчанию 'screen'
Запишите 2 файла css, а именно screen.css и print.css. В зависимости от этого значения аргумента media (X) импортируйте на свою страницу либо screen.css, либо print.css.
В screen.css напишите ваши определения стиля в блоке '@media screen', например:
@media screen {
body {
... screen style here ...
}
}
В print.css напишите ваши определения стиля в блоке '@media screen, print', например:
@media screen, print {
body {
... print style here ...
}
}
Предположим, что в вашем report.html есть кнопка печати, в ее onclick
вызовите window.open('report.html?media=print', ...)
. Также сделайте то же самое с обработчиком клавиш, прикрепленным к объекту вашего документа при получении Ctrl + P.
Кроме того, в onload
вашей страницы проверьте, является ли аргумент media 'print', и если это так, после небольшой задержки (скажем, 500 мс) вызовите window.print()
, то есть что-то вроде:
if(window.location.href.indexOf('media=print')!=-1) {
setTimeout(function() { window.print(); }, 500);
}