Я создаю отчет в формате PDF с HTML-страницы с одной таблицей .
Для этой цели я использую wkhtmltopdf .
когда создается pdf, он ломается где угодно в теге tr .
Я хочу этого избежать.
источник
Я создаю отчет в формате PDF с HTML-страницы с одной таблицей .
Для этой цели я использую wkhtmltopdf .
когда создается pdf, он ломается где угодно в теге tr .
Я хочу этого избежать.
Обновление 17.09.2015: проверьте версию, которую вы используете: говорят, что wkhtmltopdf 0.12.2.4 решает проблему (я не проверял) .
Это известная проблема в wkhtmltopdf. Алгоритм разбиения страниц, используемый webkit (WK в WKhtmltopdf), не очень хорошо работает для больших таблиц. Я предлагаю разбить таблицу на более мелкие части, которые легче разделить на страницы и много использовать css:
table, tr, td, th, tbody, thead, tfoot {
page-break-inside: avoid !important;
}
Также обратите внимание на следующие вопросы wkhtmltopdf, у них есть интересные комментарии, в которых обсуждается, например, проблема разделения таблицы. Существует решение JS, которое программно разделяет таблицы на 168, что может вам помочь (хотя я его не использую).
Обновление 08.11.2013
Об этом много говорится в выпуске 168, ссылка на который приведена выше. Кому-то удалось скомпилировать версию wkhtmltopdf, которая поддерживает лучшее разбиение таблиц, но, к сожалению, кажется, что она официально не выпущена и может содержать другие ошибки. Я не знаю, как его получить, и я не знаю, как скомпилировать в Windows, но любой желающий может проверить, например, комментарий здесь (см. Новое обновление ниже).
Обновление 24.02.2014 Вам будет приятно узнать, что в wkhtmltopdf 0.12 эта функция, среди прочего, была значительно улучшена. Тем не менее, дождитесь появления 0.12.1 и тщательно протестируйте, прежде чем начинать использовать любую новую версию, она все еще немного нестабильна, хотя новые ребята, работающие с antialize, делают отличную работу (ашкулз качается)! Следите за обновлениями на wkhtmltopdf.org и github . Сайт с кодом Google устарел и медленно переносится.
display: inline-block
. Поменял наblock
и с изменениями выше все заработало!Это старый пост, но так как я тратил много времени, пытаясь найти правильное решение, я помещу его здесь, возможно, он будет кому-то полезен.
Итак, из того, что я прочитал, проблема с
в том, что это не работает. Но на самом деле, если вы установите его на элемент, который
display:block
работает, как ожидалось (как отмечено где-то в SO). поэтому для простой структуры таблицы css си структура таблицы
будет работать как положено.
У меня был более сложный случай с rowspans, поэтому решение сверху разбивало его на части, что было нежелательным эффектом. Я решил это, используя div для каждого набора строк. Мой jquery js выполняет всю работу:
css:
Я не знаю, все ли нужно, и не думаю, что это идеально, но работает. Проверено только на хроме
источник
Начиная с версии 0.12 эта проблема была решена, но иногда, когда таблица слишком длинная, чтобы поместиться на странице, wkhtmltopdf разбивает ее на две части и повторяет заголовки столбцов на новой странице, и эти заголовки столбцов появляются наложенными на первую строку.
Я нашел временное решение этой проблемы в разделе wkhtmltopdf github issues: https://github.com/wkhtmltopdf/wkhtmltopdf/issues/2531
Просто добавьте эти строки в свой просмотр css:
источник
Я копался в этой проблеме несколько дней и наконец нашел идеальное решение. Вы можете сослаться на этот проект phpwkhtmltopdf . Загляните в каталог,
article
и вы найдете 3 решения для 3 проблем. Короче говоря, окончательное решение - добавить стиль cssЕсли вы китаец, не стесняйтесь зайти на этот сайт关于 wkhtmltopdf , 你 一定 想 知道 这些 Ознакомьтесь с сутью , если вы хотите, чтобы суть для wkhtmltopdf
источник
Я обнаружил, что wkhtmltopdf 0.12.2.1 и более поздних версий устранила эту проблему.
источник
В моем конкретном случае по какой-то причине ни один из предыдущих ответов у меня не работал. В итоге сработало сочетание нескольких вещей.
Я установил (в Ubuntu 16.04) оболочку python Wkhtmltopdf под названием pdfkit, используя pip3, а затем вместо установки Wkhtmltopdf через apt-get я установил статический двоичный файл (версия 0.12.3), следуя приведенному ниже сценарию, взятому отсюда
Добавлен этот CSS (как предлагается в одном из ответов здесь):
А потом также добавить
<thead>
и<tbody>
теги , как предложено здесь , а также (без них таблица будет по- прежнему перерыв в уродливом виде):С этими изменениями я теперь могу успешно использовать шаблоны Mako для создания HTML, а затем передать его в Wkhtmltopdf и получить красиво разбитый на страницы PDF.
источник
Я пробовал всевозможные манипуляции со своими таблицами, но ничто из того, что я пробовал, не могло помешать размещению разрывов страниц в середине строки. В отчаянии я пробовал разные версии и обнаружил следующее:
Wkhtmltopdf 0.12.2.1: Плохо
Wkhtmltopdf 0.12.3: Плохо
Wkhtmltopdf 0.12.1: Хорошо
Мое решение состояло в том, чтобы перейти на версию 0.12.1, что решило мои проблемы. Конечно, это могло быть отчасти из-за того, что мой html не был супер-ОКР, но поскольку HTML создается внутри TinyMCE (пользователями), у меня действительно нет особого выбора.
Также вложенные таблицы у меня не работают ни в одной версии.
источник
Как использовать разрывы страниц внутри PDF без разрыва tr?
Вот решение, которое вы можете использовать в любом html файле ...
После запуска вашего tr вы должны взять div внутри tr и передать этот css в div:
источник
Я столкнулся с той же проблемой, добавленной после множества пробных ошибок, этот css решил проблему
источник
В дополнение к тому, что говорит Нанотелеп, вот рабочая реализация ручного алгоритма разбиения страниц таблицы. https://github.com/AAverin/JSUtils/tree/master/wkhtmltopdfTableSplitHack
источник
Приведенные выше ответы не помогли мне. Мне пришлось специально отключить опцию масштабирования в моей конфигурации pdfkit.
источник
Для тех, у кого все еще есть проблемы с этим, нужно помнить, что таблица должна быть прямым потомком body , иначе css не будет работать (по крайней мере, так случилось со мной).
источник
display: table-cell;
application. Создание этих стилей@media only screen
исправило разрывы страниц. Если вы не можете заставить работать разрывы страниц, попробуйте разделять и властвовать, поэтапно удаляя половину CSS и проверяя, работает ли он.Я нашел это нелепое решение, но оно мне очень понравилось :)
Я просто поместил очень длинный столбец rowspan, как этот
и тогда стол не сломается.
источник
Другой вариант: поместите каждый
tr
по отдельности,tbody
а затем примените правила css peage break к файлуtbody
. Таблицы поддерживают несколькоtbody
s.Немного дополнительной разметки, но у меня работает прилично.
источник
Я решил проблему, используя несколько предложенных решений.
Я обернул свою таблицу в div и определил следующий CSS.
Структура таблицы по завершении была определена в следующем примере:
Мне не нужно было создавать div внутри тегов td или th.
Важные вещи, которые я заметил, пытаясь решить проблему:
Надеюсь, это поможет.
источник
Я много боролся с этой проблемой, используя последнюю версию h4cc / wkhtmltopdf-amd64 версии 0.12.4, и, наконец, заставил ее работать, понизив версию пакета до
0.12.3
!источник
Чтобы избежать разрыва страницы, мы можем использовать опцию css без разрыва страницы.
Разбейте любой контент (изображение / текст) и сделайте так, чтобы он появился на следующей странице
источник
У тебя есть голова стола? а тело стола?
Это правильное форматирование таблицы, в то время как большинству браузеров все равно, конвертеры, подобные упомянутому вами, могут, если у вас отсутствуют теги
<tbody>
или<th>
теги, я предлагаю вам сначала попробовать их добавить.источник