.net - 根据可用宽度和字体计算文本高度?

我们正在使用 PDFsharp 从数据库中即时创建 PDF 文档。 .

我需要知道计算文本区域高度的最佳方法 关于使用的字体和可用宽度。

我需要知道高度,以便在需要时处理分页符。

最佳答案

PdfSharp.Drawing.XGraphics 对象有一个 MeasureString 方法,可以返回您需要的内容。

 var pdfDoc = new PdfSharp.Pdf.PdfDocument();
 var pdfPage = pdfDoc.AddPage();
 var pdfGfx = PdfSharp.Drawing.XGraphics.FromPdfPage(pdfPage);
 var pdfFont = new PdfSharp.Drawing.XFont("Helvetica", 20);

 while (pdfGfx.MeasureString("Hello World!").Width > pdfPage.Width)
      --pdfFont.Size;

 pdfGfx.DrawString("Hello World!", pdfFont
      , PdfSharp.Drawing.XBrushes.Black
      , new PdfSharp.Drawing.XPoint(100, 100));

这应该对您有所帮助。请考虑到我没有测试这段代码,因为我是为了提供帮助而即时编写的。它可能包含一些编译时错误,但您可能会明白。

https://stackoverflow.com/questions/901304/

相关文章:

formatting - 如何在 Spring MVC 3.0 中显示格式化的 DateTime?

python - 无法编码/解码 pprint 输出

java - 在碧 Jade 报告中将字符串格式化为货币格式

python - 并非所有参数都在字符串格式化期间转换

excel - 如何防止自动截断 Excel 单元格中的前导零

java - 如何格式化具有大参数列表的方法

asp.net-mvc - 使用 Razor View 引擎 - 如何将十进制值格式化为逗号和两位小

r - 在 R 绘图图例中添加 pch 符号

objective-c - 将 [NSDate date] 的日期缩短几个小时

python - 打印十六进制值时如何让 Python 使用大写字母?