我们正在使用 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 库的公司工作。

10-08 19:10