Как загрузить все установленные на моем компьютере шрифты в PDF с помощью Apache PDFBox? - PullRequest
0 голосов
/ 05 июля 2019

Как загрузить системные шрифты в Apache PDFBox?Я хочу, чтобы мое приложение могло выбирать любой установленный шрифт для моего PDF, точно так же, как я могу выбрать шрифт в Libre Office или Microsoft Word.

Имеет ли PDFBox эквивалентный FontFactory.registerDirectories()?

для iText?
  1. Мне нужно, чтобы PDFBox знал о шрифтах, установленных на моем ПК.
  2. Мне нужен способ загрузить шрифт в PDF по его фамилии , а не по файлы шрифтов .
  3. Я хочу, чтобы можно было просто указать семейство + полужирный / курсив.Мне не нужно знать, являются ли 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 с помощью хаков, я хотел бы знать, с чего начать.

...