2011-11-22 64 views
5

我的Java應用程序使用iText創建PDF。有時候內容是亞洲人,這是行不通的。亞洲字符不可見。如何配置iText以支持亞洲字符?

我在iText下載頁面找到了iTextAsian.jar,但不知道如何使用它。

目標是使用我最喜歡的字體作爲默認字體。但是當一個字符不可用時,該字符將使用其他字體。我已閱讀,iText可以選擇自動方式的字體,但如何配置?

我也希望所有需要的字體都包含在PDF中,因此用戶不必在他們的計算機上安裝亞洲字體。

+0

它們不是「符號」,它們是字符。 – NullUserException

+0

您的用戶是否都安裝了PDF閱讀器安裝的亞洲字體包,或者您是否可以控制PDF查看器的已安裝基礎,以確保它們可以執行?如果沒有,使用PDF嵌入字體會使得生成的PDF太大 - iText只嵌入文檔所需的字形? –

+0

不控制用戶。這是一個創建PDF的Web應用程序。非常大的PDF比沒有亞洲字符的PDF更好。下一步將檢測用戶內容是否包含亞洲字符並跳過包含基於此的額外字體。 – Witek

回答

2
  • 您可以定義一個「FontSelector」,然後添加您的字體(fontSelector.AddFont)。現在,iText將使用fontSelector.Process方法從下一個定義的字體中選擇不可用的字符。
  • 亞洲字符通常是Unicode,因此您必須設置「BaseFont.IDENTITY_H」而不是Ansi字符(例如FontFactory.GetFont(「tahoma」,BaseFont.IDENTITY_H))。
  • 如果是RTL,則需要將文本包裝到具有運行方向屬性的元素中,並將其設置爲rtl。
+0

我必須通過addFont()添加哪些字體? – Witek

+0

BaseFont.IDENTITY_H將選定的.ttf字體嵌入最終的PDF中。因此,請查找具有該語言完整字符的字體。 – VahidN

+0

由於網站上的用戶可以來自任何地方,我必須將所有字符的字體添加到選擇器,對嗎?如何找出哪些(10?)免費字體一起涵蓋了所有字符的99%? – Witek