Primefaces PDF导出器在PDF中将非ASCII字母显示为垃圾邮件



使用PrimeFaces 6.0PDFExporter将数据表数据导出为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);  

问题:非ASCII字母(例如中文字母(在PDF中显示为问号符号(???(。

请参阅此票证以获得修复:https://github.com/primefaces/primefaces/issues/3585

PF 8.0或更高版本允许您设置PDF的字体,并且您必须选择支持中文字符的字体。

PDFOptions pdfOpt = new PDFOptions();
pdfOpt.setFontName("Courier");

显然"信使"没有,但我相信你有一个支持汉字的字体,你可以设置它吗?

最新更新