我使用HTML2PDF从HTML字符串生成pdf文件。
一切都很好,很容易,直到我遇到一个非常奇怪的错误。 td
中间有一个分页符。它不仅没有带css
,而且它决定要打破的位置也没有任何意义。句子比上面的句子短,而上面的句子只占1行。这意味着休息的句子将在线上,相反,它决定使用4行。这可能听起来令人困惑,所以这里有一个html
的例子。
<table>
<tr>
<td>Some text longer than the text below.</td>
<th>Apples</th>
</tr>
<tr>
<td>Text shorter than text above</td>
<th>Bananas</th>
</tr>
</table>
正如您所看到的,第一个td
比第二个td
长,所以您要考虑第二个td
是否需要换行,第一个需要一个人。不幸的是,html2pdf决定第二个td
需要3个换行符,而第一个没有。{/ p>
这会导致其下方的桌面错误,其中th
与每行中的td
重叠。
我看过代码,我可以肯定地说:这是html
。没有分页符,没有。
如果我在html中编写输出,那么它会是什么样子。 这不是pdf的实际html!这只是用html编写的输出。
<table>
<tr>
<td>Some text longer than the text below.</td>
<th>Apples</th>
</tr>
<tr>
<td>Text shorter <br>than <br>text <br>above</td>
<th>Bananas</th>
</tr>
</table>
注意:
page-break-inside: avoid;
(即使是在同一时间),但似乎没有任何效果。答案 0 :(得分:0)
我找到了答案。显然,html2pdf中不支持thead和tfoot。 Html2pdf将一个表放在一个数组中,并没有计算tfoot和thead,但输出了它。
他做的是这个。你有这个代码:
<table>
<thead>
header
</thead>
<tr>
<td>Some text longer than the text below.</td>
<th>Apples</th>
</tr>
<tr>
<td>Text shorter <br>than <br>text <br>above</td>
<th>Bananas</th>
</tr>
<tfoot>
footer
</tfoot>
</table>
他将每一行放在一个数组中,如下所示:
array (
0 => array (
0 => "thead"
1 => ""
1 => array (
0 => "Some text longer than the text below."
1 => "Apples"
2 => array (
0 => "Text shorter than text above"
1 => "Bananas"
3 => array (
0 => "footer"
1 => "")
然而,他只会看到2行,所以计算0和1.他将输出数组(0)和数组(1)。在那之后,他会找到桌子的其余部分并发布它,好像它只不过是带有标签的字符串,而实际上它是一个桌面。
我的解释可能是错的,这就是我捡起它的方式。