我试图使用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_text
和page_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');