我正在使用iText編寫PDF。在某些情況下,我需要使用SetVisibleSignature
函數對PDF進行簽名。有了這個函數,我們需要指定我們將寫入內容的矩形。如何計算iText中的字符串寬度?
但是我很難計算字符串的寬度,所以我可以在設置PDF上的簽名之前設置矩形。
如何計算iText中的字符串寬度?
我正在使用iText編寫PDF。在某些情況下,我需要使用SetVisibleSignature
函數對PDF進行簽名。有了這個函數,我們需要指定我們將寫入內容的矩形。如何計算iText中的字符串寬度?
但是我很難計算字符串的寬度,所以我可以在設置PDF上的簽名之前設置矩形。
如何計算iText中的字符串寬度?
您可以使用BaseFont.getWidthPoint(String text, float fontSize)
來獲取pt中字符串的寬度。
或將字符串一大塊,做chunk.getWidthPoint()
接受的答案BaseFont.getWidthPoint
,不會在iText的5.5.4工作,因爲方法是不是靜態的了。即使它仍然存在,它不會考慮正在使用的真實字體(它的族或其粗體/斜體),因爲它是靜態的並且正在接收有限的參數。
chunk.getWidthPoint()
確實可以像後面提到的那樣處理真正的字體,但是對於某些用途來說,爲了寬度而不斷地創建一個塊是很浪費的,特別是如果該塊不在以後使用。
這是chunk.getWidthPoint()
作爲一個獨立的替代品使用的底層代碼,假設你沒有做任何水平縮放:
font.getCalculatedBaseFont(true).getWidthPoint(text, font.getCalculatedSize());
我終於實現了這個與ColumnText.getWidth(Phrase phrase)
大小什麼Phrase
的寬度將在用ColumnText.showTextAligned
顯示之前。
在這個片段中,我使用ColumnText.getWidth
來調整字符串的長度以將其放在頁面的右上角。它在人像A4中工作,沒有進一步測試。
Phrase phrase = new Phrase("Bla bla bla!", new Font(FontFamily.HELVETICA, 9));
float width = ColumnText.getWidth(phrase);
ColumnText.showTextAligned (
canvas,
Element.ALIGN_LEFT,
phrase,
canvas.getPdfDocument().right() - width,
canvas.getPdfDocument().top() + 9,
0
);
您如何檢索basefont實例? – 2013-10-24 09:05:51
我想知道表中段落的寬度。看來使用塊的方法返回錯誤的值。 – 2013-10-24 09:27:03
getWidthPoint如何靜態地知道假定哪種字體? x_X – 2016-03-22 09:07:00