2016-07-19 6 views
1

iText7では、クラスパスフォントリソース*からPdfFontを作成できますか?iText7でjarファイルを提供する

現在、私は一時フォルダにリソースを保存し、使用

FontProvider.getFont()のいずれかがIDEで使用するためのクラスパス・ファイルへのパスを返すか、一時フォルダにファイルを保存し
PdfFont font; 

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

ホストシステム上でこのパスを返します。

可能であれば、私はファイルをホストシステムに保存するステップを避けたいと思います。

(*オープンライセンスのフォント)

答えて

2

すべての静的PdfFontFactory::createFont方法も代わりStringbyte[]を必要と過負荷を持っています。したがって、リソースを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のは、内部IRandomAccessSourceにおけるさらなる処理のためbyte[]Stringによって参照されるリソースを変換するために同様のアルゴリズムを使用します。

関連する問題