Заметки программиста

Каждый будний день, ровно в 9, я пишу о себе, о своей работе и о технологиях web программирования123

Версия для печати, как показывает практика, пользуется популярностью у пользователей, часто человеку проще распечатать таблицу с товарами на сайте или понравившуюся новость чтоб позже спокойно прочитать.

Традиционно сложилось что «Версия для печати» доступна либо по соответствующей ссылке, либо через CSS media=»print» который отвечает за стили страницы при ее печати. Первый способ позволяет легко выводить данные как угодно, в то время как второй ограничен средствами CSS, т.е. на печать отправляется та же страница, но с другим CSS файлом. Я рассмотрю первый способ, так как он наиболее гибкий и позволяет выводить данные как угодно.

Элементы

Версия для печати не предполагает навигационных элементов типа меню, ссылок, форм, контролов и других интерфейсных компонентов. Связано это, конечно, с тем что на бумаге они становятся совершенно бесполезными.

Цвета никакие другие как: фон — белый, текст — черный либо темно-серый. Большинство принтеров в мире черно-белые.

В версии для печати обязательно должен присутствовать логотип сайта, если он есть в полной версии, и должен быть ссылкой на главную страницу, на печать это никак не повлияет, но нужно дать пользователю простую и естественную возможность уйти на главную страницу.

Элементы: дата, адрес страницы и номер печатной страницы, добавляются автоматически на полях версии для печати.

Компановка контента

Содержание страницы важно оформить читабельно, это же главная цель. Если изображения или иллюстрации имеют высокую значимость для содержания их нужно выводить крупно, так как на бумаге нет возможности увеличения.

Таблицы, главы, разделы или просто абзацы текста, которые лучше помещать целиком на отдельную печатную страницу, необходимо отделить специальным разделителем:
CSS:

.pagebreak {
    page-break-after: always;
}

HTML:

<br class="pagebreak" />

Весь контент ниже разделителя будет начинаться с новой страницы.

Вывод на печать

Печатать можно несколькими способами, самые популярные:

  1. Печать через меню браузера, как правило Файл->Печать.
    Самый жуткий способ, но при отключенном JavaScript – единственный.
  2. Диалог печати открывается сразу после того как открывается страница с версией для печати.
    Тоже не идеальный, человек должен вначале увидеть что он печатает.
  3. Печать по нажатию кнопки Печатать.
    По моему мнению это самый лучший способ и его использует большинство более или менее качественных сайтов в интернете, но есть ряд нюансов. Кнопка должна быть заметна для пользователя, и после открытия диалога ее нужно обязательно спрятать, иначе она будет отображаться на печатной версии.

Как вариант я предлагаю свой способ решения этой проблемы — эмитация оповещения браузера. Я так делал на одном из последних проектов, смотрим что получилось. Привлекает внимание пользователя, располагает к действию, и в тоже время как бы не участвует в жизни страницы. Код можно посмотреть там же.

This website uses IntenseDebate comments, but they are not currently loaded because either your browser doesn't support JavaScript, or they didn't load fast enough.

Comments

There are 5 comments for this post.

  1. Не пропусти! : Заметки программиста on Сентябрь 5, 2008 9:22 дп

    [...] «Версия для печати» [...]

  2. zlyuk on Май 12, 2009 9:44 дп

    Хотелось бы увидеть готовый набор скриптов для создания версии для печати, а не выковыривать их по кусочкам со страницы-примера

  3. Андрей on Июль 1, 2009 9:28 дп

    А что тут выковыривать, берешь свой голый контент, сверху, по желанию, ставишь шапку (корректного размера). Показываешь по ссылке "Версия для печати" с открытием в новом окне. Не забывай про фоновые рисунки (их не будет).

    А если ты про скрипт генерации контента, то он у каждого свой…

  4. Dr.Kertz on Август 23, 2009 10:45 пп

    Для того чтобы не выводить кнопку "печать" на печать, можно еще так сделать:

    <style type="text/css" media="print">
    button {display: none; }
    </style>
    и сама кнопка: <button onclick="window.print();">Печать</button>

  5. Антонов Андрей on Август 24, 2009 6:03 дп

    *THUMBS_UP*

Write a Comment

Let me know what you think?