2010-07-10 16 views
0

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?

Répondre

0

J'ai trouvé la solution à ce problème. Nous avons besoin de ce qui suit:

  1. Modifier/etc/apt/sources/liste

  2. ajoutez la ligne suivante

    deb http://us.archive.ubuntu.com/ubuntu/ Hardy multivers

    deb-src http://us.archive.ubuntu.com/ubuntu/ Hardy multivers

    deb http://us.archive.ubuntu.com/ubuntu/ hardy-updates multiverse

    deb-src http://us.archive.ubuntu.com/ubuntu/ hardy-updates multivers

  3. sudo apt-get update

  4. sudo apt-get install msttcorefonts

Cela résout le problème et le PDF est également obtenir généré .