2012-06-08 40 views
1

我使用getNumLines()來估計寫入文本之前的行數,因爲它必須相應地定位。 似乎getNumLines()爲文本計算更多的空間,然後MultiCell()實際需要。長行,與MultiCell()書寫時仍然裝配到細胞似乎是軟包裹由getNumLines()TCPDF的getNumLines()有時是錯誤的

$lines = $pdf->getNumLines($text, $width); 
$pdf->MultiCell($width, 50, $text, 0, "L"); 

在我的測試$lines是3,而被打印僅2行。如果我增加$寬度有點我得到正確的價值。而且這是第一行是更長的一行。所以它最終不能是一個非打印字符。

也許是因爲對齊參數「L」我傳遞給MultiCell()?但有沒有這樣的getNumLines() ...有什麼建議?

TCPDF的版本:5.9.156

+0

我有同樣的問題,只是getNumLines()計算爲我的字符串更少的空間。任何解決我的問題? –

+0

我會嘗試在這個答案中描述的技術:http://stackoverflow.com/a/11014007/1060128 – johjoh

回答

1

哈!發現錯誤:getNumLines()計算換行和回車的空間。

爲了避免這種情況,我編輯了字體定義文件:有一個名爲$cw的數組定義每個字符的寬度。我添加了兩個條目:10 => 0, 13 => 0來設置換行寬度和回車歸零。

+0

發現這個錯誤ist跟蹤[這裏](http://sourceforge.net/tracker/index。 php?func = detail&aid = 3146697&group_id = 128076&atid = 710532),[here](http://sourceforge.net/tracker/index.php?func=detail&aid=2972502&group_id=128076&atid=710532)和[here](http:// sourceforge.net/tracker/index.php?func=detail&aid=2935534&group_id=128076&atid=710532) – johjoh

2

有一個在this ticket TCPDF的bug追蹤,註釋中的描述的另一種技術聽起來很promissing:

如果你想Ø知道你必須使用以下 技術線的確切數量:

// store current object 
$pdf->startTransaction(); 
// get the number of lines 
$lines = $pdf->MultiCell($w, 0, $txt, 0, 'L', 0, 0, '', '', true, 0, false,true, 0); 
// restore previous object 
$pdf = $pdf->rollbackTransaction(); 
0

最後修復了TCPDF中'dirty'html-string表的相同錯誤。 JohJoh回答約10 => 0,13 => 0讓我走向正確的方向。 我將它改爲10 => 8750,13 => 8750,以將其他td的內容降低到合適的數量。

相關問題