Ir para conteúdo
  • Cadastre-se

dev botao

Erro ao obter PDF do CIOT


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

Recommended Posts

  • Consultores
Postado

Bom dia Cleonir,

No manual que tenho, consta que na versão 3.6 do mesmo publicado em 04/01/2016 diz:

Melhorias nas explicações de parâmetros de quebra e diferença de frete. Método ObterOperacoesTransporteAgrupadasPdf foi descontinuado.

Se o método que retorna o PDF foi descontinuado porque ele continua funcionando?

Em vez de retornar o PDF deveria pelo menos retornar uma rejeição acusando que o método foi descontinuado.

Fiz uma alteração no componente, mudei o tipo da propriedade PDF de String para AnsiString e na unit ACBrCIOTWebServices alterei o método responsável por salvar o PDF em disco, pois o que estava sendo utilizado pressupunha que o conteúdo do arquivo a ser salvo é um XML, que não é o caso.

Favor atualizar os fontes e faça novos testes.

  • Curtir 1
Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Postado

na classe gerado pela importação do WSDL o campo pdf ficou do tipo TByteDynArray do  System.Types

para salvar em arquivo eu fiz da seguinte forma

var  Arquivo:TStringStream;

Arquivo:=TStringStream.Create;

Arquivo.WriteData(Retorno.Pdf, Length(Retorno.Pdf));
Arquivo.Seek(0,0);
Arquivo.SaveToFile(extractfilepath(application.exename) +'PDF_CIOT\'+nomeArquivo.pdf');

Arquivo.Free;

 

Não sei se isso ajuda em alguma coisa...

  • Curtir 1
  • Consultores
Postado

Bom dia Cleonir,

A ultima alteração que fiz ficou desta forma:

          PDF := leitor.rCampo(tcEsp, 'Pdf');

          if PDF <> '' then
            PDF := UnZip(DecodeBase64(PDF));

Se a sua unit esta exatamente desta forma, experimente remover o UnZip, deixando a linha da seguinte forma:

PDF := DecodeBase64(PDF);

Faça um novo teste e vamos ver se o PDF é salvo corretamente.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Postado

Bom dia a todos...

Quando precisei do CIOT o componente do ACBR ainda não estava pronto, e eu tive que desenvolver por conta própria...

Lembro que nessa parte do PDF apanhei um pouco também.

Acho que isso possa ajudar vocês...

Fiz dessa forma.

function Converter(P: TByteDynArray): string;
var
  Buffer: AnsiString;
begin
  SetLength(Buffer, Length(P));
  System.Move(P[0], Buffer[1], Length(P));
  Result := EncodeBase64(Buffer);
end;

 

var
  MStream : TMemoryStream;
  Decoder : TidDecoderMIME;
  Base64, AuxDtCIOT: string;
 

    Decoder   := TidDecoderMIME.Create(nil);
    MStream   := TMemoryStream.Create;
    Base64    := Converter(Retorno.Pdf);
    Decoder.DecodeStream(Base64,MStream);
    MStream.SaveToFile(xCamCIOT+'\'+AuxDtCIOT+'\'+TiraZeros(txtCod.Text)+'.pdf');
    FreeAndNil(Decoder);
    FreeAndNil(MStream);

 

Grato,

Wagner

  • Curtir 1
Postado
3 horas atrás, Italo Jurisato Junior disse:

Se a sua unit esta exatamente desta forma, experimente remover o UnZip, deixando a linha da seguinte forma:

PDF := DecodeBase64(PDF);

Faça um novo teste e vamos ver se o PDF é salvo corretamente.

Boa tarde Italo.

Removendo o UnZip resolveu o problema.

Você faz este ajuste ou precisa que eu adicione o arquivo alterado?

Postado
Em 10/03/2020 at 09:35, Italo Jurisato Junior disse:

Bom dia Cleonir,

Legal, já fiz a correção no componente e enviei para o repositório.

Muito obrigado pelos testes.

Beleza.

Atualizei hoje, testei e esta tudo ok.

  • Curtir 2
  • Administradores
Postado

Obrigado por reportar.

Fechando. Para novas dúvidas, criar um novo tópico.

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 !!

  • Este tópico foi criado há 1727 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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.