Ir para conteúdo
  • Cadastre-se

dev botao

Erro ao obter PDF do CIOT


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

Recommended Posts

  • Consultores

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 / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

Boa tarde Italo.

Aconteceu o mesmo erro.

Em anexo  manual da ultima versão do eFrrete e xml de retorno contendo o pdf em formato base64Binary.

no manual pag. 28  Obter Operação de Transporte Pdf.

 

Eu ja tenho implementado usando o WSDL importado no delphi, e esta funcionando a busca do PDF,

mas agora eu estou tentando migrar para o acbr.

Manual WebService Sistema e-FRETE 6.0.pdf XmlRetComPDF.xml

Link para o comentário
Compartilhar em outros sites

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
Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde Cleonir,

Não sei quando você atualizou, mas fiz mais algumas alterações e enviei para o repositório.

Por favor atualize os fontes e faça novos testes.

Consultor SAC ACBr

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

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Consultores

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 / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

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
Link para o comentário
Compartilhar em outros sites

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?

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde Cleonir,

Sem o Unzip o PDF foi salvo de forma correta?

Você poderia anexar um para que possamos ver como é esse PDF?

Vou fazer a alteração e enviarei para o repositório.

Consultor SAC ACBr

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

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Consultores
  • Solution

Bom dia Cleonir,

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

Muito obrigado pelos testes.

  • Curtir 1
  • Obrigado 1
Consultor SAC ACBr

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

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Administradores

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

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 1497 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.