2014-10-29 67 views
1

我使用PdfAWriter創建PDF-A(PDF存檔格式)文件並使用.ttf將PDF字體嵌入。我的TTF文件在config文件夾下。 當我嘗試創建字體像下面工作在當地在寫PDF-A(存檔)文件時從Jar載入字體

Font BOLD_10 = FontFactory.getFont("./config/FreeSansBold.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED, 10); 
 

 
Document document; //Document created using PDF-A writer 
 

 
PdfPTable table = new PdfPTable(new float[] { 50,50 }); 
 
table.setWidthPercentage(new Float(100)); 
 

 
Paragraph paragraph = new Paragraph("Header 1", BOLD_10); 
 
document.add(paragraph);

如果我嘗試建立一個jar文件並放置.TFF罐子裏面,下面的代碼不工作,因爲它無法找到ttf文件的路徑:

Font BOLD_10 = FontFactory.getFont(「./config/FreeSansBold.ttf」,BaseFont.IDENTITY_H,BaseFont.EMBEDDED,10);

如何配置我的字體文件路徑從jar中動態選取?

我們嘗試使用內置字體和BaseFont代替.ttf,但它們對於「PDF-A」文件不起作用(在運行時拋出異常)。

除了使用TTF之外,是否還有其他方法可以將字體嵌入到PDF-A文件中?

+0

解決了這樣的問題 - (1)將.ttf文件放在「com/mycompany/pdfutility/fonts「目錄並將它們包含在jar文件中。 (2)在此代碼中提及此文件: Font BOLD_10 = FontFactory.getFont(「/ com/mycompany/pdfutility/fonts/FreeSansBold.ttf」,BaseFont.IDENTITY_H,BaseFont.EMBEDDED,10); – 2014-10-29 09:23:29

回答

1

解決了這樣的問題 - (1)將.ttf文件放在「com/mycompany/pdfutility/fonts」目錄下,並將它們包含在jar文件中。 (2)參照本文件中的這樣的代碼:

字體BOLD_10 = FontFactory.getFont( 「/ COM/myCompany的/ pdfutility /字體/ FreeSansBold.ttf」,BaseFont.IDENTITY_H,BaseFont.EMBEDDED,10) ;

+0

感謝http://compgroups.net/comp.text.pdf/itext-basefont-loading-from-classpath/261207 – 2014-10-29 09:28:19

0

如果您使用的iText 7,你可以試試這個:

首先把你的font.ttf文件在資源目錄,如fonts/simsun.ttf

然後,

byte[] fontByte = IOUtils.toByteArray(Main.class.getResource("/fonts/simsun.ttf").openStream()); 
    PdfFont font = PdfFontFactory.createFont(fontByte, PdfEncodings.IDENTITY_H); 

IOUtils是commons-io