PHP TCPDF нежелательная пустая страница внутри разметки HTML - PullRequest
1 голос
/ 08 ноября 2019

Я пытаюсь сгенерировать некоторую текстовую информацию в TCPDF, используя метод writeHTML. Но TCPDF иногда создает дополнительную пустую страницу после автоматического разрыва страницы внутри структуры таблицы (я использую связанные с таблицей теги для форматирования позиций текста).

Пример экрана ошибки:

Bug example screenshot

ОБНОВЛЕНИЕ: Вот пример упрощенного кода:

<?php
$pdf = new TCPDF('P', 'mm', 'A4', true, 'UTF-8', false);
$pdf->setPrintHeader(false);
$pdf->setPrintFooter(false); 
$pdf->SetMargins('20', '20', '15');
$pdf->SetAutoPageBreak(true, '25');  
$pdf->SetFont('freeserif', '', 11);  
$pdf->AddPage(); 
$tagvs = array(           
    'p' => array(0 => array('h' => 0, 'n' => 0), 1 => array('h' => 1, 'n' => 1)),
    'ul' => array(0 => array('h' => 0.0001, 'n' => 1), 1 => array('h' => 1, 'n' => 1)),
    'ol' => array(0 => array('h' => 0.0001, 'n' => 1), 1 => array('h' => 1, 'n' => 1)),   
    'div' => array(0 => array('h' => 0.0001, 'n' => 1), 1 => array('h' => 0.0001, 'n' => 1)),
    'hr' => array(0 => array('h' => 0.0001, 'n' => 1), 1 => array('h' => 0.0001, 'n' => 1)),
);
$pdf->setHtmlVSpace($tagvs);
$html = '<p>Some Content</p><table><tbody><tr><td>Some content</td><td>Some content</td></tr>';
//READ NEXT LINE PLEASE
$html .= '<tr><td>BEFORE THIS TR COULD BE BLANK PAGE IN GENERATED PDF</td><td>IT DEPENDS OF TABLE CONTENT LENGTH</td></tr>';
//READ PREVIOUS LINE PLEASE
$html .= '<tr><td>Some content</td><td>Some content</td></tr></tbody></table><p>Some Content</p><p>Some Content</p>';   
$pdf->writeHTML($html, true, false, true, false, ''); 
$pdf->Output('document.pdf', 'I');
?>

ОБНОВЛЕНИЕ: более наглядный снимок экрана: Ячейка таблицы идет до конца страницы

Как можно избежатьЭто? Большое спасибо!

1 Ответ

0 голосов
/ 12 ноября 2019

Похоже, добавление style="page-break-inside: avoid;" к последнему тегу содержимого ячейки таблицы устраняет проблему.

<td>
    <span>Some content here</span>
    <p>Another content</p>
    <div>One more content</div>
    <p style="page-break-inside: avoid;">Such tag does the thing!</p>
</td>
...