使用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");
显然"信使"没有,但我相信你有一个支持汉字的字体,你可以设置它吗?