Clipper On Line • Ver Tópico - HTML 2 PDF -> Caminho das pedras!

HTML 2 PDF -> Caminho das pedras!

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

 

HTML 2 PDF -> Caminho das pedras!

Mensagempor Itamar M. Lins Jr. » 14 Mar 2022 19:52

Olá!
PDF usando HTML facim, facim!
cHtml := '<!DOCTYPE html><html><head>'
   cHtml += '<link rel="stylesheet" type="text/css" href="/print.css" media="print" />'
   cHtml += '<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>'
   cHtml += '<title>Orçamento</title>'   
   cHtml += '<style>'
   cHtml += 'table,th,td{'
   cHtml += '  FONT: 12pt "Courier New";'
   cHtml += '  border: 1px solid #888;'
   cHtml += '  border-collapse:collapse;'
   cHtml += '  color:#000000;'
   cHtml += '  table-layout: fixed; width: auto'
   cHtml += '}'

   cHtml += 'p.quebra { page-break-before: always }'
   cHtml += 'ft.a { font: 14px Arial; font-weight: bold ; } '
   cHtml += 'ft.b { font: 11px sans-serif; }'
   cHtml += 'ft.c { font: 12px Arial; }'
   cHtml += 'ft.d { font: 13px Arial; }'
   cHtml += '.zebra tbody tr:nth-child(2n+2) { background: #ccc; } '
   cHtml += '</style>'
   cHtml += '</head><body><div align="center">'

   cHtml += '<table cellpadding="1" cellspacing="1">'
   
   cHtml += '<col width="150px"/>'
   cHtml += '<col width="990px"/>'
   cHtml += '<col width="260px"/>'

   cHtml += '<tr>'
   cHtml += '<td> <img src="./imagens/logoempresa.png" width="125" height="76" alt="Logo Empresa" > </td>'
   cHtml += '<td  align="center" style="font-family:verdana;font-weight:bold">' + em->empresa 
   cHtml += '<br> <ft class="b"> ' + AllTrim(em->endereco) + ", Nº " + em->numero + ", " + AllTrim(em->cidade) + "/" + em->uf
   cHtml += '<br> Fone: ' + Transform(alltrim(em->telefone),'@R (99) 9999-9999')
   cHtml += '  --  <img src="./imagens/whatsapp_.jpg" width="16" height="16" alt="Logo zap" > '
   cHtml += Transform(alltrim(em->whatsapp),'@R (99) 99999-9999') + '</td>'
   cHtml += '<td> <ft class="a"> Orçamento PDV: ' + StrZero(nPDV,3) + '</ft><br>' + str(day(dDia),2)+"/"+SubStr(CMonth(dDia),1,3)+'/'+str(year(dDia),4)+'<br>'+ampm(Transform(cHora,"@R 99:99:99"))
   cHtml += '</td></tr></table>'
   
   cHtml += '<table cellpadding="1" cellspacing="1">'
   
   cHtml += '<col width="1000px"/>'
   cHtml += '<col width="700px"/>'
   
   cHtml += '<tr><td colspan=2> Cliente: ' + cCliente + '</td>'   
   cHtml += '<tr><td colspan=2> Vendedor: ' + pd->vendedor
   cHtml += '</td></tr>'     
   cHtml += '</table>'
   
   cHtml += '<table cellpadding="1" cellspacing="1" class="zebra">'
   cHtml += '<col width="100px"/>'
   cHtml += '<col width="780px"/>'
   cHtml += '<col width="100px"/>'
   cHtml += '<col width="100px"/>'
   cHtml += '<col width="100px"/>'
   cHtml += '<col width="100px"/>'
   cHtml += '<col width="100px"/>'

   cHtml += '<tr>'
   cHtml += '<th> Código </th>'
   cHtml += '<th> Descrição </th>'
   cHtml += '<th> Qtd.Und. </th>'
   cHtml += '<th> A VISTA </th>'
   cHtml += '<th> TOTAL </th>'
   cHtml += '<th> A PRAZO </th>'
   cHtml += '<th> Total </th></tr>'

   nTotAvista := 0; nTotAprazo := 0 //; nSemDesc:= 0; nDesconto :=  0

   Do WHILE pd->(!eof())

      if eq->(DbSeek( pd->cod_mercad) )
      else
         hwg_Msginfo('Não Foi Encontrado no Estoque')
         pd->(DbSkip())
         loop
      endif
 
      cHtml += '<tr>'
           
      cHtml += '<td><ft class="c">' + pd->cod_mercad + '</c></td>'
      cHtml += '<td><ft class="d">' + pd->mercadoria + '</d></td>'

      if es->(dbseek(eq->unidade))
         if es->precisao = 0
            cHtml += '<td align=right>' + Transform( pd->quantidade,'99,999,999')+ '</td>'
         elseif es->precisao = 1
            cHtml += '<td align=right>' + Transform( pd->quantidade,'9999,999.9')+ '</td>'
         elseif es->precisao = 2
            cHtml += '<td align=right>' + Transform( pd->quantidade,'999,999.99')+ '</td>'
         elseif es->precisao = 3
            cHtml += '<td align=right>' + Transform( pd->quantidade,'99,999.999')+ '</td>'
         endif
      else
         cHtml += '<td align=right>'+transform( pd->quantidade,'99,999,999')+ '</td>'
      endif
       
        cHtml += '<td align=right>' + transform( pd->preco_unit,'@e 9999,999.99') + '</td>'
        cHtml += '<td align=right>' + transform(Round( pd->quantidade* pd->preco_unit,2),'@e 9999,999.99')+'</td>'

        cHtml += '<td align=right>' + transform(eq->prazo                         ,'@e 9999,999.99') + '</td>'
        cHtml += '<td align=right>' + transform(Round(eq->prazo*pd->quantidade,2) ,'@e 9999,999.99') + '</td></tr>'

        nTotAvista += Round(pd->quantidade*pd->preco_unit,2)
        nTotAprazo += Round(pd->quantidade*eq->prazo,2)
       
        pd->(dbskip())

   EndDo
     
    IF (nSemdesc-nTotal) > 0
        cHtml += '<tr><td colspan=7> Total Sem Desconto: ' + Transform(nSemdesc,'@e 9999,999.99') + '</td></tr>'
        cHtml += '<tr><td colspan=7> Desconto de: ' + Transform(nSemdesc-nTotal,'@e 9999,999.99') + '</td></tr>'
    endif

    cHtml += '<tr><td colspan=4> Total do Orçamento: ' + '<td align=right>' + Transform(nTotAvista-nDescTot,'@e 9999,999.99')+'</td>'
    cHtml += '<td colspan=2 align=right>' + Transform(nTotAprazo,'@e 9999,999.99') + '</td></tr>'
   
   cHtml += '</table>' 
   cHtml += '</div></body></html>'

   hb_MemoWrit("orcamento.html",cHtml)



