2014-07-16 109 views
2

我一直在嘗試使用Itext PDF編寫器創建PDF文件。我發現Superscript(0,4,5,6,7,8,9)和下標(0,1,2,3,4,5,6,7,8,9)在默認字體中是不允許的。在默認設置下,PDF文本只允許上標1,2,3。Itext PDF作家,有沒有什麼辦法可以讓pdf中的unicode下標符號? (沒有setTextRise)

我的PDF中的字符串包含下標和上標字符,有沒有一種方法可以在PDF中顯示它們?

我搜查,發現:

  1. setTextRise()用於相對於改變文本的位移到當前行的方法,我不能使用它,因爲我不知道哪些字符超/子腳本。
  2. 是否有將文本的編碼/字體更改爲UTF-8的設置,以便它允許所有的Unicode符號?

或者一些其他的方式,因爲我要證明像H₂SO⁴2,O 2等

化學符號這將會是很大的幫助,謝謝!

+2

您聲明iText不支持UNICODE上標字符。該指控是錯誤的。 iText支持許多不同的字體,如果字體包含UNICODE和特定的字形,iText允許您使用它。你應該改述你的問題,並問:我在哪裏可以找到一個包含上標和下標字符的*字體*,以便我可以將它們與iText結合使用? –

+0

是的,謝謝。我編輯了這個問題。我很抱歉,我沒有聲稱IText不支持UNICODE,我的意思是,我無法在默認設置中找到幾個支持。 是的,正如你所建議的,我會檢查出不同的字體。 – nexus

回答

5

請看看SubSuperScript的例子,我寫回答你的問題。我這樣寫H₂SO⁴:

BaseFont bf = BaseFont.createFont(FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED); 
Font f = new Font(bf, 10); 
Paragraph p = new Paragraph("H\u2082SO\u2074", f); 
document.add(p); 

我發現在維基百科上的特定字符的值:http://en.wikipedia.org/wiki/Unicode_subscripts_and_superscripts

正如你所看到的,iText的是完全有能力展現寫在標特殊字符或上標:​​

我寫這個例子時遇到的主要問題是找到一個支持特定字形的字體。這是我在之前的評論中解釋的。我最終使用了一種名爲「Carbo Regular」的字體。

+0

嗨,我嘗試了一些你建議的字體。這已經解決了我的問題。我會把它作爲答案。謝謝。 – nexus

3

我能得到利用這段代碼來解決這個問題:

我不得不註冊一個新字體「宋體的Unicode MS」

FontFactory.register("Path/to/font/arial unicode ms.ttf","Arial Unicode MS"); 

然後同時在PDF我不得不寫與我的字符串一起使用此字體:

FontFactory.getFont("Arial Unicode MS",BaseFont.IDENTITY_H,BaseFont.EMBEDDED); 
相關問題