Grails / RenderPdf Арабские символы - PullRequest
1 голос
/ 20 марта 2011

У нас есть приложение 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)  
...

(шрифт, используемый здесь, является лишь примером), но в любом случае он не работает.

Кто-нибудь имеет опыт работы с такого рода проблемами?

Заранее спасибо!

1 Ответ

0 голосов
/ 22 марта 2011
renderer.getFontResolver.addFont(fontPath, BaseFont.IDENTITY_H, BaseFont.EMBEDDED_SUBSET);

Кодировкой по умолчанию для шрифтов в iText является WinAnsiEncoding, кодовая страница AKA 1252. Необходимо указать кодировку, содержащую нужные символы ...

Да.Google Code создал этот бит кода для используемого надстройки:

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

IDENTITY_H позволяет вам обращаться ко всем символам в данном шрифте.Я всегда рекомендую это, хотя есть небольшой недостаток.Использование IDENTITY_H заставляет шрифт быть встроенным подмножеством в iText, никак не обойти его.

...