2016-07-19 4 views
1

В iText7 можно ли создать PdfFont из ресурса шрифта classpath *?Предоставление шрифта в jar в iText7

В настоящее время я сохранить ресурс во временную папку и использовать

PdfFont font; 

public void setFont() { 
    font = PdfFontFactory.createFont(FontProvider.getFont(), PdfEncodings.IDENTITY_H, true); 
} 

Где FontProvider.getFont() возвращает либо путь к файлу классам для использования в среде IDE или сохраняет файл во временную папку на хост-системе и возвращает путь к этому.

Если возможно, я хотел бы избежать этапа сохранения файла в главной системе.

(* открытый лицензированный шрифт)

ответ

2

Все статические PdfFontFactory::createFont методы имеют перегрузку, которая требует byte[] вместо String. Поэтому вам нужно найти способ получить ваш ресурс в byte[].

С местоположения ресурса вы можете создать InputStream. Затем вы можете использовать сторонний метод для получения байтов от InputStream (например, Convert InputStream to byte array in Java).

InputStream is = this.getClass().getResourceAsStream("/class/path/URI"); 
byte[] fontBytes = IOUtils.toByteArray(is); // from Apache Commons IO 
PdfFontFactory.createFont(fontBytes, PdfEncodings.IDENTITY_H, true); 

FYI IText будет внутренне использовать аналогичный алгоритм для преобразования ресурса, на который ссылается String к byte[] для дальнейшей обработки в IRandomAccessSource.

Смежные вопросы