Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-07-2010
beemot beemot is offline
Registrado
 
Registrado: may 2010
Posts: 6
Poder: 0
beemot Va por buen camino
Angry Webservice regresa PDF como string en base64

Hola amigos, buenas noches

Estoy diseñando una aplicación que se comunica con un Webservice, el cual en un Responsedata me regresa un string codificado en Base64 que en realidad es un PDF que lógicamente para factibilidad del weservice así me lo manda; si logro almacenar la información en el string, pero hasta ahí llego, de ahí ya no se cómo decodificar y guardar el string como pdf, según por lo que he visto, se usan stream y streammemory pero para este caso no tengo ni idea y según yo primero hay que decodificar el string. Si alguien me pusiera apoyar con esto. Gracias
Responder Con Cita
  #2  
Antiguo 02-07-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.267
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
¿Una pregunta? Si miras el fichero desde un editor de texto, tiene unas marcas/tags similares a estos:

<FACB64>
</FACB64>
<FIRB64>
</FIRB64>

¿Aunque no ponga el fichero, puedes poner un ejemplo de la estructura que tiene?
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 04-07-2010
beemot beemot is offline
Registrado
 
Registrado: may 2010
Posts: 6
Poder: 0
beemot Va por buen camino
Cita:
Empezado por Neftali Ver Mensaje
¿Una pregunta? Si miras el fichero desde un editor de texto, tiene unas marcas/tags similares a estos:

<FACB64>
</FACB64>
<FIRB64>
</FIRB64>

¿Aunque no ponga el fichero, puedes poner un ejemplo de la estructura que tiene?

Que paso amigo, mira, he bajado el string que me regresa el webservice y no tiene estructura alguna, pongo un pedaso mas abajo, pero como te decia, no tiene una estructura; en la documentacion de la pagina solo me dice que siempre me regresa todo codificado en base64. saludos

Es el inicio del codigo
Código:
JVBERi0xLjQNCiWxsrO0DQolQ3JlYXRlZCBieSBXbnYvRVAgUERGIFRvb2xzIHY2LjANCjEgMCBvYmoNCjw8DQovUGFnZU1vZGUgL1VzZU5vbmUNCi9WaWV3ZXJQcmVmZXJlbmNlcyAyIDAgUg0KL1R5cGUgL0NhdGFsb2cNCi9QYWdlTGF5b3V0IC9PbmVDb2x1bW4NCi9QYWdlcyAzIDAgUg0KPj4NCg0KZW5kb2JqDQozIDAgb2JqDQo8PA0KL1R5cGUgL1BhZ2VzDQovS2lkcyBbNCAwIFJdDQovQ291bnQgMQ0KPj4NCg0KZW5kb2JqDQo0IDAgb2JqDQo8PA0KL1Jlc291cmNlcyA8PA0KL1Byb2NTZXQgWy9QREYgL1RleHQgL0ltYWdlQ10NCi9YT2JqZWN0IDw8DQovTkFNRV9waGdibGdnZm9jZmtrbmpicG9iZmNubXBnYmxrZ29qaCA1IDAgUg0KL05BTUVfaXBjZmZjcGRubWRma2puamFqYmZuZG1saG9paWtoZWggNiAwIFINCj4+DQoNCi9Gb250IDw8DQovVVBST0NIK0FyaWFsTVQgNyAwIFINCj4+DQoNCj4+DQoNCi9QYXJlbnQgMyAwIFINCi9UeXBlIC9QYWdlDQovQ29udGVudHMgWzggMCBSIDkgMCBSXQ0KL01lZGlhQm94IFswLjAwMDAwIDAuMDAwMDAgNjEyLjAwMDAwIDc5Mi4wMDAwMF0NCj4+DQoNCmVuZG9iag0KOCAwIG9iag0KPDwNCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlDQovTGVuZ3RoIDEyNA0KPj4NCnN0cmVhbQ0KeF4z0DMAAQUYbWZoBGWZW8JYRakK4Qp5vFwKhbxcMHWGxsZ6phB1ZhYwvaYWULGiVF4uiBYDPXNTZAtQGOhScEMNFBSSc4G6FfT9HH1d4zMLktPSkgtS8nJT0rKz8rISs5LS8lJyczLyMzOzM1IzFFzyebkCebkAUZ8t4g0KZW5kc3RyZWFtDQoNCmVuZG9iag0KOSAwIG9iag0KPDwNCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlDQovTGVuZ3RoIDE4Nw0KPj4NCnN0cmVhbQ0KeF59T00LgkAQHei2sLd+wByLwNxMPVtJEn0ZGx0jrV2/Nf//odU0gqBhHu/xZgbePCnRNb0p7Nlis07NzU7UD0ouWFCC7O18tr/EnxGGubrF6d7ZudcqkkEmpShDkaZFElRlIMIir5SbyjKJcFVS4lPybHvBKZmej6fD0ps4dXzLdhz7WFxQYtpMY5aJTNfmtmEZ
Responder Con Cita
  #4  
