首页 > 解决方案 > 如何为特定编码指定字体?

问题描述

我正在使用飞碟库并尝试为特定的字母编码添加自定义字体。这样我就可以支持 unicode 字符。

这是我从飞碟库官方指南http://flyingsaucerproject.github.io/flyingsaucer/r8/guide/users-guide-R8.html#xil_33遵循的解决方案链接。下面是代码,

    public void convertHtmlToPdf(String html, String css, OutputStream out) {
    try {
        html = correctHtml(html);
        html = getFormedHTMLWithCSS(html, css);

        HtmlCleaner cleaner = new HtmlCleaner();
        TagNode rootTagNode = cleaner.clean(html);
        CleanerProperties cleanerProperties = cleaner.getProperties();
        XmlSerializer xmlSerializer = new PrettyXmlSerializer(cleanerProperties);
        String cleanedHtml = xmlSerializer.getAsString(rootTagNode);

        File fontFile = new File("/Verdana.ttf");
        FontFactory.register(fontFile.getAbsolutePath());

        ITextRenderer r = new ITextRenderer();

        r.getFontResolver().addFont(fontFile.getAbsolutePath(), BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
        r.setDocumentFromString(cleanedHtml);

        r.layout();
        r.createPDF(out);
        r.finishPDF();

    } catch (Exception e) {
        e.printStackTrace();
        logger.error(e.getMessage(), e);
    }
}

但我仍然无法编码某些字符。喜欢,

'■' : '■',
'▲' : '▲', 

对于 '■' 我得到 &x25a0; 在生成的 pdf 中,对于我尝试编码的其他字符也是如此。

标签: javapdfflying-saucer

解决方案


推荐阅读