2014-01-13 77 views
0

我正在使用DOMPDF生成發票。 1發票在時間是完美的。DOMPDF在一個PDF中生成多個文檔

但是我想打印日期爲 的所有發票都是完美的 但是,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"); 

我想所有發票(有時5,有時50)1個PDF文件。 如何?

我在文件結尾處關閉了我的whiles,但沒有幫助。

希望你能幫上忙。

回答

0

您的代碼現在編寫的方式是渲染您的第一個文檔,然後不對它做任何事情。所以第二遍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"); 
+0

感謝。我有嘗試,但現在得到1空白頁。 –

+0

如果你回顯'$ html'變量的內容,你會得到什麼? – BrianS