Преобразование PDF в изображение с помощью PDFBox приводит к появлению странных символов (проблема со шрифтом)

#pdf #pdfbox

#PDF #pdfbox

Вопрос:

Я использую PDFBox (2.X) для преобразования PDF-файлов в изображения. Все это работает под Linux, и ранее у меня были некоторые проблемы с преобразованием определенных PDF-файлов с использованием не встроенных шрифтов. Затем я добавил в систему шрифты base-14, и все заработало. Пока все хорошо.

Теперь пришел PDF-файл, в котором используется Courier-Bold, но результат следующий, хотя Courier-Bold установлен в системе. (Должны быть латинские буквы, потому что мой русский немного ржавый;-):

введите описание изображения здесь

Итак, я немного озадачен, почему PDF не конвертируется правильно. Шрифт в PDF определяется как 1 0 obj <</Subtype/Type1/Type/Font/BaseFont/Courier-Bold/Encoding/WinAnsiEncoding>>

Так почему же PDFBox не выбирает правильный шрифт? При преобразовании PDF предупреждение не отображается. Установлены следующие шрифты:

  • Courier.ttf
  • CourierBold.ttf
  • CourierOblique.ttf
  • Courierboldoblique.ttf

Я также установил дополнительные шрифты, упомянутые в комментариях ( CourierNewPS-BoldMT,CourierNew-Bold,LiberationMono-Bold,NimbusMonL-Bold ), но ни один из них не работал. Каждый раз, когда я добавлял новый шрифт (в /.local / share / font) Я получаю сообщение от PDFBox о том, что найден новый шрифт, поэтому сам шрифт распознан. Это должно быть что-то другое.

Комментарии:

1. Я не вижу ничего плохого в PDF. Он отображает и преобразует изображения в формате PNG с помощью callas pdfToolbox (осторожно, я связан с этим инструментом) — PDF и изображения выглядят идентично (и оба являются немецкими). Шрифт не встроен (что само по себе плохо, но разрешено), но я также не вижу ничего плохого в этом определении. Похоже, указывает на конкретную проблему с PDFBox (и я больше не могу с этим помочь :))

2. В системе Windows преобразование также работает правильно, но Windows использует некоторые другие шрифты…

3. Я не удивлен — похоже, проблема с кодировкой. Причиной могут быть либо шрифты (сомнительно), либо, что более вероятно, я бы сказал, что PDFBox выбирает кодировку по умолчанию из операционной системы и игнорирует то, что указывает шрифт в PDF (который является Win Ansi). Если в PDFBox есть настройки кодировки, вы можете поиграть с ними. Или, если возможно изменить значение по умолчанию в Linux, чтобы попробовать, помогает ли это, вероятно, стоит попробовать.

4. Он отлично работает на моем W10 с 2.0.21… PDF-файл очень прост. Есть ли какие-либо сообщения журнала? Существует ли в вашей системе какой-либо из следующих шрифтов: «CourierNewPS-BoldMT», «CourierNew-Bold», «LiberationMono-Bold», «NimbusMonL-Bold»?

5. 😀 да, давайте сделаем это. Если вы добавите это в качестве ответа, я исключу это. Если у вас нет времени, я сделаю это позже.

Ответ №1:

Причина была связана с самим шрифтом. В настоящее время PDFBox ожидает либо «Courier-Bold», либо в качестве заменителей шрифтов с именем

  • CourierNewPS-BoldMT
  • CourierNew-Жирный
  • LiberationMono-Жирный
  • NimbusMonL-Жирный

Удаление шрифта «Courier-Bold» и добавление одного из шрифтов выше решили проблему. Наиболее вероятным объяснением является то, что шрифт был поврежден.

Комментарии:

1. Шрифт был таким: blogfonts.com/courier-bold-1.font Возможно, проблема заключалась в том, что он был преобразован из папки Windows / russ_font 🙂