Primefaces PDFExporter在PDF中显示非ASCII字符为乱码

3
使用PrimeFaces 6.0的PDFExporter将数据表中的数据导出为PDF。
使用以下代码进行导出:
DataTable dataTable = (DataTable) FacesContext.getCurrentInstance().getViewRoot().findComponent(":contactListform:contactDataTable");
FacesContext context = FacesContext.getCurrentInstance();
com.lowagie.text.Document document = new com.lowagie.text.Document();
java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream();

com.lowagie.text.pdf.PdfWriter.getInstance(document, baos);          

document.add(exportPDFTable(context, dataTable, false, false, "UTF-8"));
document.close();
writePDFToResponse(context.getExternalContext(), baos, filename);  
问题:PDF文件中非ASCII字符(例如中文字符)显示为问号符号(???)。

如果您尝试使用普通的itext,您会看到相同的问题。寻找添加额外字体的选项(如答案中所示),但对于普通的itext也是如此。如果您没有运行PF8,请尝试在itext中静态添加字体。 - Kukeltje
1个回答

1
请参考以下链接以查看修复方案:https://github.com/primefaces/primefaces/issues/3585 PF 8.0或更高版本支持设置PDF字体,您需要选择支持中文字符的字体。
PDFOptions pdfOpt = new PDFOptions();
pdfOpt.setFontName("Courier");

显然,“Courier”字体不支持中文字符,但我相信你有一种支持中文字符的字体可以设置使用。

有没有在PF6.0升级到PF8.0的情况下解决方案? - Mihir
据我所知没有,但是正如@Kukeltje建议的那样,可以尝试“查找将字体静态添加到itext中”,以使其在PF 6.0中正常工作。 - Melloware

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接