来自 Java Primefaces 的 Jasper Report 中的特殊字符
Special characters on Jasper Report from Java Primefaces
我正在尝试打印这样的字符:
°µ± Ω≥≤Δα
我对前 3 个字符没有问题,但是当我从 Primefaces 应用程序编译和执行报告时,没有打印第二组字符。
这是我用来打印报告的代码:
try {
fc = FacesContext.getCurrentInstance();
ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
ec.responseReset();
ec.setRequestCharacterEncoding("UTF-8");
ec.setResponseHeader("Content-Disposition", "inline; filename=\""
+ "Report.pdf\"");// opens in same page
ec.setResponseContentType("application/pdf");
OutputStream output = ec.getResponseOutputStream();
Connection jdbcConnection = datasource.getConnection();
JasperDesign jasperDesign = JRXmlLoader.load(reportFile);
JasperReport jasperReport = JasperCompileManager
.compileReport(jasperDesign);
JasperPrint jasperPrint = JasperFillManager.fillReport(
jasperReport, parameterMap, jdbcConnection);
//JasperExportManager.exportReportToPdfStream(jasperPrint, output);
JRPdfExporter pdf = new JRPdfExporter();
pdf.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
pdf.setParameter(JRExporterParameter.OUTPUT_STREAM, output);
pdf.exportReport();
output.flush();
output.close();
fc.getCurrentInstance().responseComplete();
} catch (Exception e) {
e.printStackTrace();
}
报告运行并打印我从 Jasper Studio 测试时需要的每个字符。我认为这里的主要问题是 PDF 流的编码,但我愿意接受建议。
我会自己回答。我只是在报告中使用了 Dejavu Sans,并对基本的 jasper 字体添加了 maven 依赖项,仅此而已。
<!-- Fonts for special characters -->
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports-fonts</artifactId>
<version>6.0.0</version>
</dependency>
那是我的片段 pom.xml
感谢评论中的小伙伴们使它成为可能。
我正在尝试打印这样的字符:
°µ± Ω≥≤Δα
我对前 3 个字符没有问题,但是当我从 Primefaces 应用程序编译和执行报告时,没有打印第二组字符。
这是我用来打印报告的代码:
try {
fc = FacesContext.getCurrentInstance();
ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
ec.responseReset();
ec.setRequestCharacterEncoding("UTF-8");
ec.setResponseHeader("Content-Disposition", "inline; filename=\""
+ "Report.pdf\"");// opens in same page
ec.setResponseContentType("application/pdf");
OutputStream output = ec.getResponseOutputStream();
Connection jdbcConnection = datasource.getConnection();
JasperDesign jasperDesign = JRXmlLoader.load(reportFile);
JasperReport jasperReport = JasperCompileManager
.compileReport(jasperDesign);
JasperPrint jasperPrint = JasperFillManager.fillReport(
jasperReport, parameterMap, jdbcConnection);
//JasperExportManager.exportReportToPdfStream(jasperPrint, output);
JRPdfExporter pdf = new JRPdfExporter();
pdf.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
pdf.setParameter(JRExporterParameter.OUTPUT_STREAM, output);
pdf.exportReport();
output.flush();
output.close();
fc.getCurrentInstance().responseComplete();
} catch (Exception e) {
e.printStackTrace();
}
报告运行并打印我从 Jasper Studio 测试时需要的每个字符。我认为这里的主要问题是 PDF 流的编码,但我愿意接受建议。
我会自己回答。我只是在报告中使用了 Dejavu Sans,并对基本的 jasper 字体添加了 maven 依赖项,仅此而已。
<!-- Fonts for special characters -->
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports-fonts</artifactId>
<version>6.0.0</version>
</dependency>
那是我的片段 pom.xml
感谢评论中的小伙伴们使它成为可能。