Formulário em PDF com logotipo

Fórum sobre ferramentas de apoio à programação (Clipper/[x]Harbour)

Moderador: Moderadores

Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Formulário em PDF com logotipo

Mensagem por Jairo Maia »

Olá Pessoal,

Preciso montar um formulário com logotipo que será entregue ao cliente com os dados da compra que será entregue posteriormente (móveis).

Estou tentando fazer em PDF porque será visualizado antes da impressão, para eventuais correções. Como arrumo esse exemplo pra poder imprimir os retângulos no formulário, e o logotipo dentro dele, no canto superior esquerdo. Não consigo andar com isso. O logo é impresso no rodapé e quanto a tentar desenhar o retângulo, no site tem:
HPDF_Page_Rectangle() appends a rectangle to the current path.
An application can invoke HPDF_Page_Rectangle() when the graphics mode of the page is in HPDF_GMODE_PAGE_DESCRIPTION or HPDF_GMODE_PATH_OBJECT.
Como defino esses modos?

Código: Selecionar todos

/*
   Compilar: HBMK2 exemplo hbhpdf.hbc
*/
#include "harupdf.ch"

Function Main()

   Local cFileToSave := "Arquivo.PDF"

   Private oPDF, oPage, nHeight, nWidth, cFonte
   
   oPDF := HPDF_New()
   If oPDF = Nil
      Hb_Alert( "Erro ao gerar o Arquivo Pdf" )
      Return Nil
   EndIf

   HPDF_SetCompressionMode( oPDF, HPDF_COMP_ALL )

   oPage := HPDF_AddPage( oPDF )
   nHeight := HPDF_Page_GetHeight( oPage )
   nWidth  := HPDF_Page_GetWidth( oPage )
   
   //HPDF_Page_CheckState( oPage, HPDF_GMODE_PAGE_DESCRIPTION )
   //HPDF_Page_Rectangle( oPage, 10, 10, 200, 70 ) 
   
   oImage  := HPDF_LoadJPEGImageFromFile( oPDF, "logotipo.jpg" )
   HPDF_Page_DrawImage( oPage, oImage, 2, 5, 170, 60 )

   cFonte := HPDF_GetFont( oPDF, "Helvetica", NIL )
   HPDF_Page_BeginText( oPage )
   HPDF_Page_MoveTextPos( oPage, 10, nHeight - 10 )
   HPDF_Page_SetFontAndSize( oPage, cFonte, 7 )

   //HPDF_Page_MoveTextPosNextLine( oPage )
   HPDF_Page_ShowText( oPage, "Teste de Texto 1" )
   HPDF_Page_MoveTextPos( oPage, 0, -10 )
   HPDF_Page_ShowText( oPage, "Teste de Texto 2" )
   HPDF_Page_MoveTextPos( oPage, 0, -10 )
   HPDF_Page_ShowText( oPage, "Teste de Texto 3" )

   HPDF_Page_EndText( oPage )
   
   HPDF_SaveToFile( oPDF, cFileToSave )

   HPDF_Free( oPDF )

Return ( cFileToSave )
Anexos
logotipo.jpg
logotipo.jpg (6.53 KiB) Exibido 8787 vezes
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Formulário em PDF com logotipo

Mensagem por JoséQuintas »

Dá uma olhada nos métodos DrawLine(), DrawImage() e DrawRetangle()

https://github.com/JoseQuintas/pdfclass ... #L161,L224
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"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 do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Formulário em PDF com logotipo

Mensagem por fladimir »

Acho mais fácil fazer no fast

Já tentou?
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Formulário em PDF com logotipo

Mensagem por Jairo Maia »

Olá Pessoal,
fladimir escreveu:Acho mais fácil fazer no fast
Já tentou?
Não tentei. Na verdade nunca usei o fast. De qualquer forma, estou tentando com com a PDFClass, vou insistir um pouco e ver se o resultado final será como preciso, qualquer coisa tento no fast. Tem algum exemplo que que você indicaria?
JoséQuintas escreveu:Dá uma olhada nos métodos DrawLine(), DrawImage() e DrawRetangle()
Ok, agora uma pergunta básica: Como altero o fonte. Gostaria que uma das linhas (SAC e VENDAS) ficassem em negrito. Onde vejo quais fontes posso usar?
Emporio.jpg
O Método End() está criando uma página vazia ao iniciar a Classe. Alterei e resolveu, mas não sei se terá outras consequência:

Código: Selecionar todos

//IF ::nPdfPage == 0
    //::AddPage()
    //::DrawText( 10, 10, "NENHUM CONTEUDO (NO CONTENT)",, ::nFontSize * 2 )
//ENDIF
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Formulário em PDF com logotipo

Mensagem por JoséQuintas »

ficassem em negrito. Onde vejo quais fontes posso usar?
A Harupdf tem fontes internos, e dá pra adicionar qualquer fonte Windows.
Mas teria que embutir também os fontes no PDF, pra garantir que abra o PDF em qualquer lugar.

Manual da harupdf

https://github.com/libharu/libharu/wiki

as vezes pode ser que o manual pra php ajude
http://php.net/manual/pt_BR/book.haru.php

O negrito, seria por exemplo o fonte "courier-bold"

No PDF não é igual impressora. O AddPage seria algo como carregar uma folha pra trabalho de impressão.
Ao invés de EJECT quando terminar a impressão, é um ADDPAGE ANTES de começar a impressão.

No final o DrawText() é o que já faz tudo referente a texto: escolhe fonte, tamanho e desenha o texto.
E o texto pode ser horizontal, vertical, inclinado, invertido horizontal, invertido vertical, etc.
Nota: DrawText() na classe PDF, que já mostra o que precisa na Harupdf.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"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 do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Formulário em PDF com logotipo

Mensagem por Jairo Maia »

Valeu José. Obrigado por todas as dicas.

Tudo pronto, integrado ao sistema e funcionando. O leiaute final do cabeçalho que era o tido como mais importante foi aprovado como abaixo. Ficou bem funcional. Importante que agradou, isso foi importante.

Valeu mesmo.
cabecalho.jpg
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Formulário em PDF com logotipo

Mensagem por fladimir »

:-Y :-Y :-Y

Q bom

Tem como postar o exemplo do código de como ficou?
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Formulário em PDF com logotipo

Mensagem por Jairo Maia »

Olá Fladimir,

Em anexo todos os arquivos necessários para gerar o leiaute do exemplo. Tenha em mente que esse exemplo apenas gera o leiaute, e claro, o preenchimento dos campos somente estão na função integrada ao sistema.

Descompacte numa pasta vazia, e digite PDF. Será gerado o arquivo Pdf05.Exe que gerará o leiaute e mostrará em tela.

NOTA: No pacote está o arquivo PDFClass.PRG. Atenção porque alterei o método END(), uma vez que como não uso o método PageHeader(), a variável ::nPdfPage fica em zero, antão esse método adicionava uma página no PDF com a mensagem de conteúdo vazio.

NOTA1: Você também irá notar que não houve a preocupação com a impressão desse documento em mais de 1 página. Isso porque pela característica dessa loja, essa questão foi descartada, nem quiseram discutir por acharem desnecessário. Pelo histórico da loja, produtos destinados a entrega ficam entre 1 e no máximo 8, sendo normalmente uma média entre 1 a 4.
Anexos
ExemploPdf.rar
(695.21 KiB) Baixado 450 vezes
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Formulário em PDF com logotipo

Mensagem por JoséQuintas »

Perguntou da HaruPDF e acabou usando minha classe pra PDF... rs

A última versão, direto do meu aplicativo está aqui:

https://github.com/JoseQuintas/LibJoseQ ... fclass.prg

Ganhou opção de trabalhar em pixels, além de linha/coluna ou centímetros, e algumas coisinhas a mais.
Mas por ser direto do aplicativo, pode ter dependências a ajustar, mas não impedem o uso.

Tudo indica que vou acabar colocando uma versão reduzida do aplicativo como exemplo pra tudo que tem/vai ter na LIB.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Formulário em PDF com logotipo

