HTML2PDF表中的意外换行符

时间:2015-10-21 09:24:33

标签: php html css html2pdf

我使用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>

注意:

  1. 此表位于我的页面底部,因此换行会导致非常错误的分页。
  2. 我尝试在每个元素上使用page-break-inside: avoid;(即使是在同一时间),但似乎没有任何效果。

1 个答案:

答案 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)。在那之后,他会找到桌子的其余部分并发布它,好像它只不过是带有标签的字符串,而实际上它是一个桌面。

我的解释可能是错的,这就是我捡起它的方式。