Как загрузить системные шрифты в Apache PDFBox?Я хочу, чтобы мое приложение могло выбирать любой установленный шрифт для моего PDF, точно так же, как я могу выбрать шрифт в Libre Office или Microsoft Word.
Имеет ли PDFBox эквивалентный FontFactory.registerDirectories()
?
для iText?
- Мне нужно, чтобы PDFBox знал о шрифтах, установленных на моем ПК.
- Мне нужен способ загрузить шрифт в PDF по его фамилии , а не по файлы шрифтов .
- Я хочу, чтобы можно было просто указать семейство + полужирный / курсив.Мне не нужно знать, являются ли Arial.ttf и Arial-Bold.ttf двумя отдельными файлами шрифтов.
Большинство существующих примеров загрузки шрифтов в Apache PDFBox включают вызов функции ниже, но эта функцияпринимает только прямой путь к файлу шрифта, а не имя семейства:
PDType0Font font = PDType0Font.load(document, new File("path/to/font-file.ttf"));
Вот затруднения, потому что:
- JavaFX
Font.getFamilies()
возвращает только фамилии, а непути.PDType0Font.load()
принимает только пути. - Java AWT
GraphicsEnvironment.getLocalGraphicsEnvironment().getAllFonts()
возвращает Font
объекты, которые имеют фамилии, но не имеют путей.Опять же, PDType0Font.load()
принимает только пути. - Я мог бы просмотреть список системных папок из исходного кода iText
FontFactory.registerDirectories()
, но затем я имею дело с путями, а не с фамилиями.Я не буду знать, как определять фамилии или группировать Arial и Arial Bold как один шрифт (семейство) в моем приложении. - PDFBox
new FontFileFinder().find()
возвращает пути к файлам по URI, а не по фамилиям.Та же проблема: я хочу, чтобы мои пользователи выбирали из списка шрифтов , а не файлов . - PDFBox's
for (FontInfo info : FontProvider.getFontInfo())
, а также FontCache().getFont(FontInfo)
, кажется, дают подсказку, но я не нашел примеров их использования.
Предположим, что в PDFBox такого метода нет registerSystemFonts()
, я открыт для решения с пользовательским кодом.Но если единственный способ - это скопировать весь необходимый исходный код из registerDirectories
iText и адаптировать его к PDFBox с помощью хаков, я хотел бы знать, с чего начать.