【问题标题】:Finding the height of the page in pdf rendered using dompdf在使用 dompdf 呈现的 pdf 中查找页面的高度
【发布时间】:2017-06-25 22:02:42
【问题描述】:

我正在根据来自数据库的数据创建一个 html 页面,然后使用 dompdf 将其转换为 pdf。我知道 dompdf 中的 page-break-after 并且能够使用它通过在 php 中使用这样的 if 条件将内容转移到下一页

if($count_row > 7)
 {
   $html = $html.'
     </table>

    <br/><br/>
    <img width="1640px" height="30px" src="bottombar.png" />

     <div style="page-break-after:always;position:relative;">
    </div>';

  }

一切正常。 但是,现在我想动态地打破页面。每行输入内容后,根据表格的高度,如果下一行会溢出到下一页,则分页添加一些标题并添加下一行。

由于每一行的内容都是动态的,所以一个页面可能包含 10 行,另外 15 行。因此,我不想像现在这样限制行数。

在 dompdf 或 php.ini 中添加每一行后,有没有一种方法可以获取页面的高度。我知道它可以在 JS 中完成,但可以在 php 中完成。

我也知道页面大小,因为我是手动设置的。

 $paper_size = array(0,0,1300,1300);
 $pdf->set_paper($paper_size);

感谢任何帮助。提前致谢。

【问题讨论】:

  • 您要添加什么类型的标题?如果您需要,Dompdf 支持表头 (&lt;thead&gt;...&lt;/thead&gt;)。如果是其他类型的标头,那就有点挑战了,但还是有可能的。
  • 嘿,Brian,我可以添加标题,但目前每当添加到表中的行数达到 7 时,我都会打破页面,而不是我想在添加每一行后检查页面的高度和仅当添加新行将溢出到下一页时才打破页面。谢谢

标签: php dompdf


【解决方案1】:

我正在使用这个库,它总是给我这样的问题。我建议为 phantomJS 更改的内容。

PhantomJS 是一个可使用 JavaScript API 编写脚本的无头 WebKit。它 对各种 Web 标准具有快速和原生的支持:DOM 处理, CSS 选择器、JSON、Canvas 和 SVG。

它将允许您放置渲染的内容并将其保存为 PDF

http://phantomjs.org/screen-capture.html 使用示例:https://coderwall.com/p/5vmo1g/use-phantomjs-to-create-pdfs-from-html

【讨论】:

  • 嘿 Rafal,我的内容来自 MySQL 数据库,然后呈现为 ​​html,然后使用 dompdf 将其转换为 pdf。我的问题是,在表格中输入每一行后,是否可以从 dompdf 或 php 获取 pdf 的页面高度。
  • 使用 PhantomJS 可以通过创建临时 .html 文件并将其提供给脚本来解决,如上例所示。我提出这个是因为我知道知道身高可能根本无法解决您的问题。如果您可以花 2 小时来证明 PhantomJS,您会尝试吗? ;)
  • 当然我会看看 PhantomJS 并使用它,如果它解决了我的问题。感谢您的见解。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-31
  • 2011-11-21
  • 2021-10-31
  • 2018-08-30
  • 2011-12-12
  • 2014-12-28
  • 2011-12-17
相关资源
最近更新 更多