Com PDF ZEBRADO etc, etc.... TODAS as firulas desses geradores de relatórios ! Imagens etc, etc, etc e é claro etc!
HTML + CSS é o caminho !

Cereja do bolo!

   IF !Empty(cEmail) //Mandar EMAIL PDF vapt, vupt ! Via linha de comando usando o CHROME para gerar o PDF. Fica na pasta Meus Documentos do win.
      //VIA DOS usar aspas duplas ' "\Program Files (x86)\Google\Chrome\Application\chrome.exe" ...'
      //hb_MemoWrit("comando.bat", cComando)
      cArq := hb_GetEnv("USERPROFILE") + "\Documents\" + 'orçamento_' + AllTrim(cEmail)+'.pdf'
      cComando := '\Program Files (x86)\Google\Chrome\Application\chrome.exe --headless --disable-gpu --print-to-pdf="' + cArq + '" "' + cDirSist+'orcamento.html"'
      hb_processRun( cComando,,@cStdOut,@cStdErr,.T. )
      Email(cArq,cSubject,cBody,cEmail,cArq)
      //hwg_msginfo(cStdOut)
      //hwg_msginfo(cStdErr)     
   ENDIF
   hwg_Shellexecute("orcamento.html","open",,cDirSist,1)   //USE HB_PROCESSRUN quem não usa HWGUI !


Depois eu posto a tela como fica. E a Cta PIX para o cafezinho!

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

HTML 2 PDF -> Caminho das pedras!

Mensagempor Itamar M. Lins Jr. » 14 Mar 2022 22:34

Olá!
Imagem de como fica.
Screenshot_20220314_222858.png


