Como fazer um relatório em PDF, usando comandos HTML em AdvPL

No artigo de hoje, vou mostrar como fazer para gerar um HTML, abrir no navegador para que seja possível a impressão em PDF.

Existem inúmeras formas de se fazer um relatório em AdvPL, porém me perguntaram se tinha como criar um em HTML, e desse arquivo gerar um PDF.

Pois bem, até dá, com tSimpleEditor e o método SaveToPDF, porém isso acaba desconfigurando o visual do relatório.

Então o que eu recomendo, é gerar o HTML via AdvPL, e ao gerar, gravar em uma pasta temporária e já abrir pelo navegador padrão do usuário.

E aí, o usuário pode dar um Ctrl+P na página HTML e escolher a impressora padrão ou em PDF.

Abaixo um exemplo de como fazer:

// Exemplo extraído de https://www.w3schools.com/html/html_tables.asp
Static Function fTextoHtml()
    Local cTextHtml := ""
    Local cPasta := GetTempPath()
    Local cArquivo := "relatorio_" + dToS(Date()) + "_" + StrTran(Time(), ":", "-") + ".html"

    //Monta o HTML
    cTextHtml += '' + CRLF
    cTextHtml += '' + CRLF
    cTextHtml += '' + CRLF
    cTextHtml += '' + CRLF
    cTextHtml += '' + CRLF
    cTextHtml += '' + CRLF
    cTextHtml += '' + CRLF
    cTextHtml += '

Styling Tables

' + CRLF cTextHtml += '' + CRLF cTextHtml += '' + CRLF cTextHtml += ' ' + CRLF cTextHtml += ' ' + CRLF cTextHtml += ' ' + CRLF cTextHtml += ' ' + CRLF cTextHtml += ' ' + CRLF cTextHtml += ' ' + CRLF cTextHtml += ' ' + CRLF cTextHtml += ' ' + CRLF cTextHtml += ' ' + CRLF cTextHtml += ' ' + CRLF cTextHtml += ' ' + CRLF cTextHtml += ' ' + CRLF cTextHtml += ' ' + CRLF cTextHtml += ' ' + CRLF cTextHtml += ' ' + CRLF cTextHtml += ' ' + CRLF cTextHtml += ' ' + CRLF cTextHtml += ' ' + CRLF cTextHtml += ' ' + CRLF cTextHtml += ' ' + CRLF cTextHtml += '
FirstnameLastnameAge
JillSmith50
EveJackson94
JohnDoe80
' + CRLF cTextHtml += '
' + CRLF cTextHtml += '' + CRLF cTextHtml += '' + CRLF cTextHtml += ' ' + CRLF cTextHtml += ' ' + CRLF cTextHtml += ' ' + CRLF cTextHtml += ' ' + CRLF cTextHtml += ' ' + CRLF cTextHtml += ' ' + CRLF cTextHtml += ' ' + CRLF cTextHtml += ' ' + CRLF cTextHtml += ' ' + CRLF cTextHtml += ' ' + CRLF cTextHtml += ' ' + CRLF cTextHtml += ' ' + CRLF cTextHtml += ' ' + CRLF cTextHtml += ' ' + CRLF cTextHtml += ' ' + CRLF cTextHtml += ' ' + CRLF cTextHtml += ' ' + CRLF cTextHtml += ' ' + CRLF cTextHtml += ' ' + CRLF cTextHtml += ' ' + CRLF cTextHtml += '
FirstnameLastnameAge
JillSmith50
EveJackson94
JohnDoe80
' + CRLF cTextHtml += '' + CRLF cTextHtml += '' + CRLF cTextHtml += '' + CRLF //Grava o arquivo HTML e abre ele MemoWrite(cPasta + cArquivo, cTextHtml) ShellExecute("OPEN", cArquivo, "", cPasta, 1) Return

Abaixo um print do navegador aberto, após pressionar Ctrl + P para imprimir.

Exemplo do html pronto para ser impresso no Navegador

Obs.: O HTML usado como referência, foi disponibilizado pela W3 Schools – https://www.w3schools.com/html/tryit.asp?filename=tryhtml_table_id2

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

Deixe uma resposta

Terminal de Informação