Это проблема рендеринга в версиях Dompdf 0.8.3 и более ранних.Суть проблемы заключается в порядке рендеринга ячеек таблицы в сочетании с техникой, используемой для рендеринга границ ячеек таблицы и фона, когда границы свернуты.
Во-первых, как и во всем в Dompdf, более ранние элементы отображаются раньшеболее поздние элементы в структуре документа.Когда ячейка охватывает строки, она отображается перед ячейками в следующих строках.Это важно из-за порядка наложения объектов в PDF (более поздние объекты отображаются поверх более ранних).
Во-вторых, границы ячеек отображаются одной ячейкой в группе из любых двух смежных ячеек.Для горизонтально смежных ячеек ячейка справа отображает левую границу.Для вертикально смежных ячеек нижняя ячейка отображает верхнюю границу.
В-третьих, фоны ячеек отображаются на краю ячейки без учета границ.
Теперь примите во внимание эти три фактас учетом строки со строками, расположенной справа от других ячеек таблицы.Будет визуализирована левая граница ячейки, натянутой на строки.Соседние ячейки в следующей строке не будут отображать границы, а любой фон будет отображаться на всю ширину ячейки.Из-за этого фон более поздней ячейки будет визуализироваться поверх границы ячейки, охватываемой строкой.
Вы можете увидеть эту проблему в следующем примере (при запуске, например, в Dompdf 0.8.3):
<head>
<title>Row-span overlap</title>
<style>
table {
border-collapse: collapse;
}
table td {
border: 1px solid red;
background-color: #0000ff66;
}
.rowspan {
border-left-width: 10px;
}
</style>
</head>
<body>
<table>
<tbody>
<tr>
<td>1</td>
<td rowspan="2">2</td>
</tr>
<tr>
<td>3</td>
</tr>
</tbody>
</table>
</html>
Проблема будет решена в Dompdf 0.8.4.Основным изменением для устранения ошибки было отображение фона внутри границы.