Mais simples que aprender a usar a lib tal LIBXYPDF, LIBAAAPDF...
E com a vantagem de ter milhões de exemplos na internet e não depender de lib nenhuma, aprendizado que não se perde.

orçamento_xxxxxx@gmail.com.pdf
(177.74 KiB) Baixado 57 vezes

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

HTML 2 PDF -> Caminho das pedras!

Mensagempor Poka » 15 Mar 2022 16:44

Obrigado Itamar.

Poka
Avatar de usuário

Poka
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 509
Data de registro: 25 Out 2004 21:26
Cidade/Estado: Leme/SP
Curtiu: 0 vez
Mens.Curtidas: 23 vezes

HTML 2 PDF -> Caminho das pedras!

Mensagempor JoséQuintas » 16 Mar 2022 09:26

Não gostei, achei muito complicado.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

HTML 2 PDF -> Caminho das pedras!

Mensagempor Itamar M. Lins Jr. » 16 Mar 2022 09:47

Olá!
Não gostei, achei muito complicado.

Lógico que tem os níveis, ai está no nível médio-simples de dificuldade ;-)
Pode tirar o CSS... para começar a aprender.
<html>
Meu texto CRU SEM NADA
</html>
//Salvar Arquivo html
//Transformar em PDF na pasta meus documentos.
      cArq := hb_GetEnv("USERPROFILE") + "\Documents\" + 'orçamento_' + AllTrim(cEmail)+'.pdf'
cComando := '\Program Files (x86)\Google\Chrome\Application\chrome.exe --headless --disable-gpu --print-to-pdf="' + cArq + '" "' + cDirSist+'orcamento.html"'


Vai aprender HTML que é mais fácil que aprender comandos de LIBS que não está mais evoluindo.
HTML vai sempre servir, e aprender com os exemplos da internet é mais fácil.
O que não falta são professores e exemplos para ensinar.

Seu guru passa a ser STACK OVERFLOW ixi !

Sem falar de gráficos e tudo mais que é possível VIVO! não é estático.
E se usar mod_harbour vai dar um UP nos nossos sistemas.

Leia as entrelinhas, por trás desse exemplo tem um universo de possibilidades.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

HTML 2 PDF -> Caminho das pedras!

Mensagempor Itamar M. Lins Jr. » 16 Mar 2022 09:55

Olá!
Não gostei, achei muito complicado.

Se tiver um exemplo com esse poder de fogo e tão fácil quanto usar HTML, gostaria de ver.
Quanto mais simples para nós melhor.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

HTML 2 PDF -> Caminho das pedras!

Mensagempor JoséQuintas » 16 Mar 2022 10:43

Itamar M. Lins Jr. escreveu:Se tiver um exemplo com esse poder de fogo e tão fácil quanto usar HTML, gostaria de ver.
Quanto mais simples para nós melhor.


OOHG tem isso fácil faz tempo.

Mas não tenho mais saco de discutir com teimoso, que só vale o que ele usa, é perda de tempo.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

HTML 2 PDF -> Caminho das pedras!

Mensagempor Itamar M. Lins Jr. » 16 Mar 2022 10:47

Olá!
OOHG tem isso fácil faz tempo.


O link please!
Tem nada de discussão, mostre o código e estamos conversados.
HTML usa em qualquer Harbour ou xHarbour sem LIB nenhuma, PHP, Java, etc... OOHG depende de A + B.
HTML é a árvore(Raiz) é o MASTER, não é periferia de linguagens.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

HTML 2 PDF -> Caminho das pedras!

Mensagempor JoséQuintas » 16 Mar 2022 11:41

Itamar M. Lins Jr. escreveu:O lInk please!
Tem nada de discussão, mostre o código e estamos conversados.
HTML usa em qualquer Harbour ou xHarbour sem LIB nenhuma, PHP, Java, etc... OOHG depende de A + B.
HTML é a árvore(Raiz) é o MASTER, não é periferia de linguagens.


Vai dizer que com tanta pesquisa que faz na internet, não consegue digitar no google OOHG?

Como eu disse, não tenho mais saco, acabou de comprovar que é perda de tempo.
Fique com seu html.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

HTML 2 PDF -> Caminho das pedras!

