所以我在 PHP 中使用 FPDF 以编程方式从图像和文本(不是 HTML)生成 PDF 文件。
我遇到的最大问题之一是能够在图像周围自动换行文本。我目前的算法看起来像:
- 将文本作为单词数组获取
- 一次添加一个单词到“当前行”变量,并在其上调用 GetStringWidth() 以确定当前行的宽度
- 一旦达到预定的最大宽度,我将当前行传递到行数组,并从新的“当前行”开始。
这样做可以让我得到一组不应该不正确中断的行,但是我发现因为我的文本是对齐的,所以 GetStringWidth() 不能准确地给我行的宽度。有道理。
我已经深入研究了 FPDF 的MultiCell
方法,试图弄清楚它如何正确地破坏对齐的文本,但不能真正做到正面或反面。它似乎归结为类似的算法(并且它使用 编写每一行Cell
),但它实际上似乎从未计算宽度,它写出 PDF“代码”,例如0.375 Tw
.
有谁知道如何计算对齐文本的宽度,给定一个字符串和一个最大宽度?