Я использую TCPDF для вывода html-таблицы, это не единственная таблица в моем примере, которую мне придется изменить, поэтому мне нужны некоторые правила для отображения моих страниц. До сих пор TCPDF казался мне мощной библиотекой, поэтому я был бы признателен, если бы не пробовал другую.
Моя проблема в том, что мне нужно добавить заголовок таблицы на каждую новую страницу, на которой будет отображаться таблица, но у меня есть и другая информация для записи в этот pdf-файл, который не должен иметь заголовок таблицы, поэтому я не могу использовать метод перезаписи заголовка в tcpdf.
|
1 | sectiune1 | | 1.1 | UNI-Cazan mixt AIREX 25 2S BICOMB MODUL | 94456 | 99999 | 24.623,00 | 2.462.275.377,00 | 1.2 | UNI-Cazan mixt AIREX 25 2S BICOMB MODUL | 94456 | 99999 | 24.623,00 | 2.462.275.377,00 | | TOTAL sectiune1: | | | 4.924.550.754,00 | | | | 2 | sectiune2 | | 2.1 | ICI-Cazan condensatie MONOLITE 75-JB | 81020076 | 99999 | 34.719,00 | 3.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, показались мне немного странными.