Mensagem por JoséQuintas »

Movi pra extras da LIB testes que eu deixava no aplicativo, por exemplo um teste de Danfe pela PDFClass:

https://github.com/JoseQuintas/LibJoseQ ... sdanfe.prg

conversão DBF pra Access

https://github.com/JoseQuintas/LibJoseQ ... tesmdb.prg

E outras coisas mais.

Ainda em fase de organização.
Esses estão na pasta extras, mas não fazem parte do arquivo de LIB que é gerado.

Desse jeito compartilho meus testes, e elimino do aplicativo.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"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 do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Formulário em PDF com logotipo

Mensagem por rochinha »

Amiguinhos,

A biblioteca compilada para Borland 5.xx ou 6.xx, alguém tem? que poderia disponibilizar.

Jose Quintas
https://github.com/JoseQuintas/LibJoseQ ... sdanfe.prg

conversão DBF pra Access

https://github.com/JoseQuintas/LibJoseQ ... tesmdb.prg
Links não funcionaram dando em Page 404.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Formulário em PDF com logotipo

Mensagem por JoséQuintas »

Como eu venho dizendo, ando reorganizando.

Ficava na pasta extras, mas achei melhor renomear pra Drafts (rascunhos)

https://github.com/JoseQuintas/LibJoseQ ... sdanfe.prg

https://github.com/JoseQuintas/LibJoseQ ... tesmdb.prg

Na principal sempre encontra tudo:

https://github.com/JoseQuintas/LibJoseQuintas/

Inclusive tabelas, movi pra \source\tabelas
E não são compiladas pra LIB.
Aumentar mais de 2MB no EXE deixou de ser tão interessante.... rs
Mais interessante baixar de uma base MySQL ou webservice.
Ou poderia ser uma DLL, mas seja como for, é um arquivo adicional, e mandar um ZIP dá no mesmo.

Nota:
Um dos fontes mencionados é um teste de Danfe usando a PDFClass
De certa forma, se encaixa no assunto do tópico.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"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 do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Formulário em PDF com logotipo

Mensagem por rochinha »

Amiguinhos,

Baixei o anexo logo acima na postagem do Jairo Maia e compilei usando Harbour 3.2.0 linkando as bibliotecas libhpdf.lib, hbhpdf.lib, hbzebra.lib.

Obtive os seguintes erros. Qual biblioteca ainda tá faltando?

Código: Selecionar todos

Compiling...
        1 arquivo(s) copiado(s).
C:\DEV5WIN\harbour-3.2-17626\lib\hboleaut.lib
        1 arquivo(s) copiado(s).
Harbour 3.2.0dev (r1307082134)
Copyright (c) 1999-2013, http://harbour-project.org/
Compiling 'PDF05.prg' and generating preprocessed output to 'PDF05.ppo'...

Borland C++ 5.82 for Win32 Copyright (c) 1993, 2005 Borland
PDF05.c:

