Skip to content
On this page

Impressão (DANFE, DANFCE e CC-e)

Desde a v4.00.41 a impressão faz parte do próprio Java_NFe (pacote br.com.swconsultoria.nfe.impressao), sem precisar do projeto Java_Danfe.

Há duas engines no mesmo jar:

v1 — Jasper (ImpressaoNfeUtil)v2 — Thymeleaf (ImpressaoDanfeV2Util)
DocumentosNF-e, NFC-e e CC-eSomente NF-e (modelo 55)
LeiauteDANFE tradicionalNT 2026.010 (IBS/CBS/IS), produção a partir de 01/12/2026
SaídasPDF (arquivo/byte[]), HTML, preview, impressão diretaPDF (arquivo/byte[]), HTML, impressão direta

Esta página cobre a v1 (Jasper). Para o novo DANFE da Reforma Tributária, veja DANFE v2.

Dependências

As bibliotecas de impressão são provided: não vêm por transitividade e precisam ser declaradas no seu projeto.

xml
<dependency>
    <groupId>net.sf.jasperreports</groupId>
    <artifactId>jasperreports</artifactId>
    <version>6.20.6</version>
</dependency>
<dependency>
    <groupId>net.sf.jasperreports</groupId>
    <artifactId>jasperreports-fonts</artifactId>
    <version>6.20.6</version>
</dependency>
<!-- código de barras e QR Code -->
<dependency>
    <groupId>net.sourceforge.barbecue</groupId>
    <artifactId>barbecue</artifactId>
    <version>1.5-beta1</version>
</dependency>
<dependency>
    <groupId>com.google.zxing</groupId>
    <artifactId>core</artifactId>
    <version>3.2.1</version>
</dependency>
<dependency>
    <groupId>com.google.zxing</groupId>
    <artifactId>javase</artifactId>
    <version>3.2.1</version>
</dependency>

Localização

Para garantir a moeda em reais e o formato de data brasileiro, independente do locale da máquina:

java
JRPropertiesUtil.getInstance(DefaultJasperReportsContext.getInstance())
        .setProperty("net.sf.jasperreports.default.locale", "pt_BR");

DANFE NF-e

java
import br.com.swconsultoria.nfe.impressao.ImpressaoDTO;
import br.com.swconsultoria.nfe.impressao.ImpressaoNfeUtil;
import br.com.swconsultoria.nfe.util.XmlNfeUtil;

public class TesteImpressaoNFe {

    public static void main(String[] args) {
        try {
            //Faça a leitura do Arquivo
            String xml = XmlNfeUtil.leXml("d:/teste/nfe.xml");

            //Layout Padrão
            ImpressaoDTO impressao = ImpressaoNfeUtil.impressaoPadraoNFe(xml);

            //Faz a impressão em pdf File
            ImpressaoNfeUtil.impressaoPdfArquivo(impressao, "d:/teste/teste-nfe.pdf");
        } catch (Exception e) {
            //Trate seus erros aqui
            e.printStackTrace();
        }
    }
}

DANFCE (NFC-e)

java
String xml = XmlNfeUtil.leXml("d:/teste/nfce.xml");

//Informe a Url de Consulta da NFC-e do seu Estado
String urlConsulta = "www.sefaznet.ac.gov.br/nfce/consulta";
ImpressaoDTO impressao = ImpressaoNfeUtil.impressaoPadraoNFCe(xml, urlConsulta);

ImpressaoNfeUtil.impressaoPdfArquivo(impressao, "d:/teste/teste-nfce.pdf");

TIP

A URL de consulta pode ser obtida da própria biblioteca: WebServiceUtil.getUrl(config, DocumentoEnum.NFCE, ServicosEnum.URL_CONSULTANFCE).

Carta de Correção (CC-e)

java
String xml = XmlNfeUtil.leXml("d:/teste/cce.xml");   // procEventoNFe da CC-e

ImpressaoDTO impressao = ImpressaoNfeUtil.impressaoPadraoCCe(xml);
ImpressaoNfeUtil.impressaoPdfArquivo(impressao, "d:/teste/teste-cce.pdf");

Formas de saída

java
// PDF em arquivo
ImpressaoNfeUtil.impressaoPdfArquivo(impressao, "d:/teste/danfe.pdf");

// PDF em memória
byte[] pdf = ImpressaoNfeUtil.impressaoPdfByte(impressao);

// HTML em arquivo
ImpressaoNfeUtil.impressaoHtml(impressao, "d:/teste/danfe.html");

// Preview (janela do JasperViewer)
JasperViewer viewer = ImpressaoNfeUtil.impressaoPreview(impressao);
viewer.setVisible(true);

// Impressão direta: impressora padrão, impressora específica e/ou configuração do exporter
ImpressaoNfeUtil.impressaoDireta(impressao);
ImpressaoNfeUtil.impressaoDireta(impressao, printService);
ImpressaoNfeUtil.impressaoDireta(impressao, printService, simplePrintServiceExporterConfiguration);

// JasperPrint, para manipular o relatório antes de exportar
JasperPrint jasperPrint = ImpressaoNfeUtil.geraImpressao(impressao);
java
ImpressaoDTO impressao = ImpressaoNfeUtil.impressaoPadraoNFe(xml);

//Informe qualquer .jasper (do classpath)
impressao.setJasper(ImpressaoNfeUtil.carregaJasperResources("/danfe-modificado.jasper"));

//Para trocar a Logo
impressao.getParametros().put("Logo", MinhaClasse.class.getResourceAsStream("/logo.png"));

byte[] bytes = ImpressaoNfeUtil.impressaoPdfByte(impressao);

Exemplos no repositório: pasta impressao.

MIT License.