为什么线条/图像仅使用php

时间:2015-05-16 07:33:12

标签: 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,我的行/图像是在第二页上绘制而不是在第一页上。

请建议任何解决方案。

3 个答案:

答案 0 :(得分:2)

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

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

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

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

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

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

答案 1 :(得分:0)

如何使用页眉和页脚在所有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');

答案 2 :(得分:0)

我没有显示该行,因为已禁用嵌入式php。 这解决了这个问题:

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

此行必须放在$ dompdf-> render()。

之前