J'ai un rapport Jasper que j'affiche. Maintenant, j'ai une icône pour obtenir le même rapport en PDF.Jasper Reports + Problème de génération de PDF
Maintenant, quand je déploie le code dans un système d'exploitation avec Tomcat, ça fonctionne très bien, mais le problème auquel je suis confronté est que nous avons créé une image VM d'Ubuntu sans interface utilisateur.
Et quand j'essaie de télécharger le rapport en PDF, j'obtiens une erreur, après une recherche approfondie sur le Web et ici, j'ai trouvé que les polices manquaient et donc ce problème.
Maintenant, j'ai codé en dur le chemin de la police et mis la police true-type également dans le même chemin du dossier de rapport. Mais je reçois toujours une erreur.
Voici le code que je l'ai mis dans le fichier JRXML
<font size="20" isBold="false" fontName="Verdana" pdfFontName="/var/lib/tomcat6/webapps/WallCloud/jsp/dashboard/reports/Helvetica.ttf" isBold="false" isPdfEmbedded ="true"/>
et est l'erreur ici, je reçois
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)
C'est sur une ligne
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null, conn);
Et voici mon code de génération pdf
<%@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) {
}
%>
Comment puis-je résoudre ce problème?