Grails/RenderPdf阿拉伯字符

Grails/RenderPdf阿拉伯字符,pdf,grails,render,arabic,Pdf,Grails,Render,Arabic,我们有一个grails应用程序,其中我们使用来呈现.pdf中的内容。对于英语来说,这一切都很好,但对于阿拉伯语(我们必须渲染)来说,不幸的是,所有字符似乎都“断裂”。那里有一些数字和空格 渲染插件使用IText,我已经尝试了以下方法: ... def renderer = new ITextRenderer() FontResolver resolver = renderer.getFontResolver() renderer.getFontResolver().addFont("

我们有一个grails应用程序,其中我们使用来呈现.pdf中的内容。对于英语来说,这一切都很好,但对于阿拉伯语(我们必须渲染)来说,不幸的是,所有字符似乎都“断裂”。那里有一些数字和空格

渲染插件使用IText,我已经尝试了以下方法:

...  
def renderer = new ITextRenderer()  
FontResolver resolver = renderer.getFontResolver()  
renderer.getFontResolver().addFont("/usr/share/fonts/truetype/ttf-arabeyes/ae_AlArabiya.ttf", BaseFont.EMBEDDED)  
...
(这里使用的字体只是一个例子),但无论如何,它都不起作用

有人有过这种经历吗

提前谢谢你

renderer.getFontResolver.addFont(fontPath, BaseFont.IDENTITY_H, BaseFont.EMBEDDED_SUBSET);
iText中字体的默认编码是WinAnsienceODing,也称为代码页1252。您需要指定包含所需字符的编码

是的。Google代码为您正在使用的addFont生成了以下代码:

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

IDENTITY_H允许您在给定字体中处理所有图示符。我总是推荐它,尽管有一个小缺点。使用IDENTITY_H会强制字体成为iText中的一个嵌入子集,无法绕过它。

感谢Mark的回复。最终,我们暂时绕过了.pdf的创建,但一旦我再次接触到阿拉伯语.pdf,我肯定会尝试一下你的建议。