Wkhtmltopdf повторяющиеся заголовки таблиц перекрывают строки, когда строки содержат длинные многострочные текстовые стоCSS

Разбираемся в CSS
Ответить
Anonymous
 Wkhtmltopdf повторяющиеся заголовки таблиц перекрывают строки, когда строки содержат длинные многострочные текстовые сто

Сообщение Anonymous »

Я конвертирую HTML в PDF с помощью wkhtmltopdf 0.12.6.1 (исправленный Qt).
HTML отображается правильно во всех браузерах, но в сгенерированном PDF-файле возникают проблемы с макетом таблиц, занимающих несколько страниц.
Изображение

Описание проблемы
Когда таблица:
  • охватывает несколько страниц
  • использует , поэтому заголовки повторяются
  • имеет много столбцов (15+ в таблице) реальный вариант использования)
  • содержит очень длинный текст в одной или нескольких ячейках таблицы ()[/b]
a одна строка таблицы () может занимать две страницы[/b].

Когда это происходит, wkhtmltopdf повторяет заголовок таблицы на новой странице, но не резервирует для него вертикальное пространство, в результате чего повторяющийся заголовок перекрывает продолжение той же строки. В некоторых случаях содержимое строки частично усекается (видимо наполовину).
Эта проблема возникает только тогда, когда одна строка сама по себе разбивается на страницы.

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

Код: Выделить всё

wkhtmltopdf \
--orientation Landscape \
--footer-center "name of the template" \
--footer-font-size 10 \
--footer-spacing 5 \
input.html output.pdf
Минимально воспроизводимый пример
Следующий HTML-код корректно отображается в браузерах, но создает перекрытие заголовков в wkhtmltopdf, когда содержимое ячейки строки перетекает на следующую страницу:

Код: Выделить всё





body {
font-family: Arial;
font-size: 10pt;
line-height: 1.4;
min-width: 1200px;
}

table {
margin-top: 10px;
page-break-inside: auto !important;
border-collapse: collapse;
width: 100%;
}

tr {
page-break-inside: auto !important;
}

table, th, td {
border: 1px solid black;
text-align: center;
}

th.verticalTableHeader {
max-width: 100pt;
min-width: 30pt;
}

td {
padding: 10px !important;
white-space: normal;
word-wrap: break-word;
}

/* rotated header text */
.verticalTableHeader span {
display: inline-block;
transform: rotate(270deg);
margin: 0 -280%;
}

.verticalTableHeader span:before {
content:'';
width:0;
padding-top:110%;
display:inline-block;
vertical-align:middle;
}

/* IMPORTANT: forces grouping of rows */
.group-rows {
display: table-row-group !important;
}








Heading1
Heading2
Heading3
Heading4
Heading5






1


This cell contains very long text.
It spans multiple lines and eventually forces the same
table row to continue onto the next page.  When that happens,
wkhtmltopdf repeats the table header but overlaps the
continuation of this row instead of pushing it down.

Text
Text
Text







На изображении ясно видно, что текст перекрывается с содержимым, а также текст усечен (виден наполовину)
Вопрос
Есть ли способ заставить wkhtmltopdf правильно повторять заголовки таблицы, когда одна строка таблицы занимает несколько страниц, без перекрытия заголовков или усечения строк?

/>Существуют ли известные обходные пути CSS или это известное ограничение механизма компоновки wkhtmltopdf?

Подробнее здесь: https://stackoverflow.com/questions/798 ... -multi-lin
Ответить

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

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «CSS»