Apache FOP, Unicode.Текст не доступен для поиска - PullRequest
1 голос
/ 04 апреля 2011

У меня проблема с некоторым устаревшим кодом Java, который отображает PDF-файлы.

Мы используем Apache FOP:

Implementation-Title: Fop
Implementation-Version: 0.20.5 
Implementation-Vendor: Apache Software Foundation (http://xml.apache.org/fop/)

С параметрами, установленными на:

<configuration>
  <fonts>
   <font metrics-file="arialuni.xml" 
        embed-file="ARIALUNI.TTF" kerning="yes">            
    <font-triplet name="arialuni" style="normal" weight="normal"/>
  </font>
 </fonts>
</configuration>

.pdf отображается правильно, хотя есть одна большая проблема: Я не могу найти текст в таком файле, и если я попытаюсь скопировать и вставить этот текст, я получу много символов-ящиков. (□)

Как я понял - arialuni.ttf (Unicode-версия arial, я полагаю) вызывает эти проблемы. Есть ли известные решения? Можно ли это исправить с помощью конфигурации шрифта?

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

PS: мне не разрешено переключаться на любую другую библиотеку рендеринга PDF или обновлять существующую.

Редактировать # 1

Спасибо всем за ваши ответы. Возможно, мы пока отказались от поддержки Unicode и позже обновимся до версии 1.0.

Ответы [ 2 ]

3 голосов
/ 05 апреля 2011

Лучшее решение - дать пощечину своему боссу и заставить его некоторое время утвердить обновление до Apache FOP 1.0 или более поздней версии. Серьезно.

Единственная альтернатива - использовать "-enc ansi" в качестве параметра для приложения "TTFReader" при создании файла метрик шрифта XML. Это приведет к тому, что FOP 0.20.5 будет использовать кодировку WinAnsi вместо кодировки CID. Недостаток: вы будете ограничены 8-битной кодировкой WinAnsi. Вы не получаете полный набор Unicode.

0 голосов
/ 05 апреля 2011

PS: мне не разрешено переключаться на любую другую библиотеку рендеринга PDF или обновлять существующую.

Если вы не можете использовать «arial.ttf»,тогда вы почти наверняка обречены.Ошибка в том, что версия FOP встраивает ...

ЭЙ!Вполне возможно, что ваш шрифт вообще не встроен:

со страницы Apache FOP страница:

<fonts>
  <!-- register a particular font -->
  <font metrics-url="file:///C:/myfonts/FTL_____.xml" kerning="yes"
      embed-url="file:///C:/myfonts/FTL_____.pfb">
     <font-triplet name="FrutigerLight" style="normal" weight="normal"/>
  </font>
</fonts>
  1. К сожалению, я несм. любое упоминание об указании конкретной кодировки в любом месте этих документов.
  2. Вы используете "embed-file", а не "embed-url =" file: /// ". Я подозреваю, что это ваша проблема.
...