Antiguo 05-07-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.267
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Ok. En tu caso veo que no hay etiquetas, porque eso es todo el fichero.
A veces al contener más cosas se "dividen" las partes utilizando etquetas.

Lo primero es comprobar que esos datos es algo "con sentido". Para hacer la prueba fácil puedes probar alguna de las múltiples Webs online que te permiten "decodificar" ese churro de caracteres. Para ello busca en Google "Decode Base64" y encontrarás muchas.
Por ejemplo, si pruebas aquí, con el texto que has colocado, verás que la decodificación devuelve el siguiente texto:

Código:
%PDF-1.4
%����
%Created by Wnv/EP PDF Tools v6.0
1 0 obj
<<
/PageMode /UseNone
/ViewerPreferences 2 0 R
/Type /Catalog
/PageLayout /OneColumn
/Pages 3 0 R
>>
...
Que tiene pinta de ser cláramente un PDF. Prueba con algunos textos y deberías poder grabar el resultado en un PDF y abrirlo sin problemas.

Una vez que hayas comprobado que se traduce correctamente, hay que conseguir hacerlo desde Delphi. Al igual que hay muchas páginas de Decede Base64, también hay bastantes "códigos" en Delphi para hacerlo.

Si colocas un formulario con 2 memos y un botón, puedes probar un código como este:

Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    Memo2: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
const
  CRYPT_STRING_BASE64 = 1;  {Irene. prueba de desencriptado}  

procedure StrToStream(Str: String; Stream: TStream);

implementation

{$R *.dfm}

// Irene. Prueba de desencriptado...
function CryptBinaryToString(pbBinary: PByte; cbBinary: DWORD; dwFlags: DWORD;
  pszString: PChar; var pcchString: DWORD): BOOL; stdcall;
  external 'Crypt32.dll' name 'CryptBinaryToStringA';

function CryptStringToBinary(pszString: PChar; cchString: DWORD; dwFlags: DWORD;
  pbBinary: PByte; var pcbBinary: DWORD; pdwSkip: PDWORD;
  pdwFlags: PDWORD): BOOL; stdcall;
  external 'Crypt32.dll' name 'CryptStringToBinaryA';

procedure StrToStream(Str: String; Stream: TStream);
var
  Buffer: PByte;
  Count: DWORD;
begin
  Count:= 0;
  if CryptStringToBinary(PChar(Str),Length(Str),CRYPT_STRING_BASE64,nil,Count,
    nil,nil) then
  begin
    GetMem(Buffer,Count);
    try
      if CryptStringToBinary(PChar(Str),Length(Str),CRYPT_STRING_BASE64,Buffer,
        Count,nil,nil) then
        Stream.WriteBuffer(Buffer^,Count);
    finally
      FreeMem(Buffer);
    end;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Stream: TFileStream;
  NUevoFich:string;
begin
  // decode
  NuevoFich := 'r:\test.pdf';
  Stream:= TFileStream.Create(NuevoFich, fmCreate);
  try
    StrToStream(Memo1.Lines.Text, Stream);

  finally
    Stream.Free;
  end;

  // Sin embargo la firma no...
  Memo2.Lines.LoadFromFile(NuevoFich);
end;

end.

El memo1 con el trexto original, el que has puesto más arriba, por ejemplo, y en el botón la llamada a la decodificación.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Regresa el hijo no pródigo AzidRain La Taberna 5 19-12-2009 01:16:51
Regresa Indiana Jones! mamcx La Taberna 20 21-05-2008 10:51:57
WebService que retorna un String[]; JuanErasmo .NET 2 22-10-2007 22:34:41
Cosulta de BDF no regresa nada eduardo_2009 Tablas planas 3 21-08-2007 15:00:49
??que regresa un query?? david duarte Tablas planas 5 22-05-2006 17:04:53


La franja horaria es GMT +2. Ahora son las 06:21:59.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi