С POI 4.1.0 (которая будет выпущена к февралю 2019 г.) я также добавил возможности встраивания шрифтов в Apache POI. Предоставленные методы являются лишь «половиной истории», поскольку вы не можете просто добавить файлы .ttf / .otf.
Для преобразования шрифтов True-Type (.ttf) или Open-Type (.otf) в Office-совместимые EOT / MTX шрифты я использую sfntly . Классы snftly пока не представлены как артефакты maven, и я не люблю ни импортировать весь кусок в POI, ни выпускать мою переупакованную версию кода googles под моим именем, поэтому вам нужно клонировать и адаптировать мой пример проекта .
Для добавления потока шрифтов MTX в слайд-шоу (HSLF или XSLF, т. Е. SlideShow
- это их общий интерфейс), вы должны позвонить:
org.apache.poi.sl.usermodel.SlideShow.addFont(InputStream fontData)
Для поднабора шрифтов вам понадобятся используемые кодовые точки, которые можно извлечь с помощью:
org.apache.poi.sl.extractor.SlideShowExtractor.getCodepoints(String typeface, Boolean italic, Boolean bold)
Для получения информации о потоке данных шрифта MTX существует новый вспомогательный класс:
org.apache.poi.common.usermodel.fonts.FontHeader