字型 iText 5 與 iText 7
在 iText 的第一個版本中,只有一個字型類:Font
。
使用此字型,你可以為五種字型系列中的十四種字型建立一個 Font
物件:Helvetica(常規,粗體,傾斜,粗斜),Times Roman(常規,粗體,斜體,粗體斜體),Courier(常規,粗體) ,斜,粗斜),符號和 Zapf Dingbats。
這樣的 Font
物件是這樣建立的:
Font font = new Font(FontFamily.TIMES_ROMAN);
你還必須定義字型大小,例如:
Font font14pt = new Font(FontFamily.TIMES_ROMAN, 14);
預設字型是 Helvetica; 預設字型大小 12。
iText 不斷髮展,支援更多字型。BaseFont
類用於在內部處理這些字型。BaseFont
類是這樣建立的:
BaseFont bf_russian = BaseFont.createFont(
"resources/fonts/FreeSans.ttf",
"CP1251",
BaseFont.EMBEDDED);
第一個引數是字型程式的路徑,例如 TTF 檔案,第二個引數是編碼,例如 CP1251 表示西里爾字元,第三個參數列示是否需要嵌入字型的子集。
當你在最低階別新增內容時,將使用 BaseFont
類,例如在使用 beginText()
,setFontAndSize()
,setTextMatrix()
,showText()
,endText()
序列在程式碼中建立文字物件時。通常,如果你是 PDF 專家,則只能使用此低階方法。如果你對 PDF 語法一無所知,則不應使用此類序列。
你還可以使用 BaseFont
類建立 Font
物件:
Font russian = new Font(bf_russian, 12);
現在我們可以使用 russian
字型建立一個包含俄語文字的 Paragraph
。
iText 5 中還有其他一些方法可以建立 Font
物件,但這是最常用的方法。人們有時會對 Font
和 BaseFont
之間的區別感到困惑,他們並不總是使用正確的方法。
我們在 iText 7 中修復了什麼:
我們讓事情更加統一。現在有一個 PdfFont
類,你使用 PdfFontFactory
建立一個字型:
PdfFont font = PdfFontFactory.createFont(FontConstants.TIMES_ROMAN);
PdfFont russian = PdfFontFactory.createFont(
"src/main/resources/fonts/FreeSans.ttf", "CP1251", true);
如果要切換到其他字型大小,則不再需要建立不同的字型物件。切換到不同的字型大小可以使用 setFontSize()
方法完成:
Paragraph p = new Paragraph("Hello World! ")
.add(new Text("Hallo Wereld! ").setFontSize(14))
.add(new Text("Bonjour le monde! ").setFontSize(10));
預設字型仍為 Helvetica,預設字型大小仍為 12,但你現在可以為文件定義字型(和字型大小):
document.setFont(font);
在這種情況下,font
將是新增構建塊(例如 Paragraph
)時的預設字型,而不指定字型。
想知道更多?
閱讀介紹 PdfFont 類 ,它是 iText 7:Building Blocks教程的第 1 章。獲得免費電子書!