【发布时间】:2010-11-10 22:38:09
【问题描述】:
有什么方法可以计算 AcroField 中文字的高度吗?
换句话说,我有一个带有正文部分的模板 PDF,我想将长文本粘贴到该模板中,并且我想获取文本的高度。如果溢出,为其余文本插入一个新页面。
【问题讨论】:
标签: c# pdf itextsharp
有什么方法可以计算 AcroField 中文字的高度吗?
换句话说,我有一个带有正文部分的模板 PDF,我想将长文本粘贴到该模板中,并且我想获取文本的高度。如果溢出,为其余文本插入一个新页面。
【问题讨论】:
标签: c# pdf itextsharp
这将给出高度和宽度:
Vector curBaseline = renderInfo.GetBaseline().GetStartPoint();
Vector topRight = renderInfo.GetAscentLine().GetEndPoint();
iTextSharp.text.Rectangle rect = new iTextSharp.text.Rectangle(
curBaseline[Vector.I1], curBaseline[Vector.I2],
topRight[Vector.I1], topRight[Vector.I2]
);
Single curFontSize = rect.Height;
【讨论】:
只需将您的字段设置为零字体大小。这将自动调整字体大小,以便给定的文本适合您的字段......在一定范围内。我认为它不会缩水到 6 点以下。
另一种选择是使用ColumnText 并调用myColText.go(true)。这将“模拟”布局,让您知道什么在哪里,而无需实际绘制任何东西到 PDF。只需创建一个与您的字段具有相同尺寸、字体和字体大小的 columnText,您的结果应该是相同的。
其实我相信iText的文本字段渲染代码内部使用了ColumnText。是的,请查看TextField.getAppearance() 的来源。
请注意,您的字段的边界框与文本布局的框不匹配...您必须考虑钻孔样式和厚度。这就是为什么我建议您查看源代码。
【讨论】: