Решение нам дает CSS. Оказывается, можно назначить таблицы стилей отдельно для различных типов устройств! По умолчанию таблица стилей назначается для all – для всех устройств одна. Нас интересует два варианта – для вывода на экран в браузере и принтера.
Задать это можно так:
@media screen {
body {
font-family: verdana,sans-serif;
font-size: 1em;
}
..другие стили для дисплея..
}
@media print {
body {
font-family: times, serif;
font-size: 12pt;
}
.. другие стили для принтера..
}Это для тэга <style>
Если Вы хотите подгружать файл со стилем, то так:
<link href="styles.css" media="screen" rel="stylesheet" type="text/css"> <link href="stylep.css" media="print" rel="stylesheet" type="text/css">
Ну а если хотите импортировать стиль внутри тэга <style>, то так:
<style type="text/css">
@import url("stylep.css") print;
body {
font-family: verdana, sans-serif;
font-size: 1em;
}
</style>В дополнение к этому, ту часть таблицы стиля, которая используется и в версии для печати и на сайте можно выделить в один общий блок, который можно подгрузить так:
<link href="stylea.css" media="all" rel="stylesheet" type="text/css">
или так:
@media screen, print {
body {
font-decoration: none;
}
..other style sheet rules for both..
}Теперь нам остается назначить классы тем элементам, которые печатаются некорректно или вовсе не нужны при печати, записать два (или три) стиля и сделать ссылку на версию для печати:
<a href=javascript:window.print()>Распечатать страницу</a>
В принципе, ссылку можно и не ставить. Все!
Некоторые замечания:
Ширина поля для печати 450 пикселей, соответственно, если все содержимое страницы заключено в таблицу, то задаем ей класс (или id) и пишем в версии для печати: width: 450px;
Те элементы страницы, которые не нужны при печати (например, меню) можно скрыть, назначив им: display: none;
Дополнительный материал по теме можете найти здесь:http://www.gurusnetwork.com/tutorial/css_print/ (на английском)
В принципе, в этом и на первый взгляд ничего сложного – подумаешь – немного переверстать текст, записать его в новый файл и связать с оригиналом ссылкой? Но это только на первый взгляд. А если страниц не одна а 1000? Это довольно долго. Высокие затраты времени и сил. Ну и денег. Поэтому необходимо найти какой-то более легкий способ.