Página 1 de 1

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

Enviado: 04 Abr 2025 08:29
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.

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

Enviado: 04 Abr 2025 08:39
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

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

Enviado: 05 Abr 2025 19:36
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

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

Enviado: 06 Abr 2025 00:53
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.

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

Enviado: 06 Abr 2025 01:42
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.

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

Enviado: 06 Abr 2025 05:36
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.