java - Primefaces PDFExporter 在 PDF 中将非 ASCII 字母显示为垃圾

标签 java pdf primefaces

使用 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/

相关文章:

java - 域对象和简单的 JavaBeans 应该进行单元测试吗?

java - 跨多个 PdfPCells 的 iText RadioGroup/RadioButtons

jsf - 启用选择时,DataModel 必须实现 org.primefaces.model.SelectableDataModel。

java - PrimeFaces OneRadio + "spacebar" key

sorting - Primefaces 数据表排序和过滤在 rowSelect 之前不起作用

java - 如何将java应用程序添加到html/php网站?

java - 一半的堆使用率,但很多 ehcache 未命中

javascript - Qz Tray HTML文件打印问题,html打印在页面左侧

javascript - 使用 Google 应用程序脚本将文本从 PDF 转换为文本

objective-c - 缩放 PDF 查看器可以无限放大