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


Why lines/images draw only on last page of pdf using dompdf in php

我试图使用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,所以没有显示这一行。这就解决了问题:

$dompdf->set_option("isPhpEnabled", true);

这一行必须放在$dompdf->render()之前。

如何在所有PDF页面中使用页眉和页脚添加图像。下面是我的代码。

$pdf = App::make('dompdf');
$pdf->loadFile('invoice.html');
$pdf->output();
$dom_pdf = $pdf->getDomPDF();
$canvas = $dom_pdf ->get_canvas();
$image1="logo.png";
$canvas->image($image1,'png', 0, 0, 50, 25);
$canvas->page_text(10, 10, "Page {PAGE_NUM} of {PAGE_COUNT}", null, 10, array(0, 0, 0));
$pdf->save('pdf_report/eft_payment-'.$RandomAccountNumber.'.pdf');