PDFSharp:用自动换行测量长文本的高度

时间:2013-03-17 13:06:15

标签: c# pdf pdf-generation pdfsharp

PDFSharp在绘制长文本部分时支持自动文本换行:

textFormatter.DrawString(text, font, XBrushes.Black, new XRect(x, y, textAreaWidth, 1000), XStringFormats.TopLeft);

如果文本长于textAreaWidth,则会将文本换行。

如何获得刚刚绘制的文本的高度?

我用gfx.MeasureString()尝试过,但没有支持指定最大宽度的重载。 gfx.MeasureString()返回文本的大小而不进行文本换行。

感谢任何提示。

3 个答案:

答案 0 :(得分:3)

XTextFormatter类(PDFsharp附带的源代码)旨在帮助您入门。如果它不符合您的需要,请进行修改。

由于XTextFormatter在内部保持Y位置,因此返回刚刚绘制的文本的高度将是一个相当简单的更改。

不要修改XTextFormatter,而是考虑使用MigraDoc Foundation(也包括在内)。

答案 1 :(得分:3)

PdfSharp的扩展对我来说并不适用。不知道为什么,但我保持比预期更高的高度(几乎是所需高度的两倍)。所以我决定在XGraphics对象中编写一个扩展方法,我可以在其中指定maxWidth并在内部计算软换行符。 代码使用默认的public void form4() { ... add(okbutton); } public void receiver(String rlc) { x = Integer.parseInt(rlc); parted = new JLabel[x]; // <--- now x is initialized lite = 26/x; ... 来内联文本Width和Aggregates以及文本中的单词来计算换行符。 计算软换行符的代码如下所示:

XGraphics.MeasureString(string, XFont)

有关完整代码,请参阅以下要点:https://gist.github.com/erichillah/d198f4a1c9e8f7df0739b955b245512a

答案 2 :(得分:1)