2014-01-13 2 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

Смежные вопросы