ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Baixar anexo PDF do XML

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
Spyke2013
Novato
Novato


Registrado: Quinta-Feira, 24 de Outubro de 2013
Mensagens: 19

MensagemEnviada: Qua Jan 24, 2024 10:13 am    Assunto: Baixar anexo PDF do XML Responder com Citação

Bom dia.
Pessoal, preciso de uma ajuda de vocês, tenho um xml nesse formato:

Content-Type: application/xop+xml; charset=UTF-8; type="text/xml"
Content-Transfer-Encoding: binary
Content-ID: <root.message@cxf.apache.org>

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns7:entregarManifestacaoProcessualResposta xmlns="http://www.cnj.jus.br/tipos-servico-intercomunicacao-2.2.3.1" xmlns:ns2="http://www.cnj.jus.br/intercomunicacao-2.2.3.1" xmlns:ns3="http://www.cnj.jus.br/mni/cda-2.2.3.1" xmlns:ns4="http://www.cnj.jus.br/mni/eleicao-2.2.3.1" xmlns:ns5="http://www.cnj.jus.br/mni/criminal-2.2.3.1" xmlns:ns6="http://www.stj.jus.br/mni/v100/intercomunicacao" xmlns:ns7="http://www.cnj.jus.br/servico-intercomunicacao-2.2.3.1/"><sucesso>true</sucesso><mensagem>Manifestação processual recebida com sucesso</mensagem><protocoloRecebimento>08022910620238190041</protocoloRecebimento><dataOperacao>2023/12/20 12:59:41</dataOperacao>
<recibo><xop:Include xmlns:xop="http://www.w3.org/2004/08/xop/include" href="cid:15e39d21-fe44-4dc1-b8a4-5d09bacc6b59-1619@www.cnj.jus.br"/></recibo></ns7:entregarManifestacaoProcessualResposta></soap:Body></soap:Envelope>
--uuid:5b02092b-32c8-4c4f-9c4d-8224afcd5e0b
Content-Type: application/pdf
Content-Transfer-Encoding: binary
Content-ID: <15e39d21-fe44-4dc1-b8a4-5d09bacc6b59-1619@www.cnj.jus.br>

%PDF-1.4
%âãÏÓ
2 0 obj
<</ColorSpace/DeviceGray/Subtype/Image/Height 86/Filter/FlateDecode/Type/XObject/Width 79/Length 2469/BitsPerComponent 8>>stream
xœ­Y XSW;¢ R@\Š 8®7tÜÛÂh­µbµ~~ÝÇ7:EfTªa´: ŠÕ¬¢²T€àFeUY4ÂfH€dO^ò^’÷æe/{aþï“÷î}÷ü9÷žsÏ9÷J XÅÏ7fxèÞwæa}´MÅGV»;¨Þƒ¨ƒ{†Cæ±ô*3ù~ú¤é;F}Ûñ>õ.q•ÛŸ'qºõ d”Zý¯ãxgK;+îCù¹­{èÌøÉ®ê!ÿ-™äa•ƒ Ɂ}aN¿(V</ãN‡AØU
»Óxɼ„iÇç¬ï¦Ú­]¸¸8¼p낇Ÿ3²¤«Œ>Q‹¯Êš;3Èk—¹•å¤Âyñ±—n´oÖà¡ÎèH ‘\ÞØ|Ž ˆRZX„ |V{>PËOæ4^Üíc¯U2o.ë~ځ MwÞô´”õÆ Ê;U•è?v%råñíÉö.Þzùá›jQ ‚ðJ™'Ôtpu¢G@½ ˆ_ãcÛôE|®VR.­(ShH õ­HNã“Ìû;Z¥q
rž6ß-då7H|·N‘z)[Ž`tµtPnP•'6…»ÿu–Wêf±BDú¨y÷Šˆªî~0—YׂcS²"E ƒ;H¾$>Äþ²\çg^Ëw;äg£8‡ïÓ»°ò¼^ûTH›øšw¾¸ë&ãè%„~b³Y:×U…òx¢¸?7¬—£+
Ëêtr¤„<Î>lžÎøSŽ G†HÈlC¬á r°ß_®Ý<Ñ‚Ibø%¨õ

Gostaria que pudessem me ajudar a como baixar esse anexo que está na TAG "recibo", pois não tenho a mínima ideia de como fazer. Alguém teria um fonte de exemplo ou pudesse me indicar um lugar que tem um exemplo pra me espelhar?

obs: utilizo delphi xe2.

Grato.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
johnny-walker
Moderador
Moderador


Registrado: Sábado, 4 de Outubro de 2003
Mensagens: 10653
Localização: Contagem/MG - BRAZIL

MensagemEnviada: Qui Fev 01, 2024 7:18 am    Assunto: Responder com Citação

Amigo, carrego o conteúdo do node específico para um stream e salve como pdf, pois se o conteúdo for binário dá para fazê-lo.
Exceto se estiver codificado para base64, neste caso teria de decodificar e jogar numa stream para salvar o arquivo.


bye
_________________
P.O.W.E.R B.Y D.E.L.P.H.I
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
Spyke2013
Novato
Novato


Registrado: Quinta-Feira, 24 de Outubro de 2013
Mensagens: 19

MensagemEnviada: Qui Fev 01, 2024 9:01 am    Assunto: Responder com Citação

johnny-walker escreveu:
Amigo, carrego o conteúdo do node específico para um stream e salve como pdf, pois se o conteúdo for binário dá para fazê-lo.
Exceto se estiver codificado para base64, neste caso teria de decodificar e jogar numa stream para salvar o arquivo.


bye


Bom dia.
Obrigado pela resposta, mais eu já tentei fazer isso e na hora que salva em PDF, ele não abre. Fala que está corrompido.
Eu pesquisei em vários sites e não consegui muita coisa, alguns falam de fazer uma requisição "POST", só que eu não sei como montar o xml e o endereço.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
johnny-walker
Moderador
Moderador


Registrado: Sábado, 4 de Outubro de 2003
Mensagens: 10653
Localização: Contagem/MG - BRAZIL

MensagemEnviada: Sex Fev 09, 2024 11:53 am    Assunto: Responder com Citação

Como disse tente verificar o formato que está codificado.

Outro coisa, tente jogar o conteúdo numa TStringStream, talvez dê certo.


bye
_________________
P.O.W.E.R B.Y D.E.L.P.H.I
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
Spyke2013
Novato
Novato


Registrado: Quinta-Feira, 24 de Outubro de 2013
Mensagens: 19

MensagemEnviada: Sex Fev 09, 2024 5:35 pm    Assunto: Responder com Citação

johnny-walker escreveu:
Como disse tente verificar o formato que está codificado.

Outro coisa, tente jogar o conteúdo numa TStringStream, talvez dê certo.


bye


Boa tarde.

Obrigado novamente pela resposta, porém já tentei isso. Já tentei descodificar, jogar direto na TStringStream e nada.
Acredito que teria que fazer aquele método POST, só que eu não sei como fazer ele com base nessas informações do XML.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Spyke2013
Novato
Novato


Registrado: Quinta-Feira, 24 de Outubro de 2013
Mensagens: 19

MensagemEnviada: Qua Fev 14, 2024 3:59 pm    Assunto: Responder com Citação

johnny-walker escreveu:
Amigo, carrego o conteúdo do node específico para um stream e salve como pdf, pois se o conteúdo for binário dá para fazê-lo.
Exceto se estiver codificado para base64, neste caso teria de decodificar e jogar numa stream para salvar o arquivo.


bye


Boa tarde.

Teria como pegar esse conteúdo e em vez de jogar em um Stream, jogar numa varável Blob e salvar como PDF? Tentei procurar na internet e não consegui achar por variável, alguém sabe como fazer?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
marcieldeg
Colaborador
Colaborador


Registrado: Terça-Feira, 5 de Abril de 2011
Mensagens: 1054
Localização: Vitória - ES

MensagemEnviada: Qui Fev 22, 2024 7:14 pm    Assunto: Responder com Citação

Este retorno não é um XML, é um multipart/form-data. Note que há dois corpos: o primeiro é o XML de resposta com dados e o segundo um PDF. Normalmente se usa multipart/form-data no body da request, mas também pode ser usado na response, apesar de pouco comum.

A forma de processar depende do componente que está utilizando na leitura. Se estiver usando o Indy, você pode tentar utilizar o TIdMultiPartFormDataStream.

Outra forma menos bonita é ler o conteúdo como Stream a partir de %PDF-... que é onde inicia o PDF. Mas para isso é necessário ler os dados como array de bytes, e não como texto, senão o resultado pode ser corrompido.
_________________
"Olha a interface da IDE! Será que ela é? Será que ela é? DELPHI!"
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Spyke2013
Novato
Novato


Registrado: Quinta-Feira, 24 de Outubro de 2013
Mensagens: 19

MensagemEnviada: Seg Fev 26, 2024 8:46 am    Assunto: Responder com Citação

marcieldeg escreveu:
Este retorno não é um XML, é um multipart/form-data. Note que há dois corpos: o primeiro é o XML de resposta com dados e o segundo um PDF. Normalmente se usa multipart/form-data no body da request, mas também pode ser usado na response, apesar de pouco comum.

A forma de processar depende do componente que está utilizando na leitura. Se estiver usando o Indy, você pode tentar utilizar o TIdMultiPartFormDataStream.

Outra forma menos bonita é ler o conteúdo como Stream a partir de %PDF-... que é onde inicia o PDF. Mas para isso é necessário ler os dados como array de bytes, e não como texto, senão o resultado pode ser corrompido.


Bom dia.

Vou tentar das 2 formas e depois posto o resultado. Obrigado pela resposta.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Spyke2013
Novato
Novato


Registrado: Quinta-Feira, 24 de Outubro de 2013
Mensagens: 19

MensagemEnviada: Ter Fev 27, 2024 10:43 am    Assunto: Responder com Citação

marcieldeg escreveu:
Este retorno não é um XML, é um multipart/form-data. Note que há dois corpos: o primeiro é o XML de resposta com dados e o segundo um PDF. Normalmente se usa multipart/form-data no body da request, mas também pode ser usado na response, apesar de pouco comum.

A forma de processar depende do componente que está utilizando na leitura. Se estiver usando o Indy, você pode tentar utilizar o TIdMultiPartFormDataStream.

Outra forma menos bonita é ler o conteúdo como Stream a partir de %PDF-... que é onde inicia o PDF. Mas para isso é necessário ler os dados como array de bytes, e não como texto, senão o resultado pode ser corrompido.


Bom dia.

Tentei alguns exemplos que consegui pela internet e não funcionou, teria como me passar um exemplo de como faz essa operação ("ler o conteúdo como Stream....")?
Eu leio o xml como string e pego seus valores, se puder me ensinar, agradeço desde já.

Grato.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
marcieldeg
Colaborador
Colaborador


Registrado: Terça-Feira, 5 de Abril de 2011
Mensagens: 1054
Localização: Vitória - ES

MensagemEnviada: Qua Fev 28, 2024 10:20 pm    Assunto: Responder com Citação

O exemplo do link abaixo usa uma response multipart composta de um texto e uma imagem. Você pode usar de base para seu código:

https://stackoverflow.com/questions/66728692/delphi-indy-tidhttp-and-multipart-x-mixed-replace-with-text-and-jpeg-image

Correção: este tipo de retorno é multipart/x-mixed-replace, e não multipart/form-data como disse antes.
_________________
"Olha a interface da IDE! Será que ela é? Será que ela é? DELPHI!"
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB