所以我在PHP中使用FPDF以编程方式从图像和文本(而不是HTML)生成PDF文件。
我遇到的最大问题之一是能够在图像周围进行文字包装。我目前的算法如下:
这样做可以让我得到一个不应该不正确地破坏的行数,但是我发现因为我的文本是对齐的,GetStringWidth()不能准确地给我行的宽度这是有道理的。
我已经深入研究了FPDF的MultiCell
方法,试图弄清楚它是如何正确地破坏了正确的文本,但却无法真正做出正面或反面。它似乎归结为类似的算法(并且它使用Cell
写入每一行)但它实际上似乎从未计算宽度,它写出了诸如0.375 Tw
之类的PDF“代码”。
在给定字符串和最大宽度的情况下,有没有人知道如何计算对齐文本的宽度?
答案 0 :(得分:2)
回答一个非常古老的问题。
最后,我从库中取出了合理化的函数并重写了它,以允许另一个参数,使其即使在最后一行也可以继续对齐文本。
这将导致文本完全对齐特定段落,然后您编写没有参数的最终段落,并且最后一行不合理(按照正常情况)。
答案 1 :(得分:0)
不确定这是否有帮助,但我有一个相关的问题 - 需要知道MultiCell会占用多少行。
我是通过使用GetStringWidth()/ $ maxWidth并获取ceil()来实现的。
然后我可以计算估计的高度(因为我知道我正在使用的线高)并使用该数字(在我的情况下是否切换列)。
也许将基础文本输入GetStringWidth()并以这种方式估计高度将允许您确定将文本分成多个MultiCell()的适当位置。