pdfwriter不翻译特殊字符

时间:2014-03-25 16:45:48

标签: java html character-encoding special-characters pdf-writer

我有一个带有外部CSS的HTML文件。我想从HTML文件创建PDF,但是endcoing不起作用。 HTML文件工作正常,但在转换为PDF后,PDF中的某些字符丢失了。 (čřě...)即使我在PDFWriter构造函数中设置Charset也会发生这种情况。

我该如何解决这个问题?

 public void createPDF() {
    try {

        Document document = new Document();


        PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(username + ID + ".pdf"));

        document.open();
        String hovinko = username + ID + ".html";

        XMLWorkerHelper.getInstance().parseXHtml(writer, document, new FileInputStream(hovinko), Charset.forName("UTF-8"));

        document.close();

        System.out.println("PDF Created!");
    } catch (Exception ex) {
        ex.printStackTrace();
    }
}

3 个答案:

答案 0 :(得分:0)

在将特殊字符写入PDF之前,您是否尝试过转换特殊字符?

yourHTMLString.replaceAll(oldChar, newChar);

ć = ć
ř = ř
ě = ě

如果您需要更多特殊字符,请访问此link

编辑:然后尝试一下,它对我有用:

BaseFont basefont = BaseFont.createFont("C:/Windows/Fonts/ARIAL.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
            Font font = new Font(basefont, 12);
            document.add(new Paragraph("čřě", font));

答案 1 :(得分:0)

尝试使用以下逻辑。它对我有用:

InputStream is = new ByteArrayInputStream(hovinko.getBytes(Charset.forName("UTF-8")));
XMLWorkerHelper.getInstance().parseXHtml(writer, document, is, Charset.forName("UTF-8"));

我使用了xmlworker版本5.5.12和itextpdf版本5.5.12。

答案 2 :(得分:0)

我正在努力解决 sam 问题(波兰语特殊符号)。 对我来说,解决方案是在 html 代码中编写一个好的字体系列。