Специальные символы в отчете Jasper от Java Primefaces
Я пытаюсь напечатать такие символы:
°µ± Ω≥≤Δα
У меня нет проблем с первыми тремя, но второй набор символов не печатается, когда я компилирую и выполняю отчет из приложения 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, но я открыт для предложений.
1 ответ
Решение
Я отвечу сам. Я просто использую Dejavu Sans в отчете и ставлю maven-зависимость на основные шрифты яшмы, вот и все.
<!-- Fonts for special characters -->
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports-fonts</artifactId>
<version>6.0.0</version>
</dependency>
Это фрагмент моего pom.xml
Спасибо ребятам в комментариях, которые сделали это возможным.