У меня есть отчет о яшме, который я показываю. Теперь у меня есть значок, чтобы получить тот же отчет в формате PDF.Отчеты Jasper + вопрос о выпуске PDF
Теперь, когда я разворачиваю код в ОС с помощью Tomcat, он отлично работает, но проблема, с которой я сейчас сталкиваюсь, заключается в том, что мы создали VM-образ Ubuntu без интерфейса.
И когда я пытаюсь загрузить отчет в формате PDF, я получаю сообщение об ошибке после обширного поиска в Интернете и здесь, я обнаружил, что шрифты отсутствовали и, следовательно, эта проблема.
Теперь я жестко закодировал путь шрифта и поместил шрифт истинного типа в тот же путь к папке отчета. Но все же я получаю сообщение об ошибке.
Вот код, который я поставил в файле JRXML
<font size="20" isBold="false" fontName="Verdana" pdfFontName="/var/lib/tomcat6/webapps/WallCloud/jsp/dashboard/reports/Helvetica.ttf" isBold="false" isPdfEmbedded ="true"/>
и здесь ошибка я получаю
javax.servlet.ServletException: org.apache.jasper.JasperException: javax.servlet.ServletException: java.lang.NoClassDefFoundError: Could not initialize class net.sf.jasperreports.engine.util.JRStyledTextParser
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:515)
Это на линии
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null, conn);
И вот мой код генерации кода
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page import="java.sql.Connection" %>
<%@page import="net.sf.jasperreports.view.JasperViewer" %>
<%@page import="net.sf.jasperreports.engine.xml.JRXmlLoader" %>
<%@page import="net.sf.jasperreports.engine.JasperCompileManager" %>
<%@page import="net.sf.jasperreports.engine.JasperFillManager" %>
<%@page import="net.sf.jasperreports.engine.JasperPrint" %>
<%@page import="net.sf.jasperreports.engine.design.JasperDesign" %>
<%@page import="net.sf.jasperreports.engine.JasperReport" %>
<%@page import="java.io.ByteArrayOutputStream" %>
<%@page import="com.abc.xyz.utils.DBConnection" %>
<%@page import="org.apache.commons.collections.*" %>
<%@page import="org.apache.jasper.JasperException" %>
<form name='frmReport' method='POST'>
<%
try {
Connection conn = null;
DBConnection dbConn = new DBConnection();
conn = dbConn.getSimpleConnection();
String path = getServletContext().getRealPath("/")+"/jsp/reports/Report.jrxml";
JasperDesign jasperD = JRXmlLoader.load(path);
JasperReport jasperReport = JasperCompileManager.compileReport(jasperD);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "inline; filename=\"Report.pdf\"");
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null, conn);
net.sf.jasperreports.engine.JasperExportManager.exportReportToPdfStream(jasperPrint, baos);
response.setContentLength(baos.size());
ServletOutputStream out1 = response.getOutputStream();
baos.writeTo(out1);
out1.flush();
conn.close();
} catch (Exception se) {
}
%>
Как решить эту проблему?