Gerador de Danfse Nacional em PDF com Harbour e LibHaru
Enviado: 29 Jul 2026 16:02
Estrutura do DANFSe Gerado
O documento gerado abrange todas as seções estipuladas pelo padrão nacional:Cabeçalho: Logotipo da NFS-e Nacional, Chave de Acesso, Número da NFS-e, Número da DPS, Competência, Tipo de Emissão e QR Code.Identificação dos Envolvidos: Bloco do Prestador/Fornecedor, Tomador/Adquirente e Destinatário da Operação.Serviço Prestado: Código de Tributação Nacional/Municipal, Código NBS, Local de Prestação e Descrição Completa do Serviço.Tributação Municipal (ISSQN): Base de cálculo, Alíquota, Valor do Serviço, Retenção e Descontos.Tributação Federal & Reforma Tributária (IBS/CBS): Valores retidos de IRRF, CSLL, PIS, COFINS e projeções tributárias.
Autor e CréditosAutor: Marcelo Antonio Lázzaro Carli
Linguagem: Harbour / Clipper Bibliotecas: LibHaru (harupdf) / HBZEBRA
LicençaEste projeto é disponibilizado sob a licença MIT (ou de acordo com a política de distribuição da sua organização). Sinta-se à vontade para utilizar, modificar e integrar ao seu software ERP/Emissor.
# Gerador de DANFSe (NFS-e Nacional) em Harbour
Biblioteca e utilitário em **Harbour** para geração do **DANFSe v1.0 (Documento Auxiliar da Nota Fiscal de Serviço Eletrônica Nacional)** em formato PDF, utilizando a **LibHaru** (`harupdf`) e a **hbzebra**.
Visão Geral
Este projeto disponibiliza uma solução completa em linguagem Harbour para leitura do XML da NFS-e Nacional e renderização do DANFSe conforme os padrões oficiais da Receita Federal / Sefin Nacional.
### Principais Características
- **Layout Padrão Nacional**: Compatível com o leiaute v1.0 da NFS-e Nacional.
- **Suporte à LibHaru**: Utiliza a biblioteca `harupdf` para geração de arquivos PDF leves, rápidos e com elementos vetoriais.
- **Geração de QR Code e Códigos de Barras**: Integração com a biblioteca `hbzebra` para renderização direta do QR Code de consulta pública no PDF.
- **Formatação Automática**: Tratamento de campos de datas, moedas, alíquotas, documentos (CNPJ/CPF), CEP e quebra automática de textos longos (descrição dos serviços).
- **Tratamento Multilinguagem e Encodings**: Configuração de codificação PTISO / WinAnsiEncoding com suporte completo a caracteres acentuados.
Estrutura dos Arquivos
| Arquivo | Descrição |
| :--- | :--- |
| `demo_danfse.prg` | Programa de demonstração (ponto de entrada `PROCEDURE Main()`) para configuração do ambiente e chamada da geração do PDF. |
| `danfse.prg` | Função principal (`Danfse(cArquivo, cFilePdf)`) responsável pelo *parser* do XML e montagem dos quadros do DANFSe. |
| `funcao_pdf.prg` | Biblioteca de rotinas de suporte para interação com a LibHaru (desenho de caixas, linhas, textos centralizados/alinhados, código de barras e QR Code). |
Pré-requisitos e Dependências
Para compilar e executar este projeto, você precisará de:
1. **Compilador Harbour** (versão 3.2.0dev ou superior / Harbour build 24.05+).
2. **LibHaru** (`harupdf.ch` e biblioteca `libhpdf`).
3. **HBZEBRA** (`hbzebra.ch` inclusa na distribuição padrão do Harbour).
Como Usar
1. Inicialização e Chamada (Exemplo baseado no `demo_danfse.prg`)
2. Assinatura da Função Principal (danfse.prg)
Snippet de código
Function Danfse(cArquivoXml, cFilePdf)
cArquivoXml: Caminho do arquivo XML no disco ou a string contendo o XML da NFS-e Nacional.cFilePdf: (Opcional) Nome/caminho do arquivo PDF de saída. Se omitido ou em branco, a rotina gerará um arquivo com o nome danfse_<chave_acesso>.pdf
Estrutura do DANFSe Gerado
O documento PDF abrange todas as seções estipuladas pelo padrão nacional:
Cabeçalho: Logotipo da NFS-e Nacional, Chave de Acesso, Número da NFS-e, Número da DPS, Competência, Tipo de Emissão e QR Code para consulta no portal oficial.Identificação dos Envolvidos: Blocos do Prestador/Fornecedor, Tomador/Adquirente e Destinatário da Operação.Serviço Prestado: Código de Tributação Nacional/Municipal, Código NBS, Local de Prestação e Descrição Completa do Serviço.Tributação Municipal (ISSQN): Base de cálculo, Alíquota, Valor do Serviço, Retenções e Descontos.Tributação Federal & Reforma Tributária (IBS/CBS): Retenções de impostos federais e projeções tributárias.
Autor e CréditosAutor: Marcelo Antonio Lázzaro Carli
Linguagem: Harbour Bibliotecas: LibHaru (harupdf) / HBZEBRA
LicençaEste projeto é disponibilizado para integração em sistemas ERP e de emissão fiscal em Harbour. Sinta-se à vontade para utilizar e modificar conforme as necessidades do seu software.
O documento gerado abrange todas as seções estipuladas pelo padrão nacional:Cabeçalho: Logotipo da NFS-e Nacional, Chave de Acesso, Número da NFS-e, Número da DPS, Competência, Tipo de Emissão e QR Code.Identificação dos Envolvidos: Bloco do Prestador/Fornecedor, Tomador/Adquirente e Destinatário da Operação.Serviço Prestado: Código de Tributação Nacional/Municipal, Código NBS, Local de Prestação e Descrição Completa do Serviço.Tributação Municipal (ISSQN): Base de cálculo, Alíquota, Valor do Serviço, Retenção e Descontos.Tributação Federal & Reforma Tributária (IBS/CBS): Valores retidos de IRRF, CSLL, PIS, COFINS e projeções tributárias.
Linguagem: Harbour / Clipper Bibliotecas: LibHaru (harupdf) / HBZEBRA
# Gerador de DANFSe (NFS-e Nacional) em Harbour
Biblioteca e utilitário em **Harbour** para geração do **DANFSe v1.0 (Documento Auxiliar da Nota Fiscal de Serviço Eletrônica Nacional)** em formato PDF, utilizando a **LibHaru** (`harupdf`) e a **hbzebra**.
Este projeto disponibiliza uma solução completa em linguagem Harbour para leitura do XML da NFS-e Nacional e renderização do DANFSe conforme os padrões oficiais da Receita Federal / Sefin Nacional.
### Principais Características
- **Layout Padrão Nacional**: Compatível com o leiaute v1.0 da NFS-e Nacional.
- **Suporte à LibHaru**: Utiliza a biblioteca `harupdf` para geração de arquivos PDF leves, rápidos e com elementos vetoriais.
- **Geração de QR Code e Códigos de Barras**: Integração com a biblioteca `hbzebra` para renderização direta do QR Code de consulta pública no PDF.
- **Formatação Automática**: Tratamento de campos de datas, moedas, alíquotas, documentos (CNPJ/CPF), CEP e quebra automática de textos longos (descrição dos serviços).
- **Tratamento Multilinguagem e Encodings**: Configuração de codificação PTISO / WinAnsiEncoding com suporte completo a caracteres acentuados.
| Arquivo | Descrição |
| :--- | :--- |
| `demo_danfse.prg` | Programa de demonstração (ponto de entrada `PROCEDURE Main()`) para configuração do ambiente e chamada da geração do PDF. |
| `danfse.prg` | Função principal (`Danfse(cArquivo, cFilePdf)`) responsável pelo *parser* do XML e montagem dos quadros do DANFSe. |
| `funcao_pdf.prg` | Biblioteca de rotinas de suporte para interação com a LibHaru (desenho de caixas, linhas, textos centralizados/alinhados, código de barras e QR Code). |
Para compilar e executar este projeto, você precisará de:
1. **Compilador Harbour** (versão 3.2.0dev ou superior / Harbour build 24.05+).
2. **LibHaru** (`harupdf.ch` e biblioteca `libhpdf`).
3. **HBZEBRA** (`hbzebra.ch` inclusa na distribuição padrão do Harbour).
1. Inicialização e Chamada (Exemplo baseado no `demo_danfse.prg`)
Código: Selecionar todos
/*****************************************************************************
* PROGRAMA : DEMO_DANFSE.PRG *
* OBJETIVO : Demo para Gerar DANFE Simplificada (NFS-e Nacional) *
*****************************************************************************/
PROCEDURE Main()
Local cFilePdf := ""
// Configuração de Idioma e Codificação de Página
REQUEST HB_LANG_PT
REQUEST HB_CODEPAGE_PTISO
REQUEST HB_CODEPAGE_PT850 &&& Para indexação/tratamento de acentuados
HB_LangSelect("PT")
// Configurações Padrão do Ambiente Harbour
Set Wrap On
Set Talk Off
Set Date Briti &&& Data no formato dd/mm/aaaa
Set Dele On &&& Ignora registros deletados
Set Score Off
Set Exact On
Setcancel(.F.) &&& Evita cancelamento via ALT + C
Set Cent On &&& Ano com 4 dígitos
Set Epoch to 2000 &&& Ano a partir de 2000
Set Excl Off &&& Compartilhado
Set(_SET_DEBUG, .F.)
// Executa a geração do PDF passando o XML e o nome de saída (opcional)
cFilePdf := Danfse("35503081210229311000180000000000406626072254464195.xml", cFilePdf)
If Left(cFilePdf, 4) == "Erro"
? ("Falha na geração do PDF: " + cFilePdf + hb_Eol())
Else
? ("DANFSe gerado com sucesso: " + cFilePdf + hb_Eol())
Endif
RETURN
Snippet de código
Function Danfse(cArquivoXml, cFilePdf)
cArquivoXml: Caminho do arquivo XML no disco ou a string contendo o XML da NFS-e Nacional.cFilePdf: (Opcional) Nome/caminho do arquivo PDF de saída. Se omitido ou em branco, a rotina gerará um arquivo com o nome danfse_<chave_acesso>.pdf
O documento PDF abrange todas as seções estipuladas pelo padrão nacional:
Cabeçalho: Logotipo da NFS-e Nacional, Chave de Acesso, Número da NFS-e, Número da DPS, Competência, Tipo de Emissão e QR Code para consulta no portal oficial.Identificação dos Envolvidos: Blocos do Prestador/Fornecedor, Tomador/Adquirente e Destinatário da Operação.Serviço Prestado: Código de Tributação Nacional/Municipal, Código NBS, Local de Prestação e Descrição Completa do Serviço.Tributação Municipal (ISSQN): Base de cálculo, Alíquota, Valor do Serviço, Retenções e Descontos.Tributação Federal & Reforma Tributária (IBS/CBS): Retenções de impostos federais e projeções tributárias.
Linguagem: Harbour Bibliotecas: LibHaru (harupdf) / HBZEBRA