【问题标题】:Dompdf: Force table row to split across 2 pagesDompdf:强制表格行拆分为 2 页
【发布时间】:2019-06-25 15:49:13
【问题描述】:

我正在使用 "dompdf/dompdf": "^0.8.3" 进行 PDF 打印。

我有一个带有大文本内容的行 td​​s 的简单表格...例如:

<!DOCTYPE html>
<html>

<head>
</head>

<body>
    <table>
        <thead>
            <tr>
                <th>PRODUCT</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>1-----
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                </td>
            </tr>
            <tr>
                <td>2-----
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                </td>
            </tr>
            <tr>
                <td>3-----
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                </td>
            </tr>
            <tr>
                <td>4-----
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                </td>
            </tr>
            <tr>
                <td>5-----
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
                </td>
            </tr>
        </tbody>
    </table>
</body>

</html>

当我使用 A4 大小的页面打印时,我希望在可用空间的第一页打印第 4 行的一部分,然后在下一页继续打印其余文本。但似乎所有第 4 行都移到了第二页。有没有办法根据我的要求强制执行此操作(使用 css 或通过 dompdf 设置)?

我已经尝试了以下 css 的分页符:

table {
    page-break-inside: auto;
}

table tr {
    page-break-inside: auto;
}

table tr td {
    page-break-inside: auto;
}

但他们从来没有帮助我将一行分成两页。

感谢您的快速反馈..

干杯!!

【问题讨论】:

标签: html css dompdf


【解决方案1】:

Dompdf(截至本文目前为 0.8.3)不支持跨页面拆分表行。这是 Dompdf 长期存在的问题(参考 https://github.com/dompdf/dompdf/issues/98)。

如果您的特定内容遵循您提供的示例,则看起来并不需要表格结构,因为它每行只有一个单元格。您可以使用简单的 DIV 元素很好地复制结构。

唯一的问题是表头。如果示例真正反映了您的输出,您可以改用页眉。

大致如下:

<!DOCTYPE html>
<html>

<head>
  <style>
    @page { margin-top: 50px; }
    #header { position: fixed; top: -50px; left: 0px; right: 0px; padding: 10px; text-align: center; font-weight: bold; }
  </style>
</head>

<body>

  <div id="header">
    PRODCUT
  </div>

  <div>
  1-----
    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
    MCHBMES1 -- MCHBMES1 -- MCHBMES1 -- MCHBMES1 --
  </div>

</body>

</html>

【讨论】:

    猜你喜欢
    • 2019-03-27
    • 1970-01-01
    • 2014-08-12
    • 1970-01-01
    • 2020-01-02
    • 2013-09-13
    • 2013-03-11
    • 1970-01-01
    • 2018-05-31
    相关资源
    最近更新 更多