我正在尝试与iTextSharp进行一些精确的对齐,但是我一直不知所措,因为我无法找到获得块或段落的宽度/高度值的方法。如果我创建一个特定字体和大小的文本和文本,那么它的尺寸应该是已知的,对吗?
我知道默认的左/右/中心对齐对我来说很有用,但我知道尺寸最有用的场景。有什么想法吗?
答案 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);