itextsharp测量块宽度/高度

时间:2011-02-23 13:28:26

标签: c# itextsharp

我正在尝试与iTextSharp进行一些精确的对齐,但是我一直不知所措,因为我无法找到获得块或段落的宽度/高度值的方法。如果我创建一个特定字体和大小的文本和文本,那么它的尺寸应该是已知的,对吗?

我知道默认的左/右/中心对齐对我来说很有用,但我知道尺寸最有用的场景。有什么想法吗?

2 个答案:

答案 0 :(得分:13)

你可以使用GetWidthPoint()获得一个块的宽度,并且块的高度通常是字体的大小,除非你只使用小写字母。如果是,那么您可以使用BaseFont.GetCharBBox()手动测量字符。

然而,段落是可流动的项目,它们取决于它们被写入的上下文,因此测量它们更难。 (Chunks不会自动换行,但段落会这样做。)衡量段落的最佳方法是将其写入PdfCell,然后测量PdfCell。您不必将PdfCell实际添加到文档中。下面的链接解释了一点。

http://itext-general.2136553.n4.nabble.com/Linecount-td2146114.html

答案 1 :(得分:2)

使用以下代码获取确切尺寸

Font font = ...;
BaseFont baseFont = font.BaseFont;
float width = baseFont.GetWidthPoint(text, fontSize);
float height = baseFont.GetAscentPoint(text, fontSize) - baseFont.GetDescentPoint(text, fontSize);