获取PDF AcroField中的文本高度

时间:2010-11-10 22:38:09

标签: c# pdf itextsharp

是否有任何技术可以计算AcroField中文本的高度?

换句话说,我有一个带有正文部分的模板PDF,我想将我的长文本粘贴到其中,我希望获得文本的高度。如果它溢出,请为文本的其余部分插入新页面。

2 个答案:

答案 0 :(得分:1)

这将给出高度和宽度:

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;

答案 1 :(得分:0)

只需将字段设置为零字体即可。这将自动调整字体大小,以便给定文本适合您的字段......在一定限度内。我认为它不会低于6点。

另一种选择是使用ColumnText并致电myColText.go(true)。这将“模拟”布局,让您知道在没有实际绘制PDF的任何内容的情况下会发生什么。只需添加一个与您的字段具有相同尺寸,字体和字体大小的c​​olumnText,您的结果应该相同。

事实上,我相信iText的文本字段呈现代码在内部使用ColumnText。是的,请查看TextField.getAppearance()的来源。

请注意,您的字段的边界框不会与文本布局的框相匹配...您必须考虑到镗孔样式&厚度。这就是我建议你看看来源的原因。