Все статьи
24 сентября 2026 г.9 мин чтения

Как подготовить веб-статью к печати: CSS, поля и разрывы страниц

Как подготовить веб-статью к печати: CSS, поля и разрывы страниц

Веб-статью можно подготовить к печати отдельными стилями CSS: убрать навигацию и кнопки, оставить основной текст, задать поля листа и управлять разрывами страниц. Это помогает читателю получить чистую бумажную копию или PDF без лишних экранных элементов. Ниже — практический порядок настройки и проверки, который не меняет обычный вид страницы.

Что меняется при печати веб-страницы

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

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

CSS различает экран и печать через тип медиа print. Правила внутри @media print применяются при печати или просмотре будущего PDF; @page задаёт размер, ориентацию и поля страниц. Эти средства описаны в документации MDN: печать в CSS и правило @page.

Сначала определите, что должно попасть на лист

Перед написанием CSS откройте статью как редактор: пройдите сверху вниз и отметьте каждый тип блока. У обычной статьи это заголовок и дата, лид, основной текст, изображения, подписи, цитаты, врезки, списки, таблицы, ссылки, блок автора и служебные элементы сайта. Решение можно зафиксировать в короткой матрице: оставить, упростить или убрать.

  • Оставьте материал, который нужен для понимания: заголовки, основной текст, подписи, таблицы и значимые примечания.
  • Упростите элементы, которые полезны, но занимают слишком много места: длинную навигацию по статье можно скрыть или заменить коротким содержанием.
  • Скройте только экранные действия: меню сайта, кнопки, поля формы, всплывающие подсказки и декоративные панели.

Важно проверить структуру, а не только классы оформления. Если блок автора или подпись к рисунку находится внутри контейнера, который целиком скрывается как «карточка», информация пропадёт вместе с ним. Начинайте с перечня семантических частей и проверяйте область действия селектора в DOM. Узкий селектор вроде .site-header надёжнее, чем универсальное правило для всех header: внутри статьи тоже могут быть заголовки секций.

Создайте отдельный слой правил для print

Печатные стили можно добавить в общую таблицу или подключить отдельным файлом с атрибутом media="print". Для небольшого блога проще начать с одного блока в конце основной таблицы: так легче заметить конфликтующие правила. Для сайта с несколькими шаблонами отдельный print.css упрощает поддержку, но нужно убедиться, что он действительно загружается и не зависит от отключённых экранных файлов.

Внутри печатного блока сначала задайте правила видимости, затем поток и типографику основного материала. Не полагайтесь на случайные экранные стили: фиксированная ширина контейнера, высота вьюпорта, sticky-позиционирование, сетка из двух колонок и overflow могут мешать разбиению на страницы. Переопределите только свойства, которые создают проблему; общее сбрасывание всех стилей часто убирает полезные отступы, контраст и различия уровней заголовков.

Базовая заготовка может выглядеть так:

@media print {
  .site-header, .site-nav, .share-actions, .newsletter, .site-footer {
    display: none !important;
  }
  main {
    width: auto;
    max-width: none;
    margin: 0;
  }
}

Замените классы на реальные имена компонентов своего сайта. Не скрывайте весь footer автоматически: он может содержать библиографию или полезные сведения об авторе.

Настройте лист и ширину текста

Правило @page позволяет задать размер и поля печатного листа. Например, @page { size: A4; margin: 18mm; } задаёт распространённый лист A4 и оставляет поля для печати и заметок. Это исходная настройка, а не гарантия одинакового результата: браузер и драйвер принтера могут предложить собственные поля, масштабирование или формат бумаги, а пользователь вправе изменить параметры в диалоге печати.

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

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

Разрывы: помогите браузеру, но не нарезайте статью вручную

Пагинация — совместная работа браузера и CSS. Свойства break-before, break-after и break-inside задают предпочтения перед элементом, после него и внутри него. Браузер учитывает эти пожелания вместе с доступным местом, поэтому break-inside: avoid не означает, что любой объект будет удержан целиком: если он выше страницы, разрыв всё равно понадобится. Современные свойства описаны в руководстве MDN по фрагментации CSS.

Самое полезное правило для статьи — не оставлять заголовок без следующего содержимого. Примените break-after: avoid к H2 и H3 или break-before: avoid к первому абзацу после них, затем проверьте реальный браузер. Для короткой подписи с небольшим изображением можно попросить браузер не разрывать figure внутри страницы. Не ставьте запрет разрыва на длинный раздел целиком: браузеру придётся переместить весь раздел на новый лист, оставляя большие пустые участки.

Примерный набор ограничений:

@media print {
  h1, h2, h3 { break-after: avoid; }
  figure, blockquote, pre, table { break-inside: avoid; }
  img { max-width: 100%; height: auto; }
}

Селекторы здесь иллюстративны. Таблица на несколько страниц должна иметь возможность продолжиться; запрет разрыва годится для компактных таблиц, а не для любого содержимого. При необходимости проверьте повтор заголовков таблицы и то, что длинные значения не выходят за край листа.

Не ставьте принудительный разрыв после каждого H2 только ради аккуратного начала разделов. Такой приём превращает короткую статью в пачку полупустых листов. Принудительный break-before: page уместен, когда смысл требует новой страницы — например, отдельное приложение или форма для заполнения. Для обычных разделов предпочтительнее не заставлять браузер разрывать поток, а избежать одного-двух особенно неудачных разрывов.

Ссылки, изображения и длинные фрагменты

