【问题标题】:DOMPDF Multiple Documents Generated In One PDFDOMPDF 在一个 PDF 中生成多个文档
【发布时间】:2014-01-13 04:58:10
【问题描述】:

我正在使用 DOMPDF 生成发票。 一次 1 张发票是完美的。

但我想(从一段时间内)打印日期之间的所有发票 一切都很完美 但是 Dompdf 只打印最后一张发票。

dompdf 代码

require_once("dompdf_config.inc.php");
$date1 = "2008-01-01";
$date2 = "2009-01-01";
$user = "User_1"; 

$sql=mysql_query("SELECT * FROM invoices  WHERE datum BETWEEN '$date1' AND '$date2' AND user='$user' ORDER BY nummer ");
while ($rows=mysql_fetch_array($sql))
{
$num=$rows[number];
$datum=$rows[data];
$pay=$rows[pay];

// Need to get the user info from other table
$Query2 = "SELECT * from user WHERE user='$user'";
while ($rows2=mysql_fetch_array($Result2))
{
$name = $rows2[name];
//ETC...

// Now we generate the html invoice
$html =
    '<html><body>'.
//the invoice html
    '</body></html>';

$dompdf = new DOMPDF();
$dompdf->load_html($html);
$dompdf->render();
}
}
$dompdf->stream("Invoice.pdf");

我想在 1 个 pdf 文件中获取所有发票(有时是 5 个,有时是 50 个)。 如何 ?

我在文件末尾关闭我的 while,但没有帮助。

希望你能帮忙。

【问题讨论】:

    标签: dompdf


    【解决方案1】:

    您现在编写代码的方式是渲染您的第一个文档,然后不对其进行任何操作。所以第二次通过while循环将覆盖第一次。有几种方法可以实现您想要的,但最简单的方法是将所有 HTML 编译到一个文档中,然后渲染它。

    使用您的代码作为开始:

    require_once("dompdf_config.inc.php");
    $date1 = "2008-01-01";
    $date2 = "2009-01-01";
    $user = "User_1"; 
    $invoices = array();
    
    $sql=mysql_query("SELECT * FROM invoices  WHERE datum BETWEEN '$date1' AND '$date2' AND user='$user' ORDER BY nummer ");
    while ($rows=mysql_fetch_array($sql)) {
      $num=$rows[number];
      $datum=$rows[data];
      $pay=$rows[pay];
    
      // Need to get the user info from other table
      $Query2 = "SELECT * from user WHERE user='$user'";
      while ($rows2=mysql_fetch_array($Result2)) {
        $name = $rows2[name];
        //ETC...
    
        // Force page break between invoices
        if ( strlen( $html ) > 0 ) { $html .= '<div style="page-break-before: always;"></div>'; }
    
        // Now we generate the html invoice
        $invoices[] = '<!-- the html invoice -->';
      }
    }
    
    $html = '<html><body>' . implode( '<div style="page-break-before: always;"></div>' , $invoices ) . '</body></html>';
    $dompdf = new DOMPDF();
    $dompdf->load_html($html);
    $dompdf->render();
    $dompdf->stream("Invoice.pdf");
    

    【讨论】:

    • 谢谢。我试过了,但现在得到 1 个空白页。
    • 如果你回显$html变量的内容,你会得到什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-15
    • 1970-01-01
    • 1970-01-01
    • 2018-10-04
    • 2023-04-09
    • 2022-08-23
    相关资源
    最近更新 更多