Consegui visualizar uma Danfe pelo ireport apartir de um xml. Agora estou tentando implementar esta classe para uma servlet que execute a mesma funcionalidade, mas está aparecendo determinados erros. A seguir a classe java e os erros:
import java.sql.*;
import java.text.DecimalFormat;
import java.io.*;
import java.util.Date;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.data.JRBeanArrayDataSource;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.engine.data.JRXmlDataSource;
import net.sf.jasperreports.engine.export.JRHtmlExporter;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.JasperViewer;
import java.util.Calendar;
import java.util.Map;
import java.util.HashMap;
import java.sql.*;
import org.xml.*;
import net.sf.jasperreports.engine.export.JRPdfExporter;
import org.apache.commons.*;
import org.apache.*;
import org.dom4j.*;
public class gerarDanfe extends HttpServlet {
public void doGet (HttpServletRequest req , HttpServletResponse res) throws IOException, ServletException{
byte[] bytes = null;
try {
//Caminho do arquivo .JASPER
String relatorio = ("C:/relatorioXML/danfeR.jasper");
// carrega os arquivos jasper
ServletContext context = getServletContext();
//JasperReport relatorio = (JasperReport)JRLoader.loadObject(
//context.getRealPath("WEB-INF/reports/danfeR.jasper"));
//Configurando a classe JRXmlDataSource que apontara o caminho do nosso XML de dados e sua pesquisa XPath geral
//JRXmlDataSource xml = new JRXmlDataSource("c:/xmls/arq.xml", "/nfeProc/NFe/infNFe/det");
//String path = getServletContext().getRealPath("/");
JRXmlDataSource xml = new JRXmlDataSource("c:/xmls/page.xml", "/nfeProc/NFe/infNFe/det");
// parametros
Map parametros = new HashMap();
//parametros.put("Logo","c:/xmls/logo.gif");
// direciona a saída do relatório para um stream
bytes = JasperRunManager.runReportToPdf(relatorio,parametros,xml);
// envia o relatório em formato PDF para o browser
res.setContentType("application/pdf");
res.setContentLength(bytes.length);
ServletOutputStream ouputStream = res.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();
}
catch(Exception erro)
{
erro.printStackTrace();
}
}
}
erro no console do eclipse europa:
Error parsing styled text.
org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 185; A entidade "GT" foi referenciada, mas não declarada.
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEntityReference(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown Source)
at net.sf.jasperreports.engine.util.JRStyledTextParser.parse(JRStyledTextParser.java:226)
at net.sf.jasperreports.engine.util.JRStyledTextParser.getStyledText(JRStyledTextParser.java:259)
at net.sf.jasperreports.engine.fill.JRFillTextElement.getStyledText(JRFillTextElement.java:454)
at net.sf.jasperreports.engine.fill.JRFillTextElement.getText(JRFillTextElement.java:472)
at net.sf.jasperreports.engine.fill.JRFillTextField.prepare(JRFillTextField.java:577)
at net.sf.jasperreports.engine.fill.JRFillElementContainer.prepareElements(JRFillElementContainer.java:328)
at net.sf.jasperreports.engine.fill.JRFillFrame.prepare(JRFillFrame.java:215)
at net.sf.jasperreports.engine.fill.JRFillElementContainer.prepareElements(JRFillElementContainer.java:328)
at net.sf.jasperreports.engine.fill.JRFillBand.fill(JRFillBand.java:393)
at net.sf.jasperreports.engine.fill.JRFillBand.fill(JRFillBand.java:341)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillFixedBand(JRVerticalFiller.java:2074)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillPageFooter(JRVerticalFiller.java:1007)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillSummaryNoLastFooterSamePage(JRVerticalFiller.java:1137)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillSummary(JRVerticalFiller.java:1032)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportEnd(JRVerticalFiller.java:296)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:135)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:836)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:765)
at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:84)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:624)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:540)
at net.sf.jasperreports.engine.JasperRunManager.runReportToPdf(JasperRunManager.java:387)
at gerarDanfe.doGet(gerarDanfe.java:66)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Unknown Source)
Servlet.service() for servlet gerarDanfe threw exception
java.lang.NoSuchFieldError: APPDEFAULT
at net.sf.jasperreports.engine.export.JRPdfExporter.exportReportToStream(JRPdfExporter.java:496)
at net.sf.jasperreports.engine.export.JRPdfExporter.exportReport(JRPdfExporter.java:367)
at net.sf.jasperreports.engine.JasperExportManager.exportReportToPdf(JasperExportManager.java:184)
at net.sf.jasperreports.engine.JasperRunManager.runReportToPdf(JasperRunManager.java:389)
at gerarDanfe.doGet(gerarDanfe.java:66)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Unknown Source)
erro no navegador:
HTTP Status 500 -
--------------------------------------------------------------------------------
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: Servlet execution threw an exception
root cause
java.lang.NoSuchFieldError: APPDEFAULT
net.sf.jasperreports.engine.export.JRPdfExporter.exportReportToStream(JRPdfExporter.java:496)
net.sf.jasperreports.engine.export.JRPdfExporter.exportReport(JRPdfExporter.java:367)
net.sf.jasperreports.engine.JasperExportManager.exportReportToPdf(JasperExportManager.java:184)
net.sf.jasperreports.engine.JasperRunManager.runReportToPdf(JasperRunManager.java:389)
gerarDanfe.doGet(gerarDanfe.java:66)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.20 logs.
--------------------------------------------------------------------------------
Apache Tomcat/5.5.20