CSS в PDF, css в Flying Saucer: -fs-table-paginate результат при крахе-крах: сбой недействителен

Теперь я использую xhtmlrenderer для скрытого html в PDF. Моя зависимость от maven выглядит следующим образом:

    <dependency>
        <groupId>org.mvel</groupId>
        <artifactId>mvel2</artifactId>
        <version>2.1.0.drools2</version>
        <scope>compile</scope>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.xhtmlrenderer</groupId>
        <artifactId>core-renderer</artifactId>
        <version>R8</version>
        <scope>compile</scope>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>com.lowagie</groupId>
        <artifactId>itext</artifactId>
        <version>2.0.8</version>
        <scope>compile</scope>
        <optional>true</optional>
    </dependency>

Я пытаюсь повторить заголовок таблицы на каждой странице PDF. Поэтому я использую css  : table { -fs-table-paginate: paginate; }. Объяснение для CSS: здесь.

-fs-table-paginate
  • при использовании со значением (-fs-table-paginate) paginate, изменяет расположение таблицы алгоритм для повторения верхних и нижних колонтитулов на последующих страницах и улучшить внешний вид ячеек, которые разбиваются по страницам (например, закрывая и открывая границы), но все это делает. Если минимальная ширина таблицы шире, чем страница, она будет отрублена.

  • При добавлении вышеуказанного css мои границы таблицы отделяются.

enter image description here

  • Прежде чем добавить CSS, границы таблицы будут свернуты в одну рамку.

enter image description here

Итак, я думаю, что table { -fs-table-paginate: paginate; сделал мою таблицу border-collapse:collapse недействительной. Итак, что я могу сделать, чтобы исправить ошибку, заставить границы таблицы свернуть?

Мое приложение CSS для таблицы следующим образом

table{
    border:1px solid #000000;
    border-collapse:collapse;
    -fs-table-paginate: paginate;}
table td{
    border:1px solid #000000;
    word-wrap:break-word;
    white-space:normal;
    overflow:hidden;
    text-align:left;
    line-height:16px;
    height:16px;

}
table tr{
    page-break-inside:avoid;
}
table thead tr th{
    background:#f2f2f2;
    border:1px solid #000000;
    text-align:center;
}

table tr th{
    background:#f2f2f2;
    border:1px solid #000000;
    text-align:center;
}

И когда add -fs-table-paginate: paginate; когда-нибудь заголовок таблицы будет не нормальным. Заголовок не будет корректно отображаться. И под заголовком таблицы будет увеличена дополнительная пустая строка. Как показано ниже: enter image description here

Кто-нибудь знает идеи?

Ответы

Ответ 1

По той же самой проблеме я использовал это обходное решение:

table {
  -fs-table-paginate: paginate;
  border-spacing: 0;
}

Это сработало для меня, мой thead повторяется на каждой странице.

Ответ 2

Да... вы правы...

border-collapse: collapse и -fs-table-paginate: невозможно использовать paginate вместе. border-collapse reset для разделения, когда для параметра -fs-table-paginate установлено значение постраничный...

Итак, лучший способ реализовать заголовок таблицы - это использовать... это может помочь вам...

Ответ 3

Обходной путь, который работал у меня:

Инициализировать все th и td один за другим с помощью рамки, установленной на 0px: border: 0px;

И затем примените границу, где они вам нужны:

<td style="border: 0px; border-left: 1px solid #ddd;">some texte</td>

Конечно, я даю -fs-table-paginate: paginate; в стиле таблицы.

Рабочий пример html: https://gist.github.com/laguiz/5509461

Вот результат:

enter image description here