На бумаге ссылки перестают быть кликабельными. Если читателю необходимо перейти к источнику после печати, оставьте смысловой текст ссылки и подумайте, нужна ли печатная версия URL. Выводить каждую ссылку целиком через CSS часто неудачно: длинные адреса перегружают абзац, дублируют ссылки на общие страницы и раскрывают параметры отслеживания. Для критичных ссылок лучше дать редакторское решение: сноску, короткий список источников или URL только для внешних ссылок, которые действительно нужно открыть.

Изображение должно помещаться в доступную ширину и сохранять пропорции. Если важная информация заключена в цвете, контуре или мелком тексте внутри изображения, чёрно-белая распечатка может её потерять. Подпись стоит удерживать рядом с изображением, но крупная галерея или декоративный фон может быть скрыт, если не несёт содержания. Фоновая графика зависит от настроек диалога печати, поэтому не прячьте смысловые данные исключительно в фоновых элементах.

Длинный URL, код или непрерывный идентификатор может растянуть страницу за печатную область. Разрешайте перенос там, где он не меняет смысл: обычные слова и адреса можно переносить, а код лучше сохранять читаемым через горизонтальное масштабирование или отдельный переносимый вариант. Если команда использует собственный шрифт, проверьте, что нужные начертания успевают загрузиться перед формированием PDF; сохраняйте запасной стек, чтобы подмена не разрушила ширину важных строк.

Пошаговая проверка перед выпуском

  • Откройте печатный предпросмотр той же статьи в браузере и просмотрите все страницы, а не только первую.
  • Проверьте отсутствие меню, кнопок и повторяющихся интерфейсных панелей; убедитесь, что важные подписи и источники остались.
  • Найдите заголовки внизу страницы, одинокие строки, разорванные таблицы и оторванные подписи.
  • Попробуйте другой масштаб и формат листа, затем сохраните PDF и проверьте его отдельно.
  • Распечатайте одну пробную страницу, если материал предназначен для регулярной бумажной выдачи.

Предпросмотр — обязательная часть настройки, потому что браузер применяет свои ограничения и пользователь может менять цвет, поля и масштаб. Проверяйте не один тестовый пример, а разные типы контента: статью с длинным заголовком, таблицей, цитатой, кодом, сносками и высоким изображением. Если сайт формирует PDF сервером, проверка только в браузере недостаточна: движок генерации и его версия могут иначе интерпретировать CSS пагинации.

Частые ошибки

  • Скрыть все header и footer по тегу и случайно убрать заголовки разделов либо источник материала. Ограничивайте правила классами компонентов сайта.
  • Сделать страницу идеальной только при включённой печати фона. Смысл должен читаться без фоновых цветов и картинок.
  • Запретить разрыв внутри всех блоков. Длинные элементы всё равно распадутся, а соседние листы могут получить большие пустоты.
  • Задать фиксированную высоту или ширину экранного макета и удивляться обрезанному тексту. Для печати уберите ограничения, связанные с viewport.
  • Предположить, что пользователь печатает строго A4. Проверьте настройки страницы, масштаб и допустимое отклонение от заданных полей.

Короткий чек-лист

  • Есть отдельные правила @media print, и они не меняют экранный макет.
  • Навигация и действия скрыты, а заголовок, дата, текст, подписи и нужные источники остаются.
  • @page задаёт разумные размеры и поля, но контент не зависит от их точного значения.
  • Разрывы смягчены у заголовков и компактных блоков; длинные разделы могут продолжаться.
  • Чёрно-белый вывод, PDF и разные типы статей проверены в предпросмотре.

Часто задаваемые вопросы

Нужна ли отдельная таблица стилей для печати?

Не обязательно. Для небольшого проекта достаточно блока @media print в основной таблице. Отдельный print.css удобен, если у сайта много шаблонов и печатные правила нужно поддерживать независимо; подключайте его с media="print" и проверьте, что браузер действительно получает файл.

Можно ли принудительно сделать каждую статью формата A4?

Можно указать размер листа в @page, но фактический результат зависит также от диалога печати, принтера и предпочтений читателя. Лучше задавать разумную отправную точку и проверять, что текст остаётся читаемым при другом масштабе и доступной ширине.

Как не разрывать заголовок и следующий абзац?

Задайте заголовку break-after: avoid или первому следующему блоку break-before: avoid внутри @media print. Затем проверьте несколько страниц: браузер трактует значения как ограничения пагинации, а не как абсолютную гарантию при любом размере содержимого.

Стоит ли скрывать изображения при печати?

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

Как проверить печатные стили без принтера?

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

Нужно ли печатать полный адрес каждой ссылки?

Нет. Полные URL у каждой ссылки могут сделать текст шумным и раздуть страницу. Оставляйте их для значимых внешних источников, к которым читатель должен перейти после печати; внутренние ссылки обычно можно оставить как читаемый текст или заменить списком источников.

Сохранится ли веб-шрифт в PDF?

Это зависит от способа создания PDF и от того, успел ли браузер загрузить веб-шрифт. Проверьте предпросмотр после завершения загрузки и оставьте подходящий системный запасной шрифт. Если сайт создаёт PDF сервером, тестируйте именно этот генератор и версию его движка.

Итог

Хорошая печатная версия сохраняет содержание веб-статьи и убирает помехи экранного интерфейса. Начните с решения, какие части нужны на бумаге, задайте отдельные правила для print, аккуратно настройте поля и разрывы, затем проверьте несколько страниц в PDF-предпросмотре. Если статья использует авторский рукописный шрифт, Fontgenerator поможет создать его для акцентов и проверить начертание в будущих материалах.