Плагин Grails 2.4 Рендеринг пропускает нелатинские символы и возвращает пустой PDF-файл
Я думаю, что у меня есть похожая проблема или, по крайней мере, с близким решением.
**Подробности:
- ОС - windows 7(тоже попробовал одну мяту 17 с таким же результатом);
- IDE - GGTS (Groovy-Grails Tool Suite 3.2.0.RELEASE)
- Грааль - 2,4;
- плагин - рендеринг Grails ( http://grails.org/plugin/rendering)
**
В основном, я следую этой статье, чтобы получить файл PDF на основе шаблона: http://www.icodeya.com/2012/09/grails-how-do-i-render-gsp-files-in-pdf.html Все идет хорошо, пока есть некоторые символы, отличные от латинского1 - например, кириллица или португальский. Я могу обойти проблему с:
...
def renderer = new ITextRenderer()
FontResolver resolver = renderer.getFontResolver()
**.getFontResolver.addFont(fontPath, BaseFont.IDENTITY_H, BaseFont.EMBEDDED_SUBSET);**
...
но текст в файле PDF плохо отформатирован - оригинальный текст:
быстрый лис
, в pdf файле есть:
qu i ck fo x
, В тексте появляются лишние пробелы.
Все настройки, которые я смог найти, изменены на использование UTF-8: gsp, text, html файлы. Спасибо заранее, Иво!
1 ответ
Согласно документации плагина:
Решение состоит в том, чтобы зарегистрировать шрифт для использования с определенной кодировкой. Поскольку мы используем XHTMLRenderer, мы можем указать это в CSS, в отличие от программной регистрации.
Так что поместите в свою страницу gsp, заголовок раздела следующее
<style>
@font-face {
src: url(path/to/arial.ttf);
-fs-pdf-font-embed: embed;
-fs-pdf-font-encoding: cp1250;
}
body {
font-family: "Arial Unicode MS", Arial, sans-serif;
} </style>
и если этого недостаточно, добавьте в: grails-app\services\grails\plugin\render \pdf\PdfRenderingService.groovy
...
def renderer = new ITextRenderer()
FontResolver resolver = renderer.getFontResolver()
**.getFontResolver.addFont(fontPath, BaseFont.IDENTITY_H, BaseFont.EMBEDDED_SUBSET);**
...