Turbo Incremental Link 5.69 Copyright (c) 1997-2005 Borland
Error: Unresolved external '_deflateInit_' referenced from C:\DEV5WIN\HARBOUR-3.2-17626\LIB\LIBHPDF.LIB|hpdfstre
Error: Unresolved external '_deflate' referenced from C:\DEV5WIN\HARBOUR-3.2-17626\LIB\LIBHPDF.LIB|hpdfstre
Error: Unresolved external '_deflateEnd' referenced from C:\DEV5WIN\HARBOUR-3.2-17626\LIB\LIBHPDF.LIB|hpdfstre
Error: Unresolved external '_png_get_io_ptr' referenced from C:\DEV5WIN\HARBOUR-3.2-17626\LIB\LIBHPDF.LIB|hpdfimap
Error: Unresolved external '_png_get_error_ptr' referenced from C:\DEV5WIN\HARBOUR-3.2-17626\LIB\LIBHPDF.LIB|hpdfimap
Error: Unresolved external '_png_read_rows' referenced from C:\DEV5WIN\HARBOUR-3.2-17626\LIB\LIBHPDF.LIB|hpdfimap
Error: Unresolved external '_png_get_image_height' referenced from C:\DEV5WIN\HARBOUR-3.2-17626\LIB\LIBHPDF.LIB|hpdfimap
Error: Unresolved external '_png_get_image_width' referenced from C:\DEV5WIN\HARBOUR-3.2-17626\LIB\LIBHPDF.LIB|hpdfimap
Error: Unresolved external '_png_get_color_type' referenced from C:\DEV5WIN\HARBOUR-3.2-17626\LIB\LIBHPDF.LIB|hpdfimap
Error: Unresolved external '_png_get_rowbytes' referenced from C:\DEV5WIN\HARBOUR-3.2-17626\LIB\LIBHPDF.LIB|hpdfimap
Error: Unresolved external '_png_read_image' referenced from C:\DEV5WIN\HARBOUR-3.2-17626\LIB\LIBHPDF.LIB|hpdfimap
Error: Unresolved external '_png_get_PLTE' referenced from C:\DEV5WIN\HARBOUR-3.2-17626\LIB\LIBHPDF.LIB|hpdfimap
Error: Unresolved external '_png_create_read_struct' referenced from C:\DEV5WIN\HARBOUR-3.2-17626\LIB\LIBHPDF.LIB|hpdfimap
Error: Unresolved external '_png_create_info_struct' referenced from C:\DEV5WIN\HARBOUR-3.2-17626\LIB\LIBHPDF.LIB|hpdfimap
Error: Unresolved external '_png_set_sig_bytes' referenced from C:\DEV5WIN\HARBOUR-3.2-17626\LIB\LIBHPDF.LIB|hpdfimap
Error: Unresolved external '_png_set_read_fn' referenced from C:\DEV5WIN\HARBOUR-3.2-17626\LIB\LIBHPDF.LIB|hpdfimap
Error: Unresolved external '_png_read_info' referenced from C:\DEV5WIN\HARBOUR-3.2-17626\LIB\LIBHPDF.LIB|hpdfimap
Error: Unresolved external '_png_get_IHDR' referenced from C:\DEV5WIN\HARBOUR-3.2-17626\LIB\LIBHPDF.LIB|hpdfimap
Error: Unresolved external '_png_set_strip_16' referenced from C:\DEV5WIN\HARBOUR-3.2-17626\LIB\LIBHPDF.LIB|hpdfimap
Error: Unresolved external '_png_read_update_info' referenced from C:\DEV5WIN\HARBOUR-3.2-17626\LIB\LIBHPDF.LIB|hpdfimap
Error: Unresolved external '_png_get_valid' referenced from C:\DEV5WIN\HARBOUR-3.2-17626\LIB\LIBHPDF.LIB|hpdfimap
Error: Unresolved external '_png_get_tRNS' referenced from C:\DEV5WIN\HARBOUR-3.2-17626\LIB\LIBHPDF.LIB|hpdfimap
Error: Unresolved external '_png_get_interlace_type' referenced from C:\DEV5WIN\HARBOUR-3.2-17626\LIB\LIBHPDF.LIB|hpdfimap
Error: Unresolved external '_png_destroy_read_struct' referenced from C:\DEV5WIN\HARBOUR-3.2-17626\LIB\LIBHPDF.LIB|hpdfimap
Error: Unresolved external '_png_sig_cmp' referenced from C:\DEV5WIN\HARBOUR-3.2-17626\LIB\LIBHPDF.LIB|hpdfimap
* Linking errors *
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
lugab
Colaborador
Colaborador
Mensagens: 843
Registrado em: 19 Mai 2009 15:58

Formulário em PDF com logotipo

Mensagem por lugab »

Não é que eu consegui gerar um PDF certinho, sem erro de compilação e sem faltar uma função ?

Agradeço a todos, e especialmente a Jairo Maia, pelo exemploPdf.rar que compartilhou nesse tópico
lugab
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Formulário em PDF com logotipo

Mensagem por rochinha »

Amiguinhos,

lugab
posta ai seu .BAT, .HBP, blablabla.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Responder