【问题标题】:Why lines/images draw only on last page of pdf using dompdf in php为什么行/图像仅在 php 中使用 dompdf 绘制在 pdf 的最后一页
【发布时间】:2015-05-16 07:33:11
【问题描述】:

我正在尝试使用 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,我的线条/图像绘制在第二页而不是第一页。

请提出任何解决方案。

【问题讨论】:

    标签: php pdf dompdf


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

    • 感谢回复,我已经尝试过了,但没有在任何页面上显示行。我还在缺少 page_script 函数的包含文件夹中编辑文件 cpdf_adapter.cls.php 文件我将其编写如下 function page_script($code, $type = "text/php") { $_t = "script"; $this->_page_text[] = compact("_t", "code", "type");如果我在这里遗漏了什么,请帮助我。
    • @SachinEndait 您可能需要更新您的 dompdf 副本。推荐使用 v0.6.1,不需要对源代码进行任何编辑。
    • 如果你解决了你的问题,我可以建议你写一个答案,以便其他人也能得到帮助吗?这就是这个网站的运作方式......
    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-11-21
        • 1970-01-01
        • 1970-01-01
        • 2019-09-25
        • 2019-12-26
        • 2014-03-08
        • 2011-06-22
        • 2021-10-30
        相关资源
        最近更新 更多