我们正在使用 XFinium PDF 库从移动设备生成 PDF 文档。我们正在使用代码示例编写包装文本,如下所示:
PdfStringAppearanceOptions sao = new PdfStringAppearanceOptions();
sao.Brush = brush;
sao.Font = helvetica;
// Height is not set, text has no vertical limit.
PdfStringLayoutOptions slo = new PdfStringLayoutOptions();
slo.HorizontalAlign = PdfStringHorizontalAlign.Justified;
slo.VerticalAlign = PdfStringVerticalAlign.Top;
slo.X = 20;
slo.Y = 70;
slo.Width = 280;
string text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. " +
"Sed vel euismod risus. Fusce viverra, nisi auctor ullamcorper porttitor, " +
"ipsum lacus lobortis metus, sit amet dictum lacus velit nec diam. " +
"Morbi arcu diam, euismod a auctor nec, aliquam in lectus." +
"Ut ultricies iaculis augue sit amet adipiscing. Aenean blandit tortor a nisi " +
"dignissim fermentum id adipiscing mauris. Aenean libero turpis, varius nec ultricies " +
"faucibus, pretium quis lectus. Morbi mollis lorem vel erat condimentum mattis mollis " +
"nulla sollicitudin. Nunc ut massa id felis laoreet feugiat eget at eros.";
page.Graphics.DrawString(text, sao, slo);
但是,如果我们不知道下一个 y 坐标是什么,我们如何在其下方绘制另一个字符串?有没有办法计算现有文本的高度或找出下一个可用的 y 坐标是什么?
谢谢。
最佳答案
Xfinium.Pdf.Graphics.Text.PdfTextEngine 类包括静态方法 GetStringHeight(string s, PdfFont font, double width)。传入要绘制的字符串、绘制字符串所用的字体和文本环绕的宽度,该方法将返回环绕的高度
文本。
对于您的代码 fragment ,调用如下所示:
double textHeight = PdfTextEngine.GetStringHeight(text, helvetica, slo.Width);
免责声明:我为开发 XFINIUM.PDF 库的公司工作。