我有一个带有外部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();
}
}
答案 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 代码中编写一个好的字体系列。