2015-01-08 25 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