2015-01-08 22 views
0

所以我試圖使用我安裝的這個字體,名爲「Tengwar Quenya-1 Regular」,它沒有工作,它不斷地用默認字體書寫PDF文檔。所以我嘗試使用下載的文件,通過使用EMBED方法,它仍然打印默認字體,我想知道是否有人曾嘗試過這種方式,並可以告訴我我做錯了什麼。檢查代碼:發現使用iText庫更改已安裝字體的麻煩

public void testePdf(){ 
    Document document = new Document(); 

    String filename = "C:\\Users\\Marcelo\\Downloads\\tengwar_quenya\\QUENCAP1.TFF"; 
    FontFactory.register(filename); 
    Font fonte = FontFactory.getFont(filename, BaseFont.CP1252, BaseFont.EMBEDDED); 
    try { 
     PdfWriter.getInstance(document, 
      new FileOutputStream(filename+ "HelloWorld.pdf")); 

     document.open(); 
     document.add(new Paragraph("A Hello World PDF document.", fonte)); 
     document.close(); // no need to close PDFwriter? 

    } catch (DocumentException e) { 
     e.printStackTrace(); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } 

它編譯得很好,只是不符合我選擇的字體。如果它是一個字形而不是caracter,會不會是一個問題?

回答

0

我已經谷歌搜索你提到的字體。我已經下載了它,我已經做了一個小SSCCE,你可以在這裏下載:TengwarQuenya1

這是代碼:

public static final String FONT = "resources/fonts/QUENCAP1.TTF"; 

public void createPdf(String dest) throws IOException, DocumentException { 
    Document document = new Document(); 
    PdfWriter.getInstance(document, new FileOutputStream(DEST)); 
    document.open(); 
    Font f1 = FontFactory.getFont(FONT, BaseFont.WINANSI, BaseFont.EMBEDDED, 12); 
    document.add(new Paragraph("A Hello World PDF document.", f1)); 
    document.close(); 
} 

這是結果:tengwarquenya1.pdf

enter image description here

我我不確定結果文本的含義,但它看起來不像我的默認字體。

換句話說:我不能再現問題。請注意,如果您將其文件路徑傳遞到FontFactory,則不需要註冊字體。顯然,我的字體路徑與你的不同。我認爲你的錯誤。嘗試將「.TTF」文件放在另一個位置。

+0

如果不是引號之間的文本,我希望把一個char [] [],你會知道該怎麼做嗎? – Msalvatori

+0

爲什麼是雙數組?您是否閱讀過文檔?您是否提到「如何基於二維數組創建表」?在我的免費電子書[StackOverflow上的最佳iText問題](https://leanpub.com/itext_so)?因爲這就是它的樣子...... –

+0

我一直在尋找這個 – Msalvatori