#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 🙂