Mensagempor JoséQuintas » 16 Mar 2022 13:06

         POPUP "File 3"
            ITEM 'report form hbprinter'  ACTION repof( "HBPRINTER" )
            ITEM 'report form MINIPRINT'  ACTION repof( "MINIPRINT" )
            ITEM 'report form TXT'        ACTION repof( "TXTPRINT" )
            ITEM 'report form DOS'        ACTION repof( "DOSPRINT" )
            ITEM 'report form RAW'        ACTION repof( "RAWPRINT" )
            ITEM 'report form excelprint' ACTION repof( "EXCELPRINT" )
            ITEM 'report form Opencalc'   ACTION repof( "CALCPRINT" )
            ITEM 'report form RTF'        ACTION repof( "RTFPRINT" )
            ITEM 'report form CSV'        ACTION repof( "CSVPRINT" )
            ITEM 'report form HTML'       ACTION repof( "HTMLPRINT" )
            ITEM 'report form PDF'        ACTION repof( "PDFPRINT" )
            ITEM "SpreadSheet"            ACTION repof( "SPREADSHEETPRINT" )
         END POPUP


Uia
UMA das opções é html.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

HTML 2 PDF -> Caminho das pedras!

Mensagempor Itamar M. Lins Jr. » 16 Mar 2022 14:18

Olá!
Puxa que exemplo legal.
Parabéns !

Vai dizer que com tanta pesquisa que faz na internet, não consegue digitar no google OOHG?

Eu não disse que não tinha, disse que esse exemplo que postei é MAIS SIMPLES.
Eu agora tenho que mostrar mais o quê ?

Se eu não achei via MINIPRINT, etc nada parecido, isso desde muito tempo e postei esse em HTML vc disse que OOHG é mais simples... Eu que tenho que procurar ? Se eu já sei que não tem, e que é mais difícil e limitado. Cadê o seu exemplo mais fácil ?

Todo mundo quer saber. Não apenas sou eu o interessado. Se tem vamos usar! Beneficie todos nós que precisamos.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

HTML 2 PDF -> Caminho das pedras!

Mensagempor alxsts » 16 Mar 2022 14:26

Olá!

Deixando de lado as paixões e azedumes pessoais, e o fato de ser fácil ou difícil, o resultado visual é bonito.
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2943
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

HTML 2 PDF -> Caminho das pedras!

Mensagempor Itamar M. Lins Jr. » 16 Mar 2022 14:31

Olá!
Vai usar JavaScript onde ? Vai usar CSS onde ? Vair usar PHP onde ? Vai usar Chrome/Edge... onde ? Usar Python na WEB onde ? Sem HTML não tem WEB.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

HTML 2 PDF -> Caminho das pedras!

Mensagempor Itamar M. Lins Jr. » 16 Mar 2022 14:51

Olá!
Deixando de lado as paixões e azedumes pessoais, e o fato de ser fácil ou difícil, o resultado visual é bonito.


Mas é exatamente isso que está acontecendo.
Se é difícil ? OK. Mas é difícil em relação a qual opção ? Que opção temos mais fácil ?
Porque usando Hwgui, podem ir lá no SVN para ler umas 3,4... mensagens minhas relatando BUGs do HWReport.

Eu estou na pesquisa p/ encontrar códigos fáceis.
Esses outros da Minigui e OOHG que é a mesma coisa eu já tinha visto alhures... E não achei simples, mas se tiver um exemplo igual a esse que postei é bom saber.

Linha para fazer o ZEBRADO!
   cHtml += '.zebra tbody tr:nth-child(2n+2) { background: #ccc; } '

Nossa que dificuldade!!! Peguei em menos de 1 minuto na internet pronto, centenas de exemplos...

Linha para aplicar ZEBRADO na TABELA!
   cHtml += '<table cellpadding="1" cellspacing="1" class="zebra">'

E muitas outras coisas que tem, já no simples fato de usar qualquer navegador para exibir, imprimir enviar email.

TUDO em 1 LINHA!

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

HTML 2 PDF -> Caminho das pedras!

Mensagempor Itamar M. Lins Jr. » 16 Mar 2022 15:02

Olá!
E tem que rodar no LINUX! No ANDROID, iPhone...

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Próximo



Retornar para Contribuições, Dicas e Tutoriais

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 26 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro