Как мне указать шрифты для конкретной кодировки? - PullRequest
0 голосов
/ 12 декабря 2018

Я использую библиотеку «летающая тарелка» и пытаюсь добавить собственный шрифт для конкретной кодировки букв.Чтобы я мог поддерживать символы Юникода.

Вот ссылка на решение, которое я следую из официального руководства библиотеки летающих тарелок 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, а также для других символов, которые я пытаюсь кодировать.

...