2010-11-10 40 views
4

是否有任何技术来计算AcroField中的文本高度?以PDF格式获取文本高度AcroField

换句话说,我有一个模板PDF与一个正文部分,我想粘贴我的长文本,我想获得文本的高度。如果溢出,则为文本的其余部分插入一个新页面。

回答

0

只需将您的字段设置为零的字体大小即可。这将自动调整字体的大小,以便给定的文本适合您的字段...在一定范围内。我认为它不会缩小到6分以下。

另一种选择是使用ColumnText并致电myColText.go(true)。这将“模拟”布局,让您知道什么地方没有实际绘制任何内容到PDF。只需将相同尺寸的字体文本掀起,字体大小为字体大小,并且结果应该相同。

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

请注意,您的字段的边界框不会匹配文本的布局框...您必须考虑钻孔样式&厚度。这就是为什么我建议你看看源头。

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;