发现使用iText库更改已安装字体的麻烦

时间:2015-01-08 14:50:46

标签: java fonts itext

所以我试图使用我安装的这个名为“Tengwar Quenya-1 Regular”的字体并且它不起作用,它继续使用默认字体编写de PDF文档。所以我尝试使用下载的文件,使用EMBED方法,它仍然打印默认字体,我想知道是否有人曾经尝试过这个,并且可以告诉我我做错了什么。检查代码:

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();
    }

它编译得很好,而不是我选择的字体。如果它是一个字形而不是一个字符,它会是一个问题吗?

1 个答案:

答案 0 :(得分: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,则无需注册字体。显然,我的字体路径与您的不同。我认为你的错了。试着把#34; .TTF"在另一个地方提交文件。