DOMPDF Несколько документов, созданных в одном PDF

Я использую 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");

Я хочу получить все счета (иногда 5, иногда 50) в 1 файле PDF. Как ?

Я закрываю время в конце файлов, но не помогает.

Надеюсь, вы можете помочь.


person Dave Titan    schedule 13.01.2014    source источник


Ответы (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");
person BrianS    schedule 13.01.2014
comment
Спасибо. Я пробовал, но теперь получаю 1 пустую страницу. - person Dave Titan; 15.01.2014
comment
что вы получите, если выведете содержимое переменной $html? - person BrianS; 15.01.2014