我想與iTextSharp做一些精確的對齊,但我一直在下降,因爲我無法找到一種方法來獲得大塊或段落的寬度/高度值。如果我創建一個具有特定字體和大小以及文本的段落,那麼它的尺寸應該是已知的,對嗎?itextsharp測量塊寬度/高度
我知道默認的左/右/中心線對我來說絕大部分都會訣竅,但是我知道這些尺寸是最有用的。有任何想法嗎?
我想與iTextSharp做一些精確的對齊,但我一直在下降,因爲我無法找到一種方法來獲得大塊或段落的寬度/高度值。如果我創建一個具有特定字體和大小以及文本的段落,那麼它的尺寸應該是已知的,對嗎?itextsharp測量塊寬度/高度
我知道默認的左/右/中心線對我來說絕大部分都會訣竅,但是我知道這些尺寸是最有用的。有任何想法嗎?
使用GetWidthPoint()
可以得到塊的寬度,塊的高度通常是字體的大小,除非您只使用小寫字母。如果是這樣,那麼你可以使用BaseFont.GetCharBBox()
手動測量字符。
段落是可流動的項目,但是,它們取決於它們寫入的上下文,因此測量它們更困難。 (塊不會自動換行,但是段落會這樣。)測量段落的最佳方法是將其寫入PdfCell
,然後測量PdfCell
。您不必實際將PdfCell
添加到文檔中。下面的鏈接解釋了一點。下面的代碼
http://itext-general.2136553.n4.nabble.com/Linecount-td2146114.html
使用的確切大小
Font font = ...;
BaseFont baseFont = font.BaseFont;
float width = baseFont.GetWidthPoint(text, fontSize);
float height = baseFont.GetAscentPoint(text, fontSize) - baseFont.GetDescentPoint(text, fontSize);
謝謝,我也發現瞭如何得到正確的高度測量。 BaseFont.GetAscentPoint() - BaseFont.GetDescentPoint()。也許你可以將它添加到你的答案,所以它是多一點。謝謝您的幫助。 – 2011-02-23 15:07:36
你可能也可以使用'ColumnText'的'go(false)',但我不確定這會讓你的寬度,只是高度。 – 2011-02-23 18:43:05
如果你只關心文本是否適合(如果這就是你正在做的事情,它實際上比測量更容易),ColumnText.go(false)真的更有用。 – DevTheo 2012-07-05 15:38:02