对于C#来说不是什么新事物,就像Bambi在PDFsharp上一样。这是我第一次在该论坛上发帖,所以,请耐心等待!
我已经使用PrintDocument创建了一些订单报告,现在我想创建PDF。
使用包装类和扩展名,我只需要编写一组可以使用PDFsharp或PrintDocument的“布局代码”。
但是,我不知道如何在特定宽度下测量字符串的高度,例如图形的SizeF MeasureString(字符串str,Font aFont,int宽度)。由于它是基于图形的,因此我必须不打印就知道其高度。 我一直在寻找答案,但没有得到正确的答案。
答案 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);
}
也许可以帮助某人。