PDFsharp-较新版本中缺少XStringFormatFlags



我目前正在进行的一个项目使用MigraDoc和PDFsharp。到目前为止,它使用了最新的稳定版本1.32.2608,但我们正在尝试迁移到一个更新的预发布版本(因为一个使用1.50.4619-beta4c的连接项目(。几乎所有东西看起来都很好,但有一件事我不确定该怎么办
有一个函数可以测量字符串的大小,简单地说就是:

protected SSize GetSize(string text, MigraDoc.DocumentObjectModel.Font font)
{
var doc = new PdfDocument();
var page = doc.AddPage;
var sizer = XGraphics.FromPdfPage(page);
var style = XFontStyle.Regular;
//some style checks
var xf = new XFont(font.Name, font.Size, style);
var st = new XStringFormat();
st.FormatFlags = XStringFormatFlags.MeasureTrailingSpaces;
var xs = sizer.MeasureString(text, xf, st);
return new SSize {
Height = XUnit.FromPoint(xs.Height * _measureCorrection).Centimeter,
Width = XUnit.FromPoint(xs.Width * _measureCorrection).Centimeter
};
}

有问题的线路是:

st.FormatFlags = XStringFormatFlags.MeasureTrailingSpaces;

因为XStringFormat丢失了FormatFlags属性,并且不再有XStringFormatFlags枚举。有没有人有类似的经历,可以提供线索,如何将其正确转换为新版本?

在PDFsharp官方论坛上,您可以找到TextMeasurement类的实现,它似乎比上面的代码片段效率高得多:
https://forum.pdfsharp.net/viewtopic.php?f=8&t=3196您的代码创建了一个新的PDF文档和一个新PDF页面,只是为了测量每个字符串的字符串。

处理尾随空格:

  • 一个选项是分别测量空间-测量"X X"one_answers"XX",并将差值用作空间的宽度
  • 或者在每个字符串后面加上"X",然后减去"X"的宽度,得到带有尾随空格的字符串的宽度

您可以使用TextMeasurement类开始,并在类内分别保存"X"或"的宽度,以获得更高效的实现。

相关内容

  • 没有找到相关文章

最新更新