Перейти к содержимому
Все статьи
Разработка

PDF-отчёт режет таблицу: как задать правила страниц

·27 октября 2026 г.· 6 мин чтения
Сколько будет стоить ваш проект?Рассчитать стоимость

Чтобы PDF-отчёт не разрезал таблицу непонятным образом, задайте правила страниц до выбора отдельного CSS-свойства: что переносится целиком, где повторяется шапка и как выглядит строка выше доступной высоты страницы. Затем проверьте эти правила на конечном файле выбранного генератора. Универсальное уменьшение шрифта скрывает симптом, но не определяет правильное поведение документа.

Читатель должен понимать каждую страницу отдельно

Представим учебный отчёт по выдаче оборудования: список записей, комментарии к отдельным строкам и общий итог. Когда таблица продолжается на следующей странице без заголовков, читатель вынужден возвращаться назад, чтобы понять значение столбцов. Если перенос отрывает комментарий от записи, он может отнести его к другому объекту. Это уже ошибка смысла, даже если ни один символ не обрезан.

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

Соглашение о переносах

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

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

Набор данных, который проверяет макет

Таблица ниже — собственный приёмочный набор. Объёмы условные: точная граница зависит от шрифта, полей, генератора и содержания. Важны классы ситуаций, а не единственное красивое число строк.

Учебный наборШапкаДопустимый разрывИтогиЧто проверить
Нет записейПонятный контекст отчётаНе требуетсяНе подставлять вымышленные данныеСообщение об отсутствии результата и применённые условия
Короткая таблицаНа первой страницеНе нужен внутри записиПо выбранному правилу под таблицейОтсутствие лишнего пустого листа
Обычная запись на нижней границеНа следующем листе при продолженииПеренос целиком, если это согласованоНе повторять общий итогНет обрезанного текста и потерянной записи
Примечание выше одной страницыС контекстом продолженияПо специальному правилу длинной записиПосле завершения соответствующих данныхЯсная принадлежность фрагментов одной записи
Группа переходит на другой листПовторяемый контекст группы и столбцовПо принятой структуре группыОтличать подытог группы от общегоНет пустого заголовка внизу без данных
Широкая таблицаВсе нужные названия различимыРешение по ширине отдельно от высотыВ пределах читаемого макетаНе потеряны правые столбцы и единицы измерения

Почему break-inside: avoid не является всей настройкой

В MDN break-inside описывает управление разрывами внутри блока и взаимодействует с break-before и break-after. Принудительный разрыв имеет свой приоритет. Поэтому добавление avoid к одному контейнеру нельзя считать проверкой всех правил отчёта, особенно когда другие стили требуют начала новой страницы.

Спецификация CSS Fragmentation предусматривает ослабление ограничений разрыва, когда иначе содержимое не помещается. Следовательно, запрет не делает произвольный объём текста физически помещающимся на листе. Поддержку свойств и поведение сложной таблицы нужно подтверждать в выбранном движке и его версии, а не по результату другого браузера.

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

Шапка, итог и примечание не должны менять смысл

Повтор заголовков

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

Итоговые значения

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

Примечания и ссылки

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

Как принять экспорт, а не скриншот

  1. Сохраните учебные входные данные и ожидаемые результаты расчёта. Макет должен проверяться на воспроизводимом наборе.
  2. Сформируйте конечный PDF тем же способом, который будет использовать приложение. Зафиксируйте генератор, его конфигурацию и параметры документа.
  3. Просмотрите первые, промежуточные и последние страницы. Отдельно проверьте переходы групп и продолжение самой длинной записи.
  4. Сверьте количество записей и итоги с исходным набором. Визуально ровная таблица ещё может терять данные.
  5. Проверьте чтение на другом согласованном просмотрщике и печатный сценарий, если он нужен заказчику. Снимок одной страницы не заменяет файл.
  6. Повторите проверку после изменения шаблона или генератора. Сохраните проблемный пример как часть приёмочного комплекта.

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

Вопросы и ответы

Как задать разрывы таблицы при HTML to PDF?

Сначала определите, какие части переносятся целиком и как оформляется продолжение. Затем настройте средства конкретного генератора и проверьте крайние данные в конечном PDF.

Как повторять заголовок таблицы в PDF?

Используйте предусмотренный выбранным движком механизм и задайте состав повторяемой шапки. Подтвердите результат на документе с несколькими страницами: одинаковое поведение всех генераторов не гарантируется.

Почему break-inside: avoid не работает как ожидалось?

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

Нужна помощь с проектом?

Обсудим задачу и предложим решение — от сайта до SaaS и защиты.

Связаться