При печати таблицы с сайта пропадают строки: проверка

Если при печати таблицы с сайта пропадают строки, сначала проверьте ограничения её экранного контейнера. Фиксированная высота и скрытая область за границами могут оставить в печатном результате только видимый фрагмент. Отдельные печатные стили должны раскрывать нужное содержимое, но исправление принимают по всему полученному документу, а не по первому листу.
В учебной проверке ниже используется таблица из девяноста вымышленных строк. Она печатается в PDF установленным Chromium на листы A4. Это ограниченный воспроизводимый пример: результат не гарантирует одинаковую работу других браузеров, драйверов и физических принтеров. Проверяется именно HTML-представление длинного списка, а не распознавание сканов, бухгалтерская форма или юридическая действительность документа.
Разделите состав данных и способ их показа
До правки CSS выясните, сколько строк действительно находится в печатаемом документе. Интерфейс может показывать одну страницу списка или подгружать элементы при прокрутке. Если остальных записей в подготовленном представлении нет, снятие ограничения высоты их не создаст. Для печати всего отчёта нужен согласованный способ получить весь требуемый набор.
В нашем примере все девяносто строк заранее присутствуют в HTML. Поэтому потерю можно исследовать отдельно от запроса данных. У строк есть условные номера TESTROW-001 … TESTROW-090. Они позволяют сравнить состав результата, не используя настоящие имена клиентов, суммы счетов или другие сведения из рабочей системы. Последний номер также помогает заметить обрезанный хвост.
Если отчёт строится по фильтру, сохраните его условия рядом с заголовком печатного представления. Число записей должно относиться к этому набору. Девяносто строк на экране всех заявок и девяносто строк после другого фильтра ещё не доказывают совпадение состава. Для приёмки полезнее перечень учебных идентификаторов, а не одно равное количество.
Воспроизведите обрезание на маленьком примере
Контейнер учебной таблицы получил высоту 180 пикселей и overflow:hidden. При печати без специального переопределения из PDF удалось извлечь только три строки. Получился один лист, последней строки TESTROW-090 в нём не было. Это конкретное наблюдение на данной разметке и версии браузера, а не правило, что любая высота 180 пикселей всегда даёт три строки.
Затем для печати контейнеру задали height:auto и overflow:visible. Остальные условия примера сохранили. Полученный PDF занял четыре листа; извлечённый текст содержал все девяносто уникальных номеров, каждый по одному разу. Заголовки колонок присутствовали на каждом листе. Последнюю страницу дополнительно просмотрели как изображение, чтобы проверить видимый конец таблицы.
| Проверка | Экранное ограничение сохранено | Печатное ограничение снято | Граница вывода |
|---|---|---|---|
| Страниц PDF | 1 | 4 | Только выбранная учебная разметка |
| Найденных уникальных строк | 3 | 90 | Сверены условные номера |
| Последняя строка 090 | Отсутствует | Присутствует | Не заменяет проверку всех значений |
| Заголовков колонок | 1 | 4 | Повтор проверен в этом браузере |
Печатные стили должны менять только нужное представление
MDN описывает print как отдельный тип медиа для стилей печатного вывода. В такой области можно изменить раскладку, скрыть навигацию и подготовить документ к листу. Это позволяет сохранить удобную экранную прокрутку, не перенося её ограничения в печать. При этом обычные правила приоритета CSS продолжают иметь значение.
Проверьте не только саму таблицу, но и её родителей. У одного блока может остаться максимальная высота, у другого — обрезание, у третьего — позиционирование, рассчитанное на экран. Универсальное снятие всех стилей тоже опасно: оно способно разрушить ширину колонок и понятность документа. Вносите изменения по наблюдаемой причине и сравнивайте результат после каждого шага.
Спрячьте кнопки фильтра и меню там, где они не нужны на бумаге, но сохраните значения применённых условий. Иначе читатель увидит таблицу без ответа, за какой период она составлена. Кнопка «следующая страница» не помогает получить остальные записи в PDF. Если печатный набор намеренно ограничен, явно обозначьте это в его заголовке.

Заголовки колонок и разрывы проверяют раздельно
Для длинной таблицы используйте понятную табличную структуру с отдельной группой заголовков. В учебном примере thead с табличным отображением повторился на четырёх страницах. Это наблюдение следует подтвердить на целевых браузерах проекта. Экранное прилипание шапки при прокрутке само по себе не является проверкой повторения заголовка на печатных листах.
Свойство break-inside управляет разрывами внутри создаваемого блока. Для подходящих строк можно рассмотреть avoid, но нельзя обещать сохранение любого содержимого целиком. Если одна строка выше доступного листа, требуется отдельное решение по её представлению. Запрет разрывов не увеличивает физическую высоту страницы и не делает чрезмерно длинный комментарий коротким.
Не ставьте запрет разрыва на всю многолистную таблицу, рассчитывая получить аккуратный документ автоматически. Проверяйте строки с длинным текстом, несколько связанных итогов и переход перед новой группой. Часто удобнее повторить важный идентификатор или изменить представление большого примечания, чем пытаться удержать слишком крупный блок на одном листе.
Читаемость нельзя заменить уменьшением всего листа
Таблица может сохранить все строки и всё равно остаться непригодной: правая колонка обрезана, суммы слились с единицами, текст уменьшен до неразличимого размера. Для широкой формы заранее определите, какие поля обязательны в печатной версии. Иногда нужен другой порядок колонок или отдельное подробное приложение, а не бесконечное уменьшение масштаба.
Добавьте в учебные данные длинное название, пустую ячейку, многострочное примечание и значение, которое не помещается в привычную ширину. Проверьте переносы и связь значений со своей строкой. Извлечённый текст помогает найти пропуски, однако не подтверждает правильность визуальной раскладки. Поэтому автоматическую сверку состава дополняют просмотром начала, середины и конца документа.
Настройки листа, поля и масштаб фиксируйте в протоколе. Один и тот же HTML способен получить другую пагинацию при изменении этих условий. Если продукт обещает поддержку нескольких вариантов печати, проверяйте каждый предусмотренный вариант. Не выдавайте удачный PDF из одного браузера за испытание всего оборудования заказчика.
Когда проблема начинается до вызова печати
Изображения и шрифты могут подгружаться отдельно, а данные отчёта — появляться после запроса. Печатное представление должно иметь понятное состояние готовности. Нажатие кнопки в момент частичной подготовки не должно молча создавать документ с неполным набором строк. Если подготовка закончилась ошибкой, покажите её вместо уверенного приглашения печатать пустую форму.
Для виртуализированного списка сначала определите источник печатного набора. Экран может держать в разметке лишь небольшой участок ради удобства прокрутки. Печатная версия требует самостоятельного состава либо предусмотренного полного вывода. Это отдельная задача приложения; CSS не восстанавливает записи, которых нет в его документе.
При изменении фильтра во время подготовки исключите смешение условий. Заголовок «за сентябрь» и строки, загруженные по новому октябрьскому выбору, образуют противоречивый отчёт. Можно зафиксировать параметры одной подготовки и показать их пользователю либо явно начать новую. Главное — не соединить подпись от одного состояния с данными другого.
Как принять исправление без настоящих документов
Подготовьте короткий список, многолистный набор и набор с одной очень длинной строкой. Для каждого запишите ожидаемый состав и настройки печати. Сверьте идентификаторы, повтор заголовков, начало и конец таблицы, правую границу и читаемость примечаний. Затем отдельно испытайте нужный физический вывод, если он входит в требования проекта.
Сохраните тестовый HTML, CSS и полученный PDF вместе с версией браузера. Это позволит повторить проверку после изменения общей вёрстки. Вопросы текстового слоя и порядка копирования продолжает статья о проверке готового PDF. Здесь исправление считается подтверждённым, когда выбранное печатное представление сохраняет нужный состав и остаётся читаемым в согласованных условиях.
Материалы для проверки
Если нужна реализация
Состав работ зависит от текущего проекта и подтверждённой причины. Можно обсудить диагностику или разработку подходящего решения.
Вопросы и ответы
Почему на экране строки есть, а на бумаге нет?
Проверьте ограничения контейнеров и состав самого печатного документа. Скрытая область или неполная подгрузка требуют разных исправлений.
Можно исправить печать только свойством overflow?
Иногда причина действительно в обрезании, как в учебном примере. Но отсутствующие данные, ширина колонок и неподходящие разрывы этим не исправляются.
break-inside:avoid гарантирует целую строку на листе?
Нельзя обещать это для любого содержимого и движка. Особенно нужно проверить строку, которая сама превышает доступную высоту страницы.
Если в PDF есть все номера, проверка завершена?
Нет. Дополнительно смотрят читаемость, порядок колонок, переносы и необходимые условия физической печати. Наличие текста не доказывает правильную раскладку.