Настройка отступов при печати HTML-страницы с помощью CSS

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Чтобы устранить стандартные отступы при печати, примените следующий код:

CSS
Скопировать код
@media print {
  /* Предотвращаем выход контента за границы страницы */
  @page { margin: 0; } 
  /* Обеспечиваем достаточное пространство для содержимого */
  body { margin: 20mm; } 
}

Данный фрагмент CSS-кода вначале обнуляет отступы страницы, затем устанавливает отступ в 20 мм для элемента body, чтобы контент оставался видимым при печати.

Теперь давайте подробнее разберёмся в указанных методиках создания идеальных версий страниц для печати.

Кинга Идем в IT: пошаговый план для смены профессии

Золотой стандарт настройки стилей для печати

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

Универсальное решение: директива @page

Используйте директиву @page для определения отступов бумаги при печати:

CSS
Скопировать код
/* Установка отступов для всей страницы */
@page {
  /* Задаём оптимальные глобальные отступы */
  margin: 1cm; 
}

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

Более детальная настройка: @media print

Для точной настройки отступов печатного контента можно использовать следующий манёвр:

CSS
Скопировать код
@media print {
  body {
    /* Создаем необходимое пространство для всех элементов */
    margin: 15mm 10mm;
  }
}

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

Когда @page работает некорректно

Директива @page является отличным инструментом для стилей печати, однако браузеры могут интерпретировать его по-разному.

Например, Internet Explorer, начиная с 7-й версии, может изменять масштаб вашего макета для печати. Этот параметр пользователю придётся отключить в настройках печати браузера, так как CSS-настройки здесь не работают. Поддержка @page в Safari также ограничена.

Но не стоит беспокоиться! Если @page не работает как нужно, вот универсальный код для Chrome:

CSS
Скопировать код
@media print {
  /* Специально для пользователей Chrome */
  body { margin: 20mm; } 
}

Это решение поможет пользователям Chrome, когда директива @page не обеспечивает ожидаемого результата.

Особые настройки для объёмного контента

Если вам нужно напечатать страницу с большим количеством контента, поля page-break помогут справиться с этой задачей:

CSS
Скопировать код
.division {
  /* Если вам нужен полный контроль над разрывами страницы */
  page-break-before: always; 
}

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

Внимание к деталям: высота и ширина

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

Расширяем возможности с помощью @page

Если ваша версия для печати требует особых настроек, правило @page позволит создать именованные страницы для дополнительного контроля:

CSS
Скопировать код
@page WideMarginPage {
  /* Подготавливаем пространство для задумчивых обращений */
  size: A4;
  margin: 1cm;
}

@media print {
  .wide-section {
    /* Применяем стиль 'WideMarginPage' */
    page: WideMarginPage;
  }
}

Так класс .wide-section будет печататься на страницах определённого формата с заданными отступами для "WideMarginPage".

Визуализация

Представьте, что вы оформляете картину (<body>), вокруг которой нет отступов при её просмотре (или печати).

Markdown
Скопировать код
             🖼️
До:    |🏞️        🏞️|  
        |              |  
      (без отступов)

Создав рамку, вы обеспечиваете пространство "для дыхания", и это влечёт за собой что?

Markdown
Скопировать код
              🖼️
После: |   🏞️   🏞️  |  
        |             |  
      (с отступами)

Замените 🏞️ на ваш HTML-контент, а 🖼️ на правило @page, чтобы установить нужные отступы при печати и... вуаля! 🎨✨

Полезные материалы

  1. @page – CSS | MDN — официальное руководство Mozilla по использованию отступов при печати.
  2. Print Style Sheet Setup — Smashing Magazine — советы по созданию стилевых файлов для печати от Smashing Magazine.
  3. 'html+printing+css' Q&A – Stack Overflow — советы и рекомендации по использованию CSS для печати на страницах Stack Overflow.
  4. Unraveling the Table Element | CSS-Tricks — всё, что нужно знать о работе с HTML-таблицами для корректного отображения при печати.
  5. Crafting Printer-friendly Pages with CSS — SitePoint — ключевые принципы оформления страниц, удобных для печати, от SitePoint.
  6. Printable Pages Made Easier – DigitalOcean — методы и примеры создания страниц в HTML, оптимизированных для печати, включая настройку отступов.