使用 iText 库查找更改已安装字体的问题

Finding trouble to change installed font using iText library

所以我尝试使用我安装的名为 "Tengwar Quenya-1 Regular" 的字体,但它没有用,它一直使用默认字体编写 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();
    }

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

我用谷歌搜索了你提到的字体。我已经下载了它,并且制作了一个小的 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

我不确定生成的文本是什么意思,但它看起来不像我的默认字体。

换句话说:我无法重现问题。请注意,如果将文件路径传递给 FontFactory,则无需注册字体。显然,我的字体路径与你的不同。我认为你的错了。尝试将“.TTF”文件放在其他位置。