使用 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);
问题:非 ASCII 字母(例如中文字母)在 PDF 中显示为问号符号 (????)。
最佳答案
请参阅此票证进行修复:https://github.com/primefaces/primefaces/issues/3585
PF 8.0 或更高版本允许您设置 PDF 的字体,您必须选择支持汉字的字体。
PDFOptions pdfOpt = new PDFOptions();
pdfOpt.setFontName("Courier");
显然“Courier”不支持,但我确定您有支持汉字的字体,您可以将其设置为?
关于java - Primefaces PDFExporter 在 PDF 中将非 ASCII 字母显示为垃圾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60831226/