NF-E: Gerar o DANFE a partir do conteúdo xml

Olá, galera!

Não tenho muita experiência com NFE e gostaria de saber se alguem conhece ou poderia indicar algum utilitário, framework, ou qualquer coisa do tipo, que me auxiliasse na tarefa de gerar o DANFE a partir de um arquivo xml (NFE)? Seria algo como eu passar o conteudo xml para a rotina e ela geraria pra mim o DANFE em pdf, ou algo parecido (implementar do zero daria muito trabalho :-o )

ps: não se trata de uma aplicação para emissão de NFE, portanto não preciso estabelecer comunicação com SEFAZ, nem mexer com SSL, etc…, é apena um recurso que preciso implementar

desde já obrigado

Rafael

Jasperreports e IReports ajuda você?

Eu acho que tenho algo,

Você tem um xml de NFe para postar aqui, qualquer um que seja válido, daí eu faço o teste e se funcionar coloco o código aqui.

Fico no aguardo.

eu fiz um sistema de conversão nfe para danfe e estou comercializando hehehe.

utilize ireport e xpath.

att,

Então, galera, eu poderia sim usar o iReport e tal, mas, como falei, nesse caso teria que começar do zero. A minhá dúvida é saber se já existe alguma ferramenta que já ofereça esse processo mais ou menos pronto, e que eu possa implementar na minha aplicação

JoaoBluSCBR, segue um exemplo de arquivo xml válido

[code]

<?xml version="1.0" encoding="utf-8" ?>3590300869VENDA DE MERC ADQ DE TERC25525363602011-06-162011-06-1600:00:0013505708113110GNFe214 PointSystems93209765030539WMS SUPERMERCADOS DO BRASIL LTDAESTRADA DE ACESSO JANDIRA1400RODOV CASTELO BRANCOFAZ.ITAQUITI3505708BARUERISP064421301058Brasil206259596115337380453505EDWARD SHAPPIRORUA BENEDITO APARECIDO BIANCHI258JARDIM FELICIDADE3549805SAO JOSE DO RIO PRETOSP150523611058BRASIL1733544980shaap@gmail.com1102557897033017982RELOGIO DE PULSO DIGITAL MASC.ESPORTIVO 1798391M910211905102PC1.0000129.0000000000129.007897033017982PC1.0000129.000000000010.0012003119.0018.0021.4201119.001.651.9601119.007.609.04119.0021.420.000.00129.000.000.0010.000.000.001.969.040.00119.00058818022000143TRANSFOLHA TRANSPORTE E DISTRIBUICAO LTD206099687112ALAMEDA XINGUBARUERISP1DIG0.0500.050CONFORME ART. 52 RICMS/SP DECRETO 45490/00 PEDIDO 3162556NGfIwZQwnrBrQeYhnnoDwZfrscg=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_NFE_PL_006e351106932097650305395502500003636019030086932011-06-16T00:34:20135110303746256NGfIwZQwnrBrQeYhnnoDwZfrscg=100Autorizado o uso da NF-e[/code]

abraços

É cara acho q não existe nenhuma ferramenta q faça isso não ;p
o melhor jeito q eu conheço é construir o relatório usando o IReport.

voce ja conseguiu ?

estou fazendo isso com iReport 4.1.1, xpath …
mas não estou entendendo direito o xpath …

no [color=red]detalhe[/color]; quando deixo assim, e coloco os campos -[color=blue] funciona[/color]

	&lt;queryString language="xPath"&gt;
		&lt;![CDATA[/nfeProc/NFe/infNFe/det/prod]]&gt;
	&lt;/queryString&gt;

// campos
	&lt;field name="NCM" class="java.lang.String"&gt;
		&lt;fieldDescription&gt;&lt;![CDATA[NCM]]&gt;&lt;/fieldDescription&gt;
	&lt;/field&gt;
	&lt;field name="CFOP2" class="java.lang.String"&gt;
		&lt;fieldDescription&gt;&lt;![CDATA[CFOP]]&gt;&lt;/fieldDescription&gt;
	&lt;/field&gt;
	&lt;field name="uCom2" class="java.lang.String"&gt;
		&lt;fieldDescription&gt;&lt;![CDATA[uCom]]&gt;&lt;/fieldDescription&gt;
	&lt;/field&gt;

  • mas preciso dos campos impostos tambem
    ai não recupera os dados.
    como devo codificar o XML do Ireport
    MAS NÃO ESTOU CONSEGUINDO.

no [color=red]detalhe[/color]; quando deixo assim, e coloco os campos -[color=blue] NÃO funciona[/color]

	&lt;queryString language="xPath"&gt;
		&lt;![CDATA[/nfeProc/NFe/infNFe/det]]&gt;
	&lt;/queryString&gt;

// campos
	&lt;field name="NCM" class="java.lang.String"&gt;
		&lt;fieldDescription&gt;&lt;![CDATA[prod/NCM]]&gt;&lt;/fieldDescription&gt;
	&lt;/field&gt;
	&lt;field name="CFOP2" class="java.lang.String"&gt;
		&lt;fieldDescription&gt;&lt;![CDATA[prod/CFOP]]&gt;&lt;/fieldDescription&gt;
	&lt;/field&gt;
	&lt;field name="uCom2" class="java.lang.String"&gt;
		&lt;fieldDescription&gt;&lt;![CDATA[prod/uCom]]&gt;&lt;/fieldDescription&gt;
	&lt;/field&gt;

//impostos ISENTO no item
	&lt;field name="orig" class="java.lang.String"&gt;
		&lt;fieldDescription&gt;&lt;![CDATA[imposto/ICMS/ICMS40/orig]]&gt;&lt;/fieldDescription&gt;
	&lt;/field&gt;
	&lt;field name="CST" class="java.lang.String"&gt;
		&lt;fieldDescription&gt;&lt;![CDATA[imposto/ICMS/ICMS40/CST]]&gt;&lt;/fieldDescription&gt;
	&lt;/field&gt;


OU

//impostos TRIBUTADO no item
	&lt;field name="orig" class="java.lang.String"&gt;
		&lt;fieldDescription&gt;&lt;![CDATA[imposto/ICMS/ICMS00/orig]]&gt;&lt;/fieldDescription&gt;
	&lt;/field&gt;
	&lt;field name="CST" class="java.lang.String"&gt;
		&lt;fieldDescription&gt;&lt;![CDATA[imposto/ICMS/ICMS00/CST]]&gt;&lt;/fieldDescription&gt;
	&lt;/field&gt;



vc ja chegou nesta etapa ?

eu ja consegui criar o PDF do XML.

FUNCIONOOOOOOOOOOOOOOU !!!

conforme configuracao acima, depois que ajustei todos os campos …

agora proxima faze, não mostrar dados de campos null

nas propriedades do campo > Print When Expression


$F{CST2} == null ? new Boolean(false) : new Boolean(true)

olha o codigo para criar o PDF apartir do XML …

estou postando porque pode ajudar muita gente no guj !

import java.util.HashMap;



import net.sf.jasperreports.engine.JRException;

import net.sf.jasperreports.engine.JRResultSetDataSource;

import net.sf.jasperreports.engine.data.JRXmlDataSource;

import net.sf.jasperreports.engine.JasperCompileManager;

import net.sf.jasperreports.engine.JasperFillManager;

//import net.sf.jasperreports.engine.JasperManager;

import net.sf.jasperreports.engine.JasperPrint;

import net.sf.jasperreports.view.JasperViewer;

import net.sf.jasperreports.engine.JasperPrintManager;



import net.sf.jasperreports.engine.xml.JRXmlLoader;

import net.sf.jasperreports.engine.JasperExportManager;

import net.sf.jasperreports.engine.JasperReport;

import net.sf.jasperreports.engine.design.JasperDesign;





//http://www.guj.com.br/java/203921-dias-entre-datas-ireport/2



public class opencarrego {



    public static void main(String[] args) throws Exception {


        try {



			String relatorio = System.getProperty("user.dir") 
	+ "/meu_NFE.jasper";


			JRXmlDataSource xml =

				new JRXmlDataSource("nf.xml", 

				"/nfeProc/NFe/infNFe/det/prod");

 

			JasperPrint jp = JasperFillManager.fillReport(relatorio, new HashMap(),xml);



//---- visualizar na tela

//			JasperViewer.viewReport(jp, false);     

//---- cria html

// 			JasperExportManager.exportReportToHtmlFile(jp, "a.html"); 

//---- cria pdf

			JasperExportManager.exportReportToPdfFile(jp, "a.pdf");





	    } catch (Exception e) {

         		System.out.println("Ocorreu um erro: " + e.toString() );

         		e.printStackTrace();

      	}





     }    



}