Cari utenti,
la mia java web application gestisce alcuni report creati con IReport, correttamente creati, compilati e salvati in una certa cartella della stessa applicazione in formato jasper. Tutti i report così creati si devono aprire in modalità sia pdf che nell'utilissimo formato editabile rtf. Il formato pdf funziona correttamente mentre ogni tentativo di apertura in formato rtf produce un report semivuoto che ha al suo interno unicamente due linee orizzontali senza alcun elenco di dati che invece nel formato pdf si apre correttamente. Vi indico di seguito l'elenco delle librerie incluse (chissà, può dipendere anche da quello, ad esempio il pdf usa le iText) che la servlet usata.
L'apertura corretta del report in pdf mi farebbe escludere qualsiasi altra causa che non sia la stessa servlet o al massimo qualche libreria mancante specifica del formato rtf. Naturalmente, non voglio che venga salvato un file ma che si apra l'anteprima in stream. Grazie a tutti in anticipo.
ELENCO LIBRERIE INERENTI JASPER REPORT
CLASSE RTF (quella che non funziona a dovere)codice:commons-collections-3.2.1 commons-digester-2.1 commons-logging-1.1.1 iText-2.1.5 jasperreports-3.7.5
codice:package servletReport; import java.io.IOException; import java.io.OutputStream; import java.sql.Connection; import java.sql.SQLException; import java.util.HashMap; import java.util.Map; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import value.ValueAccess; import net.sf.jasperreports.engine.JRException; import net.sf.jasperreports.engine.JRExporterParameter; import net.sf.jasperreports.engine.JasperFillManager; import net.sf.jasperreports.engine.JasperPrint; import net.sf.jasperreports.engine.export.JRRtfExporter; import dao.DAOMain; /** * Servlet implementation class for Servlet: ServletReportStremRTF * */ public class ServletReportStreamRTF extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet { static final long serialVersionUID = 1L; /* (non-Java-doc) * @see javax.servlet.http.HttpServlet#HttpServlet() */ public ServletReportStreamRTF() { super(); } /* (non-Java-doc) * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ @SuppressWarnings("unchecked") protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub JasperPrint jp = null; ServletContext context = this.getServletContext(); Connection Conn = null; DAOMain rptDAO = new DAOMain(); try { Conn = rptDAO.myCn(VA); } catch (InstantiationException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (IllegalAccessException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (ClassNotFoundException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } try { jp = JasperFillManager.fillReport(context.getResourceAsStream("/reports/reportTest.jasper"), parameters, Conn); } catch (JRException e) { // TODO Auto-generated catch block e.printStackTrace(); } JRRtfExporter exporter = new JRRtfExporter(); response.setHeader("Content-disposition", "attachment; filename=" + "reportTest" + ".rtf"); response.setContentType("application/x-download"); OutputStream outputStream = response.getOutputStream(); exporter.setParameter(JRExporterParameter.JASPER_PRINT, jp); exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, outputStream); try { exporter.exportReport(); } catch (JRException e) { // TODO Auto-generated catch block e.printStackTrace(); } outputStream.flush(); outputStream.close(); } /* (non-Java-doc) * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request,response); } }
Attendo un vostro aiuto, buona serata a tutti!

Rispondi quotando