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

时间:2016-04-12 06:48:26

标签: php css dompdf

我使用DOMPDF生成了For the Following表的PDF文件。但是,在生成pdf时,它只显示表格的前15行。

注意:我在表格中使用了样式 - break-inside:avoid;

i have attached the HTML coding of the table in the fiddle.

https://jsfiddle.net/o4ga8uze/

1 个答案:

答案 0 :(得分:0)

关于你的文档,我可以给出的主要建议是摆脱包装表。如果任何特定的表格单元格超出页面大小,您将遇到一个相当讨厌的bug。幸运的是,对于您的文档,您不需要该外表,因为它所做的就是包装您的实际内容以提供间距。

而不是:

<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>

我更新了你的小提琴:https://jsfiddle.net/o4ga8uze/1/

就阻止表分页而言...... 您没有包含对所有样式表的实际参考,因此很难提供很多指导。我可以说的第一件事是,由于你的表就是页面上的所有内容(至少在你的样本中),它必须有足够低的行数才能不需要分页。

我注意到您的参考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;样式。对于超出页面大小的内容,尤其是表格,这可能会特别成问题。