PHP& FPDF:计算对齐的文本宽度

时间:2010-07-20 00:02:56

标签: php text width fpdf justify

所以我在PHP中使用FPDF以编程方式从图像和文本(而不是HTML)生成PDF文件。

我遇到的最大问题之一是能够在图像周围进行文字包装。我目前的算法如下:

  1. 以文字数组形式获取文字
  2. 一次向“当前行”变量添加一个单词,并在其上调用GetStringWidth()以确定当前行的宽度
  3. 一旦达到预定的最大宽度,我将当前行传递给一个行数组,并从一个新的“当前行”开始。
  4. 这样做可以让我得到一个不应该不正确地破坏的行数,但是我发现因为我的文本是对齐的,GetStringWidth()不能准确地给我行的宽度这是有道理的。

    我已经深入研究了FPDF的MultiCell方法,试图弄清楚它是如何正确地破坏了正确的文本,但却无法真正做出正面或反面。它似乎归结为类似的算法(并且它使用Cell写入每一行)但它实际上似乎从未计算宽度,它写出了诸如0.375 Tw之类的PDF“代码”。

    在给定字符串和最大宽度的情况下,有没有人知道如何计算对齐文本的宽度?

2 个答案:

答案 0 :(得分:2)

回答一个非常古老的问题。

最后,我从库中取出了合理化的函数并重写了它,以允许另一个参数,使其即使在最后一行也可以继续对齐文本。

这将导致文本完全对齐特定段落,然后您编写没有参数的最终段落,并且最后一行不合理(按照正常情况)。

答案 1 :(得分:0)

不确定这是否有帮助,但我有一个相关的问题 - 需要知道MultiCell会占用多少行。

我是通过使用GetStringWidth()/ $ maxWidth并获取ceil()来实现的。

然后我可以计算估计的高度(因为我知道我正在使用的线高)并使用该数字(在我的情况下是否切换列)。

也许将基础文本输入GetStringWidth()并以这种方式估计高度将允许您确定将文本分成多个MultiCell()的适当位置。