2011-03-20 76 views
1

我們有一個Grails應用程序,我們使用Render Plugin來渲染.pdf中的內容。這一切都適用於英語,但不幸的是,對於阿拉伯語(我們必須呈現),所有字詞似乎都「破碎」。一些數字和空格有...Grails/RenderPdf Arabic Chars

渲染插件使用iText和我曾嘗試與方法:

... 
def renderer = new ITextRenderer() 
FontResolver resolver = renderer.getFontResolver() 
renderer.getFontResolver().addFont("/usr/share/fonts/truetype/ttf-arabeyes/ae_AlArabiya.ttf", BaseFont.EMBEDDED) 
...

(這裏使用的字體是隻是一個例子),但在任何情況下,不起作用。

任何人有這種問題的經驗嗎?

預先感謝您!

回答

0
renderer.getFontResolver.addFont(fontPath, BaseFont.IDENTITY_H, BaseFont.EMBEDDED_SUBSET); 

在iText的字體的默認編碼是WinAnsiEncoding,AKA代碼頁1252。你需要指定包含所需字符的編碼...

沒錯。谷歌代碼生成的代碼,該位爲addFont你使用:

public void addFont(String path, boolean embedded) 
     throws DocumentException, IOException { 
    addFont(path, BaseFont.CP1252, embedded); 
} 

IDENTITY_H讓你解決一個給定的字體中所有字形。我總是推薦它,雖然有一個小缺點。使用IDENTITY_H會強制字體成爲iText中的一個嵌入子集,無法繞過它。

+0

感謝馬克的回覆。最終,我們暫時繞過了.pdf的創建,但是一旦我再次掌握阿拉伯文.pdf,我一定會給您一個建議。 – Iraklis 2011-03-24 04:24:27