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).
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.
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.
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.
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
Além da geração de PDFs fiscais, o ecossistema engloba módulos especializados:
Marcelo Antonio Lázzaro Carli
Empresa: Malc Informática / Malc Gestão em Saúde Ocupacional
Localidade: Marília - SP, Brasil
Este projeto é distribuído sob os termos da licença proprietária/específica da Malc Informática. Todos os direitos reservados.
