【发布时间】:2016-06-16 18:52:31
【问题描述】:
我正在尝试打印这样的字符:
°µ± Ω≥≤Δα
前 3 个字符没有问题,但是当我从 Primefaces App 编译和执行报告时,第二组字符没有打印出来。
这是我用来打印报告的代码:
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 流的编码,但我愿意接受建议。
【问题讨论】:
-
你在使用字体扩展吗?
-
不,因为不是字体问题。在 Jasper Studio 中,它使用预定义的字体。 @AlexK
-
可能是字体问题。你应该使用字体扩展。
标签: java jasper-reports encode export-to-pdf