1

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

我遇到的最大问题之一是能够在图像周围自动换行文本。我目前的算法看起来像:

  1. 将文本作为单词数组获取
  2. 一次添加一个单词到“当前行”变量,并在其上调用 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 回答