2012-01-17 28 views
4

我使用TCPDF打印一些數據表:一個大表(儘管通常不會長於一頁),然後是第二個較小的表。
在某些情況下,兩個表一起長於一個頁面,所以TCPDF在第二個表的中間插入分頁符。我的客戶希望避免這種行爲:他們寧願將第二張表完全放在新的頁面上,即如果兩張表都不適合放在單個頁面上,則在表格之前插入分頁符tcpdf:防止分頁內的頁面中斷

當然,如果兩張表都適合在一個頁面上,則不應該使用分頁符。

那麼有誰知道是否有辦法指示TCPDF 而不是在給定表中插入分頁符?

回答

-1

提前計算第二張桌子的高度。如果需要,使用checkPageBreak方法添加分頁符。

9

開始一個事務,插入表格,檢查你是否在一個新的頁面,如果是的話,回滾並添加一個頁面,然後插入你的表格。

非常重要:不要忘了真正的使命回滾:

$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();  
} 

希望它可以根據文檔有助於 米歇爾

+0

這是一個有點老問題,不相關的了我,所以我現在不能測試你的答案。不過謝謝! – s427 2013-11-25 17:22:54

+2

要小心這種方法,以確保您的$ html內容永遠不會超過一頁。在這種情況下,最終頁面總是不等於起始頁面,並且腳本將簡單地繼續添加空白頁面。 IF語句中的一個標誌將允許您跟蹤是否已添加空白,並允許您強制停止或警告。 – RelicScoth 2014-10-07 15:45:37

+0

這對我來說非常好。謝謝! – DACrosby 2014-12-10 04:49:34

4

,有添加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

+1

雖然這個鏈接可能回答這個問題,但最好在這裏包含答案的基本部分,並提供參考鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 - [來自評論](/ review/low-quality-posts/10271475) – 2015-11-20 07:55:52

+0

好的,使sence,我被添加編輯後。謝謝 – mimros 2015-11-20 15:01:23