我需要测量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
类的Width
和Size
属性转换为毫米的分辨率和dpi。但根据PdfSharp的团队在this post中回答“PDF文件是没有DPI的矢量文件”。
所以我对使用这个库测量文本长度的正确方法感到困惑。
答案 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进行复杂文本格式的换行。