Как вставить шрифт в PDF, созданный из HTML с помощью iText и Flying Saucer?

У меня проблема с встраиванием польских шрифтов в PDF, конвертированный из HTML.

Мой HTML код имеет стиль в body:

<BODY style="font-family: Tahoma, Arial, sans-serif;font-size : 8pt;">

Я попробовал 2 способа преобразования такого HTML в PDF:

  • FOP с htmlcleaner
  • iText с flying-saucer

Для FOP я могу добавить все используемые шрифты в его файл конфигурации и затем созданный PDF имеет эти шрифты встроенными (если шрифт используется в HTML). В получившемся PDF у меня есть шрифт Tahoma в кодировке Identity-H. Все выглядит хорошо - все польские буквы отображаются, как и ожидалось.

Затем я попробовал конвертировать с помощью iText: кажется проще, потому что не нужно создавать трансформацию для каждого HTML. К сожалению, я не знаю, как встроить используемые шрифты в полученный PDF. Большинство примеров, которые я нашел, создают PDF с нуля, и я не знаю, как применить эти методы к Flying Saucer ITextRenderer или другому объекту, используемому при преобразовании.

Мой текущий код пытается добавить шрифты в PDFCreationListener.preOpen(), получая ITextFontResolver и добавляя шрифт fs.addFont(path, true);. Но все .pdf, которые я создаю, не содержат нужных мне шрифтов.

Вторая проблема заключается в том, что в получившихся PDF нет польских букв. Это проблема в Flying Saucer или в iText? Acrobat показывает, что созданный PDF документ использует Helvetica с кодировкой Ansi и ArialMT в качестве шрифта. Я думаю, что эта кодировка Ansi не подходит. Как я могу установить польскую кодировку (Identity-H)?

13
задан Michał Niklas 23 September 2011 в 09:13
поделиться