2

getNumLines()それに応じて配置する必要があるため、テキストを書く前に行数を見積もっています。getNumLines() は、MultiCell()実際に必要なテキストよりも多くのスペースを計算しているようです。で書いたときにまだセルに収まる長い行は、MultiCell()によってソフトラップされているようですgetNumLines():

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

私のテスト$linesでは3ですが、2行しか印刷されていません。$width を少し大きくすると、適切な値が得られます。そして、長いのは最初の行です。そのため、ラップされる最終的に非印刷文字になることはできません。

たぶん、私が渡すパラメータ "L" の整列が原因MultiCell()でしょうか? しかし、そのようなものはありませんgetNumLines()... 何か提案はありますか?

TCPDF のバージョン: 5.9.156

4

3 に答える 3

2

tcpdf のバグトラッカーのこのチケットのコメントで説明されている別の手法があり、非常に有望に思えます。

正確な行数を知りたい場合は、次の手法を使用する必要があります。

// 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();
于 2012-06-13T11:34:18.253 に答える
1

ハ!バグが見つかりました:getNumLines()改行とキャリッジリターンのスペースを計算します。

これを回避するために、フォント定義ファイルを編集しました$cw。各文字の幅を定義するという配列があります。2つのエントリを追加しまし10 => 0, 13 => 0た。改行とキャリッジリターンの幅をゼロに設定するためです。

于 2012-06-13T11:21:48.513 に答える