php - 为什么在 php 中使用 dompdf 只在 pdf 的最后一页绘制线条/图像

标签 php pdf dompdf

我试图使用 dompdf 在 pdf 的每一页上绘制线条/图像,但它从第二页开始,为什么会这样?有人有什么想法吗?
这是我的代码

$dompdf = new DOMPDF();
$dompdf->load_html($message2);
$dompdf->set_paper('a4','portrait');
$dompdf->render();

$canvas = $dompdf->get_canvas();

//For Header
$header = $canvas->open_object();
$canvas->image($header_image1,'jpg',0, 0, 595, 100);
$canvas->line(0,100,595,100,array(0,0,0),1);
$canvas->close_object();
$canvas->add_object($header, "all");

//For Footer
$footer = $canvas->open_object();
$canvas->line(0,740,650,740,array(0,0,0),1);
$canvas->image($footer_image1,'jpg',0, 742, 595, 100);
$canvas->close_object();
$canvas->add_object($footer, "all");

$output = $dompdf->output();

此代码在 pdf 上绘制线条/图像,但仅显示在最后一页。
我有两页 pdf 文件,我的线条/图像绘制在第二页而不是第一页上。

请提出任何解决方案。

最佳答案

在 DomPDF 中添加对象从当前页面开始。换句话说,您的对象将被添加,但只能从您当前拥有的页面开始,然后再添加到您添加的任何新页面。

在您的代码中,您已经将 HTML 转换为 PDF,因此当前页面很可能是文档中的最后一页。因此,您的页眉/页脚会添加到此处,但不会添加到任何以前的页面。

为了将内容放置在每个页面上,domPDF 提供了两种方法:page_textpage_script

在您的情况下,以下类型的代码应该可以解决问题:

$canvas->page_script('
  $pdf->line(10,730,800,730,array(0,0,0),1);
');

然后针对每个 PDF 页面执行page_script 函数中的代码。

关于php - 为什么在 php 中使用 dompdf 只在 pdf 的最后一页绘制线条/图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30273033/

相关文章:

php - 使用 DOMPDF 生成错误的 pdf

php - 我找不到用于设置 "DOMPDF_UNICODE_ENABLED"true 的 dompdf_config.inc.php 或 dompdf_config.custom.inc.php

printing - Drupal 7 : Print pdf using dompdf

php - float 在 dompdf laravel 4 中不起作用

nginx - 关闭浏览器时停止执行 php 脚本

php - 在插件元素 CakePHP 3 中获取当前插件名称

php - 两个数组并分别显示它们

javascript - php中一张列表中的多个值

java - 使用 Flying Saucer 从 XHtml 源文本生成 PDF 的代理问题

javascript - Ajax 调用以 Base64 字符串形式返回 PDF 文件