HaruPDF: Como colocar o total de páginas no cabeçalho

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
clodoaldomonteiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 821
Registrado em: 30 Dez 2006 13:17
Localização: Teresina-PI
Contato:

HaruPDF: Como colocar o total de páginas no cabeçalho

Mensagem por clodoaldomonteiro »

Bom dia.

Acho que essa é uma das falhas de gerar PDF, que é como depois de gerar todas as páginas, colocar no cabeçalho de todas o total de páginas? Ex: "Página 1 / 20".

Pelo que vi, não existe um objeto, script ou variável da linguagem PDF que possa ser incluído no momento de gerar o PDF e que depois seja assumido com o valor total de páginas.

Fico grato pela ajuda de todos.
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

HaruPDF: Como colocar o total de páginas no cabeçalho

Mensagem por JoséQuintas »

Guardar os objetos de página em array, e colocar no final.
Enquanto tem os objetos pode mexer.

https://github.com/JoseQuintas/sefazcla ... df_nfe.prg
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
clodoaldomonteiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 821
Registrado em: 30 Dez 2006 13:17
Localização: Teresina-PI
Contato:

HaruPDF: Como colocar o total de páginas no cabeçalho

Mensagem por clodoaldomonteiro »

Consegui gerar um PDF com Haru, de 54 páginas, que ficou com mais de 50 MB.
Já com os fontes do Rochinha "nfwhpdf.prg", ficou em ~3MB, sem compactar, pois compactando fica 340 KB.
Como pode ter uma diferença tão grande assim entre Haru e nfwhpdf.prg?

Fontes que gera o Relatório.
REL_B009.PRG
Fontes que gera o relatório
(32.42 KiB) Baixado 260 vezes
Fontes NfwhPDF com pequenas alterações.
NFWHPDF.PRG
Fontes NfwhPDF
(99.77 KiB) Baixado 258 vezes
Anexos
PDF.CH
CH de NfwhPDF
(8.28 KiB) Baixado 264 vezes
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

HaruPDF: Como colocar o total de páginas no cabeçalho

Mensagem por JoséQuintas »

Muito boa pergunta.
É bom tentar descobrir.
harupdf tem opção de compactar, mesmo assim, existem utilitários que compactam mais ainda.
Não sei porque isso.
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
developer
Usuário Nível 3
Usuário Nível 3
Mensagens: 149
Registrado em: 09 Nov 2024 23:45
Localização: Londrina/PR

HaruPDF: Como colocar o total de páginas no cabeçalho

Mensagem por developer »

Acho que essa é uma das falhas de gerar PDF, que é como depois de gerar todas as páginas, colocar no cabeçalho de todas o total de páginas? Ex: "Página 1 / 20".

Pelo que vi, não existe um objeto, script ou variável da linguagem PDF que possa ser incluído no momento de gerar o PDF e que depois seja assumido com o valor total de páginas.
Pelo que entendi o que você queria era algo assim:
Screenshot_1.jpg
Pois eu fiz uns testes aqui com a LibHaru e consegui, então o que fiz foi:

1) Para cada página adicionada fui colocando o handler da página em uma array

Código: Selecionar todos

M->hPage := HPDF_Add_Page()
AADD( M->aPages, M->hPage )
2) Antes de gerar o PDF com HPDF_SaveToFile( M->hPDF, cFile ), executei a seguinte rotina

Código: Selecionar todos

   nTotal_Pages := LEN( M->aPages )

   FOR i := 1 TO nTotal_Pages
       
       xTemp := LTRIM( STR( i ) ) + '/' + LTRIM( STR( nTotal_Pages ) )
       HPDF_Page_SetFontAndSize( M->aPages[i], M->hFNT_Fixed, 10 )
       HPDF_Page_BeginText( M->aPages[i] )
       HPDF_Page_TextOut(   M->aPages[i], ( HPDF_Page_GetWidth( M->aPages[i] ) / 2 - 10  ) , 30, xTemp )
       HPDF_Page_EndText(   M->aPages[i] )

   NEXT i
O resultado foi que todas as páginas tiveram o número da página impresso com o total de páginas de forma automática sem eu precisar me preocupar com quantas páginas foram adicionadas.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

HaruPDF: Como colocar o total de páginas no cabeçalho

Mensagem por JoséQuintas »

Cuidado com esse exemplo.
Não se deve usar m-> pra definir variáveis.

1) Isso confunde com alias
2) Isso torna a variável PRIVATE
3) Isso impede a checagem de variáveis pelo compilador.
4) A variável é totalmente desprezada pelo compilador, podemos chamar de opção "que se lasque".
O resultado e que só verá o erro no cliente, quando for tarde demais.
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/
Responder