Página 1 de 1

Gerador de DACE Completa em PDF com Harbour e LibHaru

Enviado: 23 Jul 2026 18:26
por malcarli
📄 Harbour PDF & DACE Engine (funcao_pdf.prg & dace_completa.prg)
Biblioteca universal e de alta performance em Harbour para geração de documentos fiscais eletrônicos em PDF (como DACE - Declaração Auxiliar de Conteúdo Eletrônica e DANFE) utilizando a LibHaru (HPDF) e recursos nativos de código de barras/QR Code (hbzebra).

🚀 Sobre o Projeto
Desenvolvido por Marcelo Antonio Lázzaro Carli (Malc Informática / Malc Gestão em Saúde Ocupacional), este repositório reúne um conjunto robusto de rotinas em Harbour para automação de documentos fiscais e relatórios gerenciais de alta precisão baseados em coordenadas milimétricas.

O projeto resolve o desafio de desenhar layouts vetoriais complexos em PDF diretamente a partir de arquivos XML de documentos fiscais eletrônicos, garantindo total conformidade com a legislação fiscal brasileira, manutenibilidade e portabilidade.

🛠️ Principais Módulos
funcao_pdf.prg (Motor Gráfico Universal)

Inicialização otimizada de documentos PDF com modo de compressão avançado (HPDF_SetCompressionMode) e encoding WinAnsiEncoding.

Funções auxiliares para desenho de textos alinhados (PDF_PrintText), linhas (PDF_PrintLine), retângulos (PDF_DrawRectangle) e caixas de texto retangulares.

Conversão precisa de coordenadas em milímetros para pontos (MM_X, MM_Y).

dace_completa.prg (Geração de DACE)

Leitura automatizada e parsing de arquivos XML de Declaração Auxiliar de Conteúdo Eletrônica (DocLoadXml).

Construção estruturada do layout oficial: cabeçalho principal, identificação de remetente, destinatário, volumes, notas fiscais associadas, QR-Code e blocos de observações legais.

📦 Dependências e Pré-requisitos
Harbour Compiler (versão atualizada com suporte a POO e extensões C/C++)

LibHaru (harupdf.ch / hmgpdf.lib) para renderização vetorial de PDF.

HBZebra (hbzebra.ch) para geração de códigos de barras e QR Codes.

💻 Exemplo de Uso
1. Inicialização e Configuração do PDF
Snippet de código
#include "harupdf.ch"
#include "hbzebra.ch"

// Inicializa o documento com largura e altura em milímetros (ex: DACE = 150mm x 297mm)
Local aObj := PDF_Init(150, 297)
Local oPdf := aObj[1]
Local oPage := aObj[2]
Local nH_pt := aObj[3]

// Imprime um título centralizado
PDF_PrintText(oPdf, oPage, 10, 75, "DECLARAÇÃO AUXILIAR DE CONTEÚDO", "Helvetica-Bold", 12, 1, nH_pt)
2. Geração da DACE a partir de XML

Código: Selecionar todos

Snippet de código
Function Main()
   Local cArquivo := "dace_exemplo.xml"
   Local cRetorno := DCe_Completa(cArquivo, "dace_saida.pdf")
   
   If Left(cRetorno, 4) == "Erro"
      OutStd(cRetorno)
   Else
      OutStd("PDF gerado com sucesso!")
   Endif
Return Nil
📋 Ecossistema de Soluções (Malc Informática)
Além da geração de PDFs fiscais, o ecossistema engloba módulos especializados:


👤 Autor
Marcelo Antonio Lázzaro Carli

Empresa: Malc Informática / Malc Gestão em Saúde Ocupacional

Localidade: Marília - SP, Brasil

📄 Licença
Este projeto é distribuído sob os termos da licença proprietária/específica da Malc Informática. Todos os direitos reservados.