如何在生成 Pdf 时显示大 table 而不会破坏 dompdf

How to display the large table without breaking in the dompdf while Generating the Pdf

我已经使用 DOMPDF 为以下 table 生成了 PDF 文件。但是在生成 pdf 时它只显示 table.

的前 15 行

注:我使用了tables page-break-inside: avoid;

中的样式
i have attached the HTML coding of the table in the fiddle.

https://jsfiddle.net/o4ga8uze/

关于您的文档,我能给出的主要建议是去掉包装器 table。如果任何特定的 table 单元格超过页面大小,您将 运行 变成一个相当讨厌的 bug。幸运的是,对于您的文档,您不需要那个外部 table,因为它所做的只是包装您的实际内容以提供间距。

而不是这个:

<table align="left" cellpadding="0" cellspacing="0" style="margin:5px;  page-break-inside: avoid;" width="100%">
  <tr>
    <th class="head">Heading</th>
  </tr>
  <tr>
    <td style="border:1px solid; page-break-inside: avoid;" class="border-top border-left border-right border-bottom">
      <!-- invoice table -->
    </td>
  </tr>
</table>

试试这个:

<div style="margin:5px;">
  <div class="head">Heading</div>
  <div style="border:1px solid;" class="border-top border-left border-right border-bottom">
    <!-- invoice table -->
  </div>
</div>

我更新了你的fiddle:https://jsfiddle.net/o4ga8uze/1/

至于防止 table 分页... 您没有包含对所有样式表的实际引用,因此很难提供很多指导。我要说的第一件事是,由于您的 table 是页面上的全部内容(至少在您的示例中),因此它必须具有足够少的行数才能不需要分页。

我注意到你提到了 Bootstrap 2.3.2,所以我现在也会注意到 dompdf doesn't work all that well with bootstrap。您可以尝试设置足够高的 DPI,以便 dompdf 能够容纳页面上的更多内容。

  • 在 v0.6.2 或更早版本中,将 DOMPDF_DPI 配置常量设置为例如 300。
  • 在 v0.7.0 中,在实例化 dompdf 后设置选项:$dompdf->set_option('dpi', 300);

最后,删除 page-break-inside: avoid; 样式。对于超过页面大小的内容,尤其是 tables.

,这尤其有问题