如何使用PdfSharp库测量文本长度

时间:2014-10-20 12:47:41

标签: pdf pdfsharp

我需要测量PDF中的文本长度,如果长度超过一定量,则换行。我已经在使用PdfSharp库。

我已经使用以下代码来确定文本的长度。

public static Size MeasureString(string s, Font font)
{
    SizeF result;
    using (var image = new Bitmap(1, 1))
    {
          using (var g = Graphics.FromImage(image))
          {
              result = g.MeasureString(s, font);
          }
     }
     return result.ToSize();
}

据我了解,我非常依赖于将Height类的WidthSize属性转换为毫米的分辨率和dpi。但根据PdfSharp的团队在this post中回答“PDF文件是没有DPI的矢量文件”。

所以我对使用这个库测量文本长度的正确方法感到困惑。

1 个答案:

答案 0 :(得分:6)

PDF文件没有像素,PDF文件没有DPI。

带有PDFsharp的标准单位是分数。每英寸有72个点。

您可以使用点,毫米,厘米,英寸,...的文本长度 页面的宽度可以是点,毫米,厘米,英寸......

XTextFormatter类可以为您做简单的换行:
http://www.pdfsharp.net/wiki/TextLayout-sample.ashx

此示例显示如何调用MeasureString:
http://www.pdfsharp.net/wiki/Graphics-sample.ashx#Show_how_to_get_text_metric_information_19
对XGraphics对象使用正确的MeasureString方法,你将获得一个带有文本尺寸的XSize对象 - 没有像素,但是mm,cm,inch,point,......

使用MigraDoc进行复杂文本格式的换行。