HTML-таблица TCPDF разделена на несколько страниц

Я использую TCPDF для вывода html-таблицы, это не единственная таблица в моем примере, которую мне придется изменить, поэтому мне нужны некоторые правила для отображения моих страниц. До сих пор TCPDF казался мне мощной библиотекой, поэтому я был бы признателен, если бы не пробовал другую.

Моя проблема в том, что мне нужно добавить заголовок таблицы на каждую новую страницу, на которой будет отображаться таблица, но у меня есть и другая информация для записи в этот pdf-файл, который не должен иметь заголовок таблицы, поэтому я не могу использовать метод перезаписи заголовка в tcpdf.

Nr.DenumireCodCant.Pret unitar
fara TVA (RON)
Pret total
fara TVA (RON)
      
1sectiune1 
1.1UNI-Cazan mixt AIREX 25 2S BICOMB MODUL 94456 9999924.623,002.462.275.377,00
1.2UNI-Cazan mixt AIREX 25 2S BICOMB MODUL 94456 9999924.623,002.462.275.377,00
  TOTAL sectiune1:    4.924.550.754,00
   
2sectiune2 
2.1ICI-Cazan condensatie MONOLITE 75-JB81020076 9999934.719,003.471.865.281,00
  TOTAL sectiune2:    3.471.865.281,00
   
Total sectiune1: 4.924.550.754,00
Total sectiune2: 3.471.865.281,00
Total oferta (RON):8.396.416.035,00
Total oferta (RON cu TVA inclus):10.411.555.883,40

Я подумал о следующем решении :, если каким-то образом я мог бы разделить этот html на строки и записать строку за строкой в ​​​​pdf, чтобы я мог откатиться, когда я пишу нижний колонтитул, а затем добавляю новую страницу, но есть серьезная проблема, я получаю всевозможные предупреждения, потому что теги таблицы html не закрыты. Вот мой код:

$pdf->setAutoPageBreak(false);
$pdf->startTransaction();
$html = new simple_html_dom();
$html->load($data);
$single = $html->find('#Container', 0);
if($single){

 $rows = $single->getElementsByTagName('tr');
 $rows = $rows[0]->getElementsByTagName('tr');

 if($rows)
   for($i=1;$i<(count($rows)-1);$i++){
     $pdf->writeHTMLCell($w=0, $h=0, $x='', $y='', '', $border=0, $ln=1, $fill=0, $reseth=true, $align='', $autopadding=false);
     $pdf->writeHTMLCell($w=0, $h=0, $x='', $y='', $rows[$i]->outertext, $border=0, $ln=1, $fill=0, $reseth=true, $align='', $autopadding=false);
     $pdf->writeHTMLCell($w=0, $h=0, $x='', $y='', '
', $border=0, $ln=1, $fill=0, $reseth=true, $align='', $autopadding=false); if ($pdf->getY() > $pdf->getPageHeight() - 30) { $pdf->rollbackTransaction(true); $pdf->AddPage(); $pdf->writeHTMLCell($w=0, $h=0, $x='', $y='', '', $border=0, $ln=1, $fill=0, $reseth=true, $align='', $autopadding=false); $pdf->writeHTMLCell($w=0, $h=0, $x='', $y='', $rows[$i]->outertext, $border=0, $ln=1, $fill=0, $reseth=true, $align='', $autopadding=false); $pdf->writeHTMLCell($w=0, $h=0, $x='', $y='', '
', $border=0, $ln=1, $fill=0, $reseth=true, $align='', $autopadding=false); } } } $pdf->commitTransaction(); $pdf->setAutoPageBreak(true, 30);

Я бегло просмотрел эти 2 статьи, может кому пригодится: Некоторый пейджинг с многоячейкой и Другой пейджинг с многоячейкой . Я нашел эти 2 достойными примера в качестве логики решения, но методы, используемые с tcpdf, показались мне немного странными.

5
задан Brian Tompsett - 汤莱恩 2 November 2017 в 21:49
поделиться