tcpdf: предотвратить разрыв страницы внутри блока - PullRequest
6 голосов
/ 17 января 2012

Я использую TCPDF для печати некоторых таблиц данных: одна большая таблица (хотя обычно не длиннее страницы), а затем вторая, меньшая.
В некоторых случаях две таблицы вместе длиннее одной страницы, поэтому TCPDF вставляет разрыв страницы в середине второй таблицы. Мои клиенты хотят избежать такого поведения: они предпочли бы иметь вторую таблицу полностью на новой странице, то есть вставить разрыв страницы перед таблицей, если обе таблицы не помещаются на одной странице.

Конечно, если обе таблицы умещаются на одной странице, разрыв страницы не следует использовать.

Так кто-нибудь знает, есть ли способ указать TCPDF , а не вставлять разрыв страницы в заданную таблицу?

Ответы [ 3 ]

13 голосов
/ 23 ноября 2013

Начните транзакцию, вставьте таблицу, проверьте, находитесь ли вы на новой странице, если да, откатитесь и добавьте страницу перед вставкой таблицы.

ОЧЕНЬ ВАЖНО : donне забудьте ИСТИННЫЙ откат вызова:

$this->startTransaction(); 
$start_page = $this->getPage();                       
$this->writeHTMLCell( 0, 0, '', '', $html, 0, 1, false, true, 'C'  );
$end_page = $this->getPage();
if  ($end_page != $start_page) {
    $this->rollbackTransaction(true); // don't forget the true
    $this->AddPage();
    $this->writeHTMLCell( 0, 0, '', '', $html, 0, 1, false, true, 'C'  );
}else{
    $this->commitTransaction();     
} 

Надеюсь, это поможет Мишель

7 голосов
/ 20 ноября 2015

в соответствии с документацией, есть возможность добавить nobr = "true" в тег таблицы в качестве атрибута.

 $tbl = <<<EOD
<table border="1" cellpadding="2" cellspacing="2" nobr="true">
 <tr>
  <th colspan="3" align="center">NON-BREAKING TABLE</th>
 </tr>
 <tr>
  <td>1-1</td>
  <td>1-2</td>
  <td>1-3</td>
 </tr>
</table>
EOD;

$pdf->writeHTML($tbl, true, false, false, false, '');

http://www.tcpdf.org/examples/example_048.phps

0 голосов
/ 25 февраля 2012

Рассчитайте высоту второго стола заранее.Используйте метод checkPageBreak, чтобы добавить разрыв страницы, если это необходимо.

...