9

FPDF ライブラリを使用して、一部のドキュメント ファイルを PDF としてエクスポートします。1 つのドキュメントには、長さが異なる文字列のリストが含まれています。すべての文字列を として出力し$pdf->MultiCell()ます。ここで、その MultiCell の現在の高さが、1 行以上ある場合に同じ行間隔になるようにしたいと考えています。

コード例:

//MySQL Query
while($row = mysql_fetch_array($res) {
   $pdf->SetXY(18, $x);
   $pdf->MultiCell(80, 5, $rowr['text']); //text has one or more lines
   $x = $x + 10; // Here I would prefer a solution to say: $x = $x + 2 + height of the MultiCell()
}
4

4 に答える 4

2

私はgolangでコーディングしているので、いくつかの疑似コードを示します。phpアクセス可能なメソッドが と同じであることを願っていますgolang

という方法がありpdf.SplitLines(text, width)ます。文字列コンテンツと目的の幅を渡すと、そのコンテンツを表示するために計算される行を表す文字列の配列が返されます。

それで簡単です。疑似コードでは、次のようになります。

fontSize = 10;
lineHeight = 12;
targetWidth = 50;
pdf.SetFontSize(fontSize)
nLines = length(pdf.SplitLines(content, targetWidth));

multiCellHeight = nLines * lineHeight;
pdf.Multicell(targetWidth, lineHeight, content, ...) 

レンダリングされMultiCellた は、 に保存されているものとまったく同じサイズになりmultiCellHeightます。このようにして、レンダリング前にハイトを取得します。

渡さheightれたMultiCelllineHeight各行の であるため、これは機能しています。レンダリングする前に行がわかっている場合は、合計の高さが得られます。


何らかの理由でこれが失敗した場合は申し訳ありませんphp。その場合はお知らせください。

于 2019-03-11T11:23:43.003 に答える