iTextPdf 5.5.3 を使用して PDF/A ドキュメントを作成しています。ユーザーがフォントの.ttfファイルをアップロードしてカスタム フォントを選択するようにしたいのですが、FontFactory.getFont()
メソッドはフォント名のみを文字列として受け取るため、アップロードしたファイルを書き込む必要があります。ユーザーのドライブに ( I KNOW , I ASKED MY CUSTOMER FOR PERMISSION TO WRITE TO THE DRIVE)、アップロードしたファイルのパスをgetFont()
メソッドに渡します。すべてが完了したら、アップロードしたファイルをドライブから削除します。これが私のコードです:
File fontFile = new File("d:/temp/testFont.ttf");
try {
FileOutputStream outStream = new FileOutputStream(fontFile);
outStream.write(the bytes of the uploaded font file);
outStream.flush();
outStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Font font = FontFactory.getFont(fontFile.getAbsolutePath(), BaseFont.CP1250 , BaseFont.EMBEDDED);
fontFile.delete();
このコードは機能していません。何らかのgetFont()
方法でフォント ファイルがロックされているため、ファイルが削除されていません。次のように、これを行うために多くの方法を試しましたが、何fontFile.deleteOnExit();
もうまくいきFileDeleteStrategy.FORCE.delete("file path");
ません。お知らせ下さい。ありがとう