PDFsharp,测量具有特定宽度的字符串的高度

时间:2018-08-07 08:18:41

标签: c# pdf-generation pdfsharp

对于C#来说不是什么新事物,就像Bambi在PDFsharp上一样。这是我第一次在该论坛上发帖,所以,请耐心等待!

我已经使用PrintDocument创建了一些订单报告,现在我想创建PDF。

使用包装类和扩展名,我只需要编写一组可以使用PDFsharp或PrintDocument的“布局代码”。

但是,我不知道如何在特定宽度下测量字符串的高度,例如图形的SizeF MeasureString(字符串str,Font aFont,int宽度)。由于它是基于图形的,因此我必须不打印就知道其高度。 我一直在寻找答案,但没有得到正确的答案。

2 个答案:

答案 0 :(得分:0)

PDFsharp使用XGraphics类进行绘图。 XGraphics还有一个MeasureString方法。

XGraphics也可以用于打印,因此也许您只需要使用PDFsharp的XGraphics类的一种实现即可。

使用PDFsharp的XGraphics类,您只能获取具有特定字体高度的特定文本的宽度和高度,因此要获取特定宽度的高度,这可能需要执行循环(可能带有间隔嵌套)确定合适的字体高度。

要确定多行文本的高度,可以使用XTextFormatterEx类家族中的一个类。也许这就是您需要的。
看这里:
https://forum.pdfsharp.net/viewtopic.php?f=8&t=3192

答案 1 :(得分:0)

这就是我用一种简单的扩展方法解决它的方法:

 public static XSize MeasureString(this XGraphics gfx, string txt, XFont font, double width)
    {
        int lastfitchar;
        double neededHeight;
        XTextFormatterEx tf = new XTextFormatterEx(gfx);

        tf.PrepareDrawString(
            txt,
            font,
            new XRect(0, 0, width, XUnit.FromMillimeter(300F)),
            out lastfitchar, out neededHeight);
        return new XSize(width, neededHeight);
    }

也许可以帮助某人。