domPDF - 如果达到页面高度,表格总是会降到最低点

时间:2018-01-02 12:42:30

标签: php html css dompdf

我使用DOMPDF生成PDF文件,但我有一点问题 这是我的模板基本表:

<!DOCTYPE html>
<html lang="pl">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>PDF</title>
</head>
<body>
    <table>
        <tbody>
            <tr>
                <td>
                    <h4>List 1:</h4>
                    <ol>
                        @foreach ($listArray_1 as $inv)
                            <li>{{ $inv->firstname }} {{ $inv->middlename }} {{ $inv->lastname }}</li>
                        @endforeach
                    </ol>
                </td>

                <td>
                    <h4>List 2:</h4>
                    <ol>
                        @foreach ($listArray_2 as $inv)
                            <li>{{ $inv->firstname }} {{ $inv->middlename }} {{ $inv->lastname }}</li>
                        @endforeach
                    </ol>
                </td>

                <td>
                    <h4>List 3:</h4>
                    <ol>
                        @foreach ($listArray_3 as $inv)
                            <li>{{ $inv->firstname }} {{ $inv->middlename }} {{ $inv->lastname }}</li>
                        @endforeach
                    </ol>
                </td>

                <td>
                    <h4>List 4:</h4>
                    <ol>
                        @foreach ($listArray_4 as $inv)
                            <li>{{ $inv->firstname }} {{ $inv->middlename }} {{ $inv->lastname }}</li>
                        @endforeach
                    </ol>
                </td>
            </tr>
        </tbody>
    </table>
</body>
</html>

但如果某些<td>大于页面高度,则会将2个第一页空白,并在第三页上呈现剪切内容(剪切到页面末尾)。
哪里有问题?在CSS或DOM PDF? (我不能使用wkhtmltopdf:/)

1 个答案:

答案 0 :(得分:0)

使用其他库的可能解决方案: 我使用mPDF来完成这项任务。我可以想象这是mPDF内部的一个非常困难的过程,但设法得到一个好的pdf,使用可能会或可能不会跨越多个页面的多个表。一切顺利。

$mpdf = new \Mpdf\Mpdf(['tempDir' => __DIR__ . '/tmp']);
$mpdf->shrink_tables_to_fit = false;
$mpdf->WriteHTML( <<<HTML
<style>    
table
{
     page-break-inside: avoid;
}
</style>
<table>.... LONG table</table>
<table>.... another table</table>
<table>.... LONG table</table>
HTML
);

`