Página 1 de 2
Harupdf: Numerando páginas no final / selecionando página
Enviado: 11 Abr 2017 12:17
por JoséQuintas
Quando mexi na classe Sefaz pra geração de PDF de NFE, necessitava de determinado recurso pra facilitar.
Acabei postando no github da harupdf, como um pedido de alteração.
Tudo bem, postei em novembro/2016 e a ajuda veio agora abril/2017, mas já vai ajudar a deixar mais simples:
https://github.com/libharu/libharu/issues/141
Problema:
Numerar páginas do PDF de NFE somente no final, pois só no final se sabe quantas páginas vai dar
Minha solução:
Faço cálculos antes de de gerar o PDF, baseado nos campos variáveis, e item por item
Com essa resposta:
Basta gerar o PDF normalmente, e numerar no final.
A única necessidade é salvar o retorno de HPDF_AddPage() num array, pra ter acesso a cada página no final.
É só pra repassar o recurso, e também pra lembrar que harupdf tem documentação na internet, suporte, etc.
Lembrando também que não importa a linguagem de programação, as soluções serão idênticas, talvez só o código fonte que não.
Depois vou analisar com calma, pra simplificar o DaNFe. Talvez até dê pra acrescentar também no DaCte e DaMDFe.
Vai eliminar uma rotina chatinha.... rs
Harupdf: Numerando páginas no final
Enviado: 11 Abr 2017 19:32
por asimoes
Quintas,
Eu não uso nada de NFE, mas esse cálculo para saber o número de páginas acho interessante, como é você considera uma página cheia: registros + cabeçalho + rodapé ?
Harupdf: Numerando páginas no final
Enviado: 11 Abr 2017 20:38
por JoséQuintas
Harupdf é pra PDF.
Estamos falando das páginas do PDF.
É tudo que sai em cada página.
Por falar nisso... são 1001 utilidades.
Por exemplo, pra criar um índice, ou outras coisas mais.
Daria pra atualizar qualquer página no final.
Só lembrar do recurso quando precisar de algo extra.
Ao invés de oPage := HPDF_AddPage()
No final usaria oPage := oPageList[ nCont ]
Pro manual do Harbour, por exemplo....
(Considerando um índice pra sair no ínicio e não no final).
Harupdf: Numerando páginas no final
Enviado: 11 Abr 2017 20:46
por JoséQuintas
Eu não uso nada de NFE, mas esse cálculo para saber o número de páginas acho interessante, como é você considera uma página cheia: registros + cabeçalho + rodapé ?
Não sei se esta perguntando do meu cálculo.
É mais complicado porque cada produto pode usar uma quantidade de linhas diferentes, cada produto pode ou não ter uma ou mais linhas de observações, a a própria observação pode utilizar o campo próprio, continuar no centro da primeira página, e continuar em páginas seguintes
Sem falar que a quebra de linha é de acordo com o espaço necessário no PDF, e não pela largura em caracteres.
Todo cálculo podendo ser eliminado com o uso do recurso acima.
Harupdf: Numerando páginas no final
Enviado: 12 Abr 2017 13:10
por Pablo César
Em HMG o Dr. Claudio em concesso com ideias no fórum e a pedido de Rathinagiri, foi elaborado uma função que grava em arquivos metafiles depois de te-los gerado.
http://www.hmgforum.com/viewtopic.php?p=47335#p47335
Harupdf: Numerando páginas no final
Enviado: 12 Abr 2017 14:13
por JoséQuintas
Não sei se tem a ver com esse recurso: lembro de ter visto em algum lugar, da OOHG ter uma classe que pode gerar pra PDF, objeto printer to Windows, ou outra coisa.
Pra quem já gera PDF, assim como eu, a opção da Harupdf é mais fácil.
Hoje:
A alteração:
E no final, faz o que quiser com o array, algo parecido com isto:
Código: Selecionar todos
FOR EACH oPage IN oPageList
HPDF_ShowText( oPage, 1,1, "Página " + Str( oPage:__EnumIndex, 10 ) + " do total de " + Str( oPage:__EnumLast, 10 ) )
NEXT
__EnumIndex é o número do elemento atual (Index)
__EnumLast é o número do último elemento (Last)
O resto é só como exemplo, não sei se usei a sintaxe/comando direito.
Geralmente eu memorizo que existe a opção, e quando vou usar pesquiso os detalhes de como se usa.
Só o que faz parte do dia a dia é que lembro dos detalhes.... rs
Acho que o ShowText() precisa de posicionamento prévio, e ele apenas mostra o texto aonde estiver posicionado.
Mas dá uma idéia do que seria preciso, aí quem for usar, provavelmente vai estar com a "mão na massa" nos detalhes, e saberá a forma correta.
Harupdf: Numerando páginas no final
Enviado: 12 Abr 2017 14:20
por asimoes
Quintas,
Esse final que você se refere é no final de toda impressão ? ou é por cada folha impressa, desculpa ainda não entendi direito
Tipo assim :
Página 1 do total de 10
Página 2 do total de 10
Página 3 do total de 10
...
Harupdf: Numerando páginas no final
Enviado: 12 Abr 2017 14:40
por JoséQuintas
Exato, seria pra isso, no final do relatório.
Não sabemos quantas páginas vai dar, então é guardar a referência a cada página, e depois só precisamos colocar a numeração.
Com o acesso a cada página, é só imprimir a numeração normalmente, como faria durante a impressão, só que no final.
Lembrando que é HARUPDF, que gera PDF.
A numeração está sendo feita dentro do PDF, antes de salvar, mostrar na tela ou enviar pra impressora.
Ou seja, TODO o PDF, TODAS as páginas, tudo disponível pra acrescentar o que quiser antes de encerrar.
Harupdf: Numerando páginas no final
Enviado: 12 Abr 2017 15:26
por asimoes
Quintas,
Entendi, a HPDF_ShowText gera um índice de busca baseado nas páginas correto ?
Harupdf: Numerando páginas no final
Enviado: 12 Abr 2017 15:47
por JoséQuintas
Não.
É usar as funções normais da harupdf de escrever texto, desenhar, etc.
Essa ShowText(), se não errei o nome, é pra escrever algum texto.
O normal é a gente usar a página atual e colocar texto, desenho, etc. e ir pra próxima.
Salvando a referência das páginas num array, podemos selecionar qualquer página, e usá-la pra escrever, desenhar, etc.
Não sei se comparando com matricial fica mais fácil de entender:
É como se pudesse fazer:
GOTO page 5
@ 5, 5 SAY "pagina 5/10"
GOTO page 10
@ 5, 5 SAY "pagina 0/10"
Ou comparando com banco de dados: ir pro "registro/página" que quiser, e gravar o que quiser.
Desta forma, podemos preencher partes que deixamos pro final de tudo.
No caso do Danfe de nota fiscal eletrônica, eu geraria todas as páginas, e quando terminar, eu coloco a numeração 1/3, 2/3, 3/3, afinal, só vou saber a quantidade de páginas no fim de tudo.
Harupdf: Numerando páginas no final
Enviado: 12 Abr 2017 18:16
por asimoes
Quintas,
o assunto é "off topic" você mencionou em algum lugar que tem uma getsys personalizada, tem como você postar o código ou colocar no github AllInOne ?
Obrigado
Harupdf: Numerando páginas no final
Enviado: 12 Abr 2017 18:52
por JoséQuintas
Ok. Mas a diferença é mínima da original (Clipper).
Mouse, que na época do Clipper não tinha, limitado ao campo pra não pular validação, bloqueio de caracteres especiais, e tempo limite.
Que eu me lembre é isso.
Nem na digitação de números não mexi até hoje... rs
Ah sim... a atualização de tela... que o Clipper/Harbour não faz, tinha esquecido disso.
Harupdf: Numerando páginas no final
Enviado: 12 Abr 2017 19:10
por asimoes
Off topic, Quintas justamente a função getapllykey com o uso do mouse que me interessa.
Harupdf: Numerando páginas no final
Enviado: 07 Jan 2019 22:19
por Softwhouse
Olá Quintas,
Teria um exemplo de como selecionar a página do pdf e escrever nela ? Estou tentando da maneira abaixo e é informado que a página não existe.
Código: Selecionar todos
oPage:=HPDF_AddPage()
AAdd(oPageList, oPage)
For Each oPage In oPageList
nCont:=oPage: __EnumIndex
oPage:=oPageList[nCont]
@ nRow, nCol + 262 HPDFPRINT 'Test'
Next
END HPDFDOC
Harupdf: Numerando páginas no final
Enviado: 08 Jan 2019 09:06
por JoséQuintas
Pelo fonte, parece que está misturando harupdf do Harbour com harupdf da HMG.