Ir para conteúdo
  • Cadastre-se

dev botao

PDF do DANFE via Stream


Ver Solução Respondido por EMBarbosa,
  • Este tópico foi criado há 1106 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Boa tarde

Diante da necessidade de obter o PDF do DANFE da NFe via Stream (evitando I/O), envio o código para análise, adequação e inclusão no ACBr.

Estou criando a função no Fortes com Lazarus.

Assim que implementado na NFe, vou implementar no restante dos componentes.

Estou a disposição por qualquer dúvida.

stream-pdf.zip

  • Curtir 3

Huelbert Rodrigo
scontti.com

Só sei que nada sei

  • Fundadores
Postado

Olá @Huelbert Rodrigo, parece bem bacana...

- Acho que tem um Memory Leak em TfrlDANFeRL.StreamPDF  (AStringStream)
- penso que também poderiamos refatorar, para evitar código repetido em SalvarPDF e StreamPDF

Vamos conversar com a equipe, e ver a melhor maneira de incorporar...

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

  • Administradores
Postado

Adicionado ao backlog na TK-2080

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

  • 2 semanas depois ...
  • Administradores
Postado

Boa tarde.

Para fins de informação, já se encontra no svn.

At.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

  • Consultores
Postado
Em 05/11/2021 at 14:31, Huelbert Rodrigo disse:

Boa tarde

Diante da necessidade de obter o PDF do DANFE da NFe via Stream (evitando I/O), envio o código para análise, adequação e inclusão no ACBr.

Estou criando a função no Fortes com Lazarus.

Assim que implementado na NFe, vou implementar no restante dos componentes.

Estou a disposição por qualquer dúvida.

stream-pdf.zip 44 kB · 2 downloads

Enviei ao SVN na revisão 23587 sua contribuição com alguns ajustes principalmente para os pontos que o Daniel mencionou acima e mais:

  • memory leaks semelhantes em outros métodos;
  • Geração de exception quando não for passado um stream;
  • Alguns ajustes para simplificar o código em ACBrNFeDANFeRL;

Ficou faltando o arquivo ACBrDFeReportFortes.pas por causa do seguinte método:

    TDFeReportFortes.AjustarFiltroStream(DANFeReport.RLPDFFilter1, DANFeReport.fpDANFe);

1) Eu comentei não parece fazer falta aqui na minha máquina (???). Precisamos ver o seu código para ter certeza que não está faltando nada...

2) Além disso, será que precisamos mesmo desse AStringStream usado como intermediário? Não poderia usar o parâmetro direto?

Como você deve ter feito testes, poderia por favor verificar e nos dar um retorno nesses pontos 1 e 2?

 

  • Curtir 1

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Postado

Testei aqui e está funcional.

1 - No ACBrDFeReportFortes.pas criei a classe AjustarFiltroStream pois precisa desse código abaixo:

class procedure TDFeReportFortes.AjustarFiltroStream(PDFFilter: TRLPDFFilter; AConfig: TACBrDFeReport);
begin
  PDFFilter.ShowProgress := AConfig.MostraStatus;
end;

O ShowProgress do PDFFilter tem que receber a propriedade MostrarStatus, pois a intenção é utilizar o StreamPDF dentro de containers Docker evitando interação desktop.

 

2 - Fiz o refactoring  retirando o AStringStream e ajustando o AjustarFiltroStream (Segue anexo).

 

A ideia é criar a função de stream para todos os pdf do ACBrNFe (StreamEventoPDF e StreamInutilizacaoPDF).

Posso fazer e te enviar aqui? Se preferir me chame no whatsapp que enviei por mensagem.

stream-pdf.zip

  • Obrigado 1

Huelbert Rodrigo
scontti.com

Só sei que nada sei

  • Consultores
  • Solution
Postado
22 horas atrás, Huelbert Rodrigo disse:

Testei aqui e está funcional.

1 - No ACBrDFeReportFortes.pas criei a classe AjustarFiltroStream pois precisa desse código abaixo:

class procedure TDFeReportFortes.AjustarFiltroStream(PDFFilter: TRLPDFFilter; AConfig: TACBrDFeReport);
begin
  PDFFilter.ShowProgress := AConfig.MostraStatus;
end;

O ShowProgress do PDFFilter tem que receber a propriedade MostrarStatus, pois a intenção é utilizar o StreamPDF dentro de containers Docker evitando interação desktop.

 

2 - Fiz o refactoring  retirando o AStringStream e ajustando o AjustarFiltroStream (Segue anexo).

 

A ideia é criar a função de stream para todos os pdf do ACBrNFe (StreamEventoPDF e StreamInutilizacaoPDF).

Posso fazer e te enviar aqui? Se preferir me chame no whatsapp que enviei por mensagem.

stream-pdf.zip 224 kB · 0 downloads

Me parece tudo ok. Enviei ao SVN na revisão 23638.

Queira por favor atualizar, testar e reportar qualquer problema.

 

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • Este tópico foi criado há 1106 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.