我们有一个grails应用程序,我们使用Render Plugin在.pdf中呈现内容。这一切都适用于英语,但不幸的是,阿拉伯语(我们必须渲染)所有的字符似乎都“破碎”。那里有一些数字和空格......
渲染插件使用IText,我尝试过这种方法:
...
def renderer = new ITextRenderer()
FontResolver resolver = renderer.getFontResolver()
renderer.getFontResolver().addFont("/usr/share/fonts/truetype/ttf-arabeyes/ae_AlArabiya.ttf", BaseFont.EMBEDDED)
...
(这里使用的字体只是一个例子),但无论如何,它都不起作用。
有人对这类问题有过任何经验吗?
提前谢谢!
答案 0 :(得分:0)
renderer.getFontResolver.addFont(fontPath, BaseFont.IDENTITY_H, BaseFont.EMBEDDED_SUBSET);
iText中字体的默认编码是WinAnsiEncoding,AKA Code Page 1252.您需要指定包含所需字符的编码...
是的。 Google Code为您正在使用的addFont生成了这段代码:
public void addFont(String path, boolean embedded)
throws DocumentException, IOException {
addFont(path, BaseFont.CP1252, embedded);
}
IDENTITY_H可让您解决给定字体中的所有字形。我总是推荐它,虽然有一个小缺点。使用IDENTITY_H强制字体成为iText中的嵌入式子集,无法绕过它。