2016-07-19 57 views
1

在iText7中,是否可以從類路徑字體資源*創建一個PdfFont?在iText7中提供jar中的字體

目前,我的資源保存到臨時文件夾並使用

PdfFont font; 

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

凡FontProvider.getFont()或者返回路徑的classpath文件中使用的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

相關問題