1

そのため、PHPでFPDFを使用して、画像とテキスト(HTMLではない)からPDFファイルをプログラムで生成しています。

私が抱えている最大の問題の1つは、画像の周りにテキストをワードラップできることです。私の現在のアルゴリズムは次のようになります。

  1. 単語の配列としてテキストを取得する
  2. '現在の行'変数に一度に1つずつ単語を追加し、その変数でGetStringWidth()を呼び出して、現在の行の幅を決定します。
  3. 事前に決定された最大幅に達したら、現在の行を行の配列に渡し、新しい「現在の行」から開始します。

これを行うと、不適切に分割されてはならない行の配列を取得できますが、テキストが右揃えになっているため、GetStringWidth()で行の幅を正確に指定できないことがわかりました。正当化されます。

私はFPDFのMultiCell方法を掘り下げて、正当化されたテキストを適切に分割する方法を理解しようとしましたが、実際にはその頭も尾も作成できません。要約すると、同様のアルゴリズムになります(そして、を使用して各行を書き込みますCell)が、実際には幅を計算するようには見えず、などのPDF「コード」を書き込みます0.375 Tw

文字列と最大幅を指定して、両端揃えのテキストの幅を計算する方法を知っている人はいますか?

4

2 に答える 2

2

本当に古い質問に答えます。

最後に、ライブラリから両端揃えを行う関数を取り出し、最後の行でもテキストを両端揃えにする別のパラメーターを使用できるように書き直しました。

これにより、特定の段落に対して完全に正当化されたテキストが作成され、最終段落をパラメーターなしで記述し、最終行が正当化されません (通常どおり)。

于 2012-11-16T03:40:02.817 に答える
0

これが役立つかどうかはわかりませんが、関連する問題があります。MultiCellが何行を占めるかを知る必要があります。

GetStringWidth()/ $ maxWidthを使用して、そのceil()を取得することでこれを行いました。

次に、(使用している線の高さを知っているので)推定高さを計算し、その数値を使用できます(私の場合は列を切り替えるかどうか)。

おそらく、ベーステキストをGetStringWidth()にフィードし、この方法で高さを推定することで、テキストを複数のMultiCell()に分割する適切な場所を決定できます。

于 2010-07-23T05:18:07.850 に答える