Плагин Grails 2.4 Рендеринг пропускает нелатинские символы и возвращает пустой PDF-файл

Я думаю, что у меня есть похожая проблема или, по крайней мере, с близким решением.

**Подробности:

  1. ОС - windows 7(тоже попробовал одну мяту 17 с таким же результатом);
  2. IDE - GGTS (Groovy-Grails Tool Suite 3.2.0.RELEASE)
  3. Грааль - 2,4;
  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);**
... 
Другие вопросы по тегам