Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Transformar base64Bininary a archivo pdf

2,507 views
Skip to first unread message

Javi

unread,
Aug 3, 2009, 5:30:01 AM8/3/09
to

Hola

Tengo un problema que aún no he conseguido solucionar. He escrito algún
comentario respecto a este problema pero no encuentro la solución.

A través de un servicio web recibo lo siguiente:

<xs:element name="archivo_adjunto" type="xs:base64Binary" />

Creo todos los objetos y referencias necesarios para conectar al servicio
web, lo consumo y recibo la respuesta. Con esta respuesta tengo el documento.

respuesta.write (respuesta.archivo_adjunto)

Sale por pantalla: System.Byte[]

Originalmente el documento pdf está codificado en Base64, ahora, con el
servicio web lo puedo obtener y tengo que hacer lo contrario, decodificarlo
para obtener el pdf.

Me puede ayudar?,

Muchas gracias

Juan T. Llibre

unread,
Aug 3, 2009, 7:52:57 AM8/3/09
to
Creo que con Convert.FromBase64String() resuelves.

Esto convierte la cadena Base 64 a Unicode :

string TuCadenaPDF = 'incluye la cadena que recibes aqui';
byte[] B = Convert.FromBase64String(TuCadenaPDF);
System.Text.UnicodeEncoding encoding = new System.Text.UnicodeEncoding();
string NuevaCadenaPDF = encoding.GetString(B);

Ahora hay que agregar NuevaCadenaPDF al response de la p�gina:

Response.Clear();
Response.ClearHeaders();
Response.Buffer = true;
Response.ContentType = "application/pdf";
string filename = "Mi.pdf";
Response.AddHeader("content-disposition", "inline; filename=" + filename);
Response.Write(NuevaCadenaPDF);
Response.Flush();
Response.End();


Juan T. Llibre, asp.net MVP
� Estas probando VS 2010 y ASP.NET 4.0 ?
Reg�strate (gratis) en los Foros de VS 2010 y ASP.NET 4.0, en espa�ol
http://asp.net.do/foros/forums/
=====================================================

"Javi" <Ja...@discussions.microsoft.com> wrote in message news:EC9CD412-0804-4C54...@microsoft.com...
>
> Hola
>
> Tengo un problema que a�n no he conseguido solucionar. He escrito alg�n
> comentario respecto a este problema pero no encuentro la soluci�n.
>
> A trav�s de un servicio web recibo lo siguiente:


>
> <xs:element name="archivo_adjunto" type="xs:base64Binary" />
>
> Creo todos los objetos y referencias necesarios para conectar al servicio
> web, lo consumo y recibo la respuesta. Con esta respuesta tengo el documento.
>
> respuesta.write (respuesta.archivo_adjunto)
>
> Sale por pantalla: System.Byte[]
>

> Originalmente el documento pdf est� codificado en Base64, ahora, con el

Javi

unread,
Aug 3, 2009, 8:14:02 AM8/3/09
to

Muchas gracias Juan por sui ayuda,

Estoy poniendo lo que usted me indica, transformándolo a vb.net es decir:

Dim TuCadenaPDF As String =
Convert.ToString(respuesta.documento_adjunto)
Dim B As Byte() = Convert.FromBase64String(TuCadenaPDF)
Dim encoding As System.Text.UnicodeEncoding = New
System.Text.UnicodeEncoding
Dim NuevaCadenaPDF As String = encoding.GetString(B)

Response.Clear()
Response.ClearHeaders()
Response.Buffer = True
Response.ContentType = "application/pdf"
Dim filename As String = "Mi.pdf"


Response.AddHeader("content-disposition", "inline; filename=" +
filename)
Response.Write(NuevaCadenaPDF)
Response.Flush()
Response.End()


Al ejecutar la página sale el siguiente error:

Detalles de la excepción: System.FormatException: Carácter no válido en una
cadena Base-64.
Línea 76: Dim B As Byte() = Convert.FromBase64String(TuCadenaPDF)

respuesta.documento_adjunto devuelve el documento pdf en stringbase64
(byte()) por eso en la primera linea lo convierto a string para almacenarlo
en TuCadenaPDF.

Estoy haciendo algo mal?

Muchas gracias por ayuda.

Saludos,

"Juan T. Llibre" wrote:

> Creo que con Convert.FromBase64String() resuelves.
>
> Esto convierte la cadena Base 64 a Unicode :
>
> string TuCadenaPDF = 'incluye la cadena que recibes aqui';
> byte[] B = Convert.FromBase64String(TuCadenaPDF);
> System.Text.UnicodeEncoding encoding = new System.Text.UnicodeEncoding();
> string NuevaCadenaPDF = encoding.GetString(B);
>

> Ahora hay que agregar NuevaCadenaPDF al response de la página:


>
> Response.Clear();
> Response.ClearHeaders();
> Response.Buffer = true;
> Response.ContentType = "application/pdf";
> string filename = "Mi.pdf";
> Response.AddHeader("content-disposition", "inline; filename=" + filename);
> Response.Write(NuevaCadenaPDF);
> Response.Flush();
> Response.End();
>
>
>
>
> Juan T. Llibre, asp.net MVP
> ¿ Estas probando VS 2010 y ASP.NET 4.0 ?

> Regístrate (gratis) en los Foros de VS 2010 y ASP.NET 4.0, en español


> http://asp.net.do/foros/forums/
> =====================================================
>
> "Javi" <Ja...@discussions.microsoft.com> wrote in message news:EC9CD412-0804-4C54...@microsoft.com...
> >
> > Hola
> >

> > Tengo un problema que aún no he conseguido solucionar. He escrito algún
> > comentario respecto a este problema pero no encuentro la solución.
> >
> > A través de un servicio web recibo lo siguiente:


> >
> > <xs:element name="archivo_adjunto" type="xs:base64Binary" />
> >
> > Creo todos los objetos y referencias necesarios para conectar al servicio
> > web, lo consumo y recibo la respuesta. Con esta respuesta tengo el documento.
> >
> > respuesta.write (respuesta.archivo_adjunto)
> >
> > Sale por pantalla: System.Byte[]
> >

> > Originalmente el documento pdf está codificado en Base64, ahora, con el

Juan T. Llibre

unread,
Aug 3, 2009, 12:05:31 PM8/3/09
to
No estoy seguro, pero creo que no tienes que convertir a String.
Base64 encoding es, por naturaleza, un String.

Si fuera un documento PDF, solo tendr�as que hacer la segunda parte,
es decir, solo leer el stream, darle nombre y guardar o desplegar el archivo.

Juan T. Llibre, asp.net MVP
� Estas probando VS 2010 y ASP.NET 4.0 ?

Reg�strate (gratis) en los Foros de VS 2010 y ASP.NET 4.0, en espa�ol
http://asp.net.do/foros/forums/
=====================================================
"Javi" <Ja...@discussions.microsoft.com> wrote in message news:855EBD22-28E7-4649...@microsoft.com...


>
> Muchas gracias Juan por sui ayuda,
>

> Estoy poniendo lo que usted me indica, transform�ndolo a vb.net es decir:


>
> Dim TuCadenaPDF As String =
> Convert.ToString(respuesta.documento_adjunto)
> Dim B As Byte() = Convert.FromBase64String(TuCadenaPDF)
> Dim encoding As System.Text.UnicodeEncoding = New
> System.Text.UnicodeEncoding
> Dim NuevaCadenaPDF As String = encoding.GetString(B)
>
> Response.Clear()
> Response.ClearHeaders()
> Response.Buffer = True
> Response.ContentType = "application/pdf"
> Dim filename As String = "Mi.pdf"
> Response.AddHeader("content-disposition", "inline; filename=" +
> filename)
> Response.Write(NuevaCadenaPDF)
> Response.Flush()
> Response.End()
>
>

> Al ejecutar la p�gina sale el siguiente error:
>
> Detalles de la excepci�n: System.FormatException: Car�cter no v�lido en una
> cadena Base-64.
> L�nea 76: Dim B As Byte() = Convert.FromBase64String(TuCadenaPDF)


>
> respuesta.documento_adjunto devuelve el documento pdf en stringbase64
> (byte()) por eso en la primera linea lo convierto a string para almacenarlo
> en TuCadenaPDF.
>
> Estoy haciendo algo mal?
>
> Muchas gracias por ayuda.
>
> Saludos,
>
> "Juan T. Llibre" wrote:
>
>> Creo que con Convert.FromBase64String() resuelves.
>>
>> Esto convierte la cadena Base 64 a Unicode :
>>
>> string TuCadenaPDF = 'incluye la cadena que recibes aqui';
>> byte[] B = Convert.FromBase64String(TuCadenaPDF);
>> System.Text.UnicodeEncoding encoding = new System.Text.UnicodeEncoding();
>> string NuevaCadenaPDF = encoding.GetString(B);
>>

>> Ahora hay que agregar NuevaCadenaPDF al response de la p�gina:


>>
>> Response.Clear();
>> Response.ClearHeaders();
>> Response.Buffer = true;
>> Response.ContentType = "application/pdf";
>> string filename = "Mi.pdf";
>> Response.AddHeader("content-disposition", "inline; filename=" + filename);
>> Response.Write(NuevaCadenaPDF);
>> Response.Flush();
>> Response.End();
>>
>>
>>
>>
>> Juan T. Llibre, asp.net MVP
>> � Estas probando VS 2010 y ASP.NET 4.0 ?

>> Reg�strate (gratis) en los Foros de VS 2010 y ASP.NET 4.0, en espa�ol


>> http://asp.net.do/foros/forums/
>> =====================================================
>>
>> "Javi" <Ja...@discussions.microsoft.com> wrote in message news:EC9CD412-0804-4C54...@microsoft.com...
>> >
>> > Hola
>> >

>> > Tengo un problema que a�n no he conseguido solucionar. He escrito alg�n
>> > comentario respecto a este problema pero no encuentro la soluci�n.
>> >

>> > A trav�s de un servicio web recibo lo siguiente:


>> >
>> > <xs:element name="archivo_adjunto" type="xs:base64Binary" />
>> >
>> > Creo todos los objetos y referencias necesarios para conectar al servicio
>> > web, lo consumo y recibo la respuesta. Con esta respuesta tengo el documento.
>> >
>> > respuesta.write (respuesta.archivo_adjunto)
>> >
>> > Sale por pantalla: System.Byte[]
>> >

>> > Originalmente el documento pdf est� codificado en Base64, ahora, con el

Javi

unread,
Aug 3, 2009, 12:24:01 PM8/3/09
to

Muchas gracias Juan,

He puesto esto:

Dim encoding As System.Text.UnicodeEncoding = New System.Text.UnicodeEncoding

Dim NuevaCadenaPDF As String = encoding.GetString(documento.documento_adjunto)

y al ejecutar no da error, pero al intentar mostrar el pdf sale ventana de
adobe acrobat que dice: "El archivo no empieza por '%PDF-'"

estoy empezando a pensar que igual el documento en base 64 que me están
pasando no está bien.

muchas gracias, saludos,

"Juan T. Llibre" wrote:

> No estoy seguro, pero creo que no tienes que convertir a String.
> Base64 encoding es, por naturaleza, un String.
>

> Si fuera un documento PDF, solo tendrías que hacer la segunda parte,


> es decir, solo leer el stream, darle nombre y guardar o desplegar el archivo.
>
>
>
> Juan T. Llibre, asp.net MVP
> ¿ Estas probando VS 2010 y ASP.NET 4.0 ?

> Regístrate (gratis) en los Foros de VS 2010 y ASP.NET 4.0, en español


> http://asp.net.do/foros/forums/
> =====================================================
> "Javi" <Ja...@discussions.microsoft.com> wrote in message news:855EBD22-28E7-4649...@microsoft.com...
> >
> > Muchas gracias Juan por sui ayuda,
> >

> > Estoy poniendo lo que usted me indica, transformándolo a vb.net es decir:


> >
> > Dim TuCadenaPDF As String =
> > Convert.ToString(respuesta.documento_adjunto)
> > Dim B As Byte() = Convert.FromBase64String(TuCadenaPDF)
> > Dim encoding As System.Text.UnicodeEncoding = New
> > System.Text.UnicodeEncoding
> > Dim NuevaCadenaPDF As String = encoding.GetString(B)
> >
> > Response.Clear()
> > Response.ClearHeaders()
> > Response.Buffer = True
> > Response.ContentType = "application/pdf"
> > Dim filename As String = "Mi.pdf"
> > Response.AddHeader("content-disposition", "inline; filename=" +
> > filename)
> > Response.Write(NuevaCadenaPDF)
> > Response.Flush()
> > Response.End()
> >
> >

> > Al ejecutar la página sale el siguiente error:
> >
> > Detalles de la excepción: System.FormatException: Carácter no válido en una
> > cadena Base-64.

> > Línea 76: Dim B As Byte() = Convert.FromBase64String(TuCadenaPDF)


> >
> > respuesta.documento_adjunto devuelve el documento pdf en stringbase64
> > (byte()) por eso en la primera linea lo convierto a string para almacenarlo
> > en TuCadenaPDF.
> >
> > Estoy haciendo algo mal?
> >
> > Muchas gracias por ayuda.
> >
> > Saludos,
> >
> > "Juan T. Llibre" wrote:
> >
> >> Creo que con Convert.FromBase64String() resuelves.
> >>
> >> Esto convierte la cadena Base 64 a Unicode :
> >>
> >> string TuCadenaPDF = 'incluye la cadena que recibes aqui';
> >> byte[] B = Convert.FromBase64String(TuCadenaPDF);
> >> System.Text.UnicodeEncoding encoding = new System.Text.UnicodeEncoding();
> >> string NuevaCadenaPDF = encoding.GetString(B);
> >>

> >> Ahora hay que agregar NuevaCadenaPDF al response de la página:


> >>
> >> Response.Clear();
> >> Response.ClearHeaders();
> >> Response.Buffer = true;
> >> Response.ContentType = "application/pdf";
> >> string filename = "Mi.pdf";
> >> Response.AddHeader("content-disposition", "inline; filename=" + filename);
> >> Response.Write(NuevaCadenaPDF);
> >> Response.Flush();
> >> Response.End();
> >>
> >>
> >>
> >>
> >> Juan T. Llibre, asp.net MVP
> >> ¿ Estas probando VS 2010 y ASP.NET 4.0 ?

> >> Regístrate (gratis) en los Foros de VS 2010 y ASP.NET 4.0, en español


> >> http://asp.net.do/foros/forums/
> >> =====================================================
> >>
> >> "Javi" <Ja...@discussions.microsoft.com> wrote in message news:EC9CD412-0804-4C54...@microsoft.com...
> >> >
> >> > Hola
> >> >

> >> > Tengo un problema que aún no he conseguido solucionar. He escrito algún
> >> > comentario respecto a este problema pero no encuentro la solución.
> >> >
> >> > A través de un servicio web recibo lo siguiente:


> >> >
> >> > <xs:element name="archivo_adjunto" type="xs:base64Binary" />
> >> >
> >> > Creo todos los objetos y referencias necesarios para conectar al servicio
> >> > web, lo consumo y recibo la respuesta. Con esta respuesta tengo el documento.
> >> >
> >> > respuesta.write (respuesta.archivo_adjunto)
> >> >
> >> > Sale por pantalla: System.Byte[]
> >> >

> >> > Originalmente el documento pdf está codificado en Base64, ahora, con el

Juan T. Llibre

unread,
Aug 3, 2009, 3:59:52 PM8/3/09
to
re:
!> dice: "El archivo no empieza por '%PDF-'"

Dos posibles soluciones...

1.
Aseg�rate de que en el archivo .aspx no haya tags de html.
i.e., elimina <html>, <body>, etc.

2.
Prueba comentando la l�nea :

en c# :

// Response.ContentType = "application/pdf"

en vb.net :

' Response.ContentType = "application/pdf"


Juan T. Llibre, asp.net MVP
� Estas probando VS 2010 y ASP.NET 4.0 ?

Reg�strate (gratis) en los Foros de VS 2010 y ASP.NET 4.0, en espa�ol
http://asp.net.do/foros/forums/
=====================================================
"Javi" <Ja...@discussions.microsoft.com> wrote in message news:F818CFBA-8C1B-491D...@microsoft.com...


>
> Muchas gracias Juan,
>
> He puesto esto:
>
> Dim encoding As System.Text.UnicodeEncoding = New System.Text.UnicodeEncoding
>
> Dim NuevaCadenaPDF As String = encoding.GetString(documento.documento_adjunto)
>
> y al ejecutar no da error, pero al intentar mostrar el pdf sale ventana de
> adobe acrobat que dice: "El archivo no empieza por '%PDF-'"
>

> estoy empezando a pensar que igual el documento en base 64 que me est�n
> pasando no est� bien.


>
> muchas gracias, saludos,
>
> "Juan T. Llibre" wrote:
>
>> No estoy seguro, pero creo que no tienes que convertir a String.
>> Base64 encoding es, por naturaleza, un String.
>>

>> Si fuera un documento PDF, solo tendr�as que hacer la segunda parte,


>> es decir, solo leer el stream, darle nombre y guardar o desplegar el archivo.
>>
>>
>>
>> Juan T. Llibre, asp.net MVP
>> � Estas probando VS 2010 y ASP.NET 4.0 ?

>> Reg�strate (gratis) en los Foros de VS 2010 y ASP.NET 4.0, en espa�ol


>> http://asp.net.do/foros/forums/
>> =====================================================
>> "Javi" <Ja...@discussions.microsoft.com> wrote in message news:855EBD22-28E7-4649...@microsoft.com...
>> >
>> > Muchas gracias Juan por sui ayuda,
>> >

>> > Estoy poniendo lo que usted me indica, transform�ndolo a vb.net es decir:


>> >
>> > Dim TuCadenaPDF As String =
>> > Convert.ToString(respuesta.documento_adjunto)
>> > Dim B As Byte() = Convert.FromBase64String(TuCadenaPDF)
>> > Dim encoding As System.Text.UnicodeEncoding = New
>> > System.Text.UnicodeEncoding
>> > Dim NuevaCadenaPDF As String = encoding.GetString(B)
>> >
>> > Response.Clear()
>> > Response.ClearHeaders()
>> > Response.Buffer = True
>> > Response.ContentType = "application/pdf"
>> > Dim filename As String = "Mi.pdf"
>> > Response.AddHeader("content-disposition", "inline; filename=" +
>> > filename)
>> > Response.Write(NuevaCadenaPDF)
>> > Response.Flush()
>> > Response.End()
>> >
>> >

>> > Al ejecutar la p�gina sale el siguiente error:
>> >
>> > Detalles de la excepci�n: System.FormatException: Car�cter no v�lido en una
>> > cadena Base-64.

>> > L�nea 76: Dim B As Byte() = Convert.FromBase64String(TuCadenaPDF)


>> >
>> > respuesta.documento_adjunto devuelve el documento pdf en stringbase64
>> > (byte()) por eso en la primera linea lo convierto a string para almacenarlo
>> > en TuCadenaPDF.
>> >
>> > Estoy haciendo algo mal?
>> >
>> > Muchas gracias por ayuda.
>> >
>> > Saludos,
>> >
>> > "Juan T. Llibre" wrote:
>> >
>> >> Creo que con Convert.FromBase64String() resuelves.
>> >>
>> >> Esto convierte la cadena Base 64 a Unicode :
>> >>
>> >> string TuCadenaPDF = 'incluye la cadena que recibes aqui';
>> >> byte[] B = Convert.FromBase64String(TuCadenaPDF);
>> >> System.Text.UnicodeEncoding encoding = new System.Text.UnicodeEncoding();
>> >> string NuevaCadenaPDF = encoding.GetString(B);
>> >>

>> >> Ahora hay que agregar NuevaCadenaPDF al response de la p�gina:


>> >>
>> >> Response.Clear();
>> >> Response.ClearHeaders();
>> >> Response.Buffer = true;
>> >> Response.ContentType = "application/pdf";
>> >> string filename = "Mi.pdf";
>> >> Response.AddHeader("content-disposition", "inline; filename=" + filename);
>> >> Response.Write(NuevaCadenaPDF);
>> >> Response.Flush();
>> >> Response.End();
>> >>
>> >>
>> >>
>> >>
>> >> Juan T. Llibre, asp.net MVP
>> >> � Estas probando VS 2010 y ASP.NET 4.0 ?

>> >> Reg�strate (gratis) en los Foros de VS 2010 y ASP.NET 4.0, en espa�ol


>> >> http://asp.net.do/foros/forums/
>> >> =====================================================
>> >>
>> >> "Javi" <Ja...@discussions.microsoft.com> wrote in message
>> >> news:EC9CD412-0804-4C54...@microsoft.com...
>> >> >
>> >> > Hola
>> >> >

>> >> > Tengo un problema que a�n no he conseguido solucionar. He escrito alg�n
>> >> > comentario respecto a este problema pero no encuentro la soluci�n.
>> >> >

>> >> > A trav�s de un servicio web recibo lo siguiente:


>> >> >
>> >> > <xs:element name="archivo_adjunto" type="xs:base64Binary" />
>> >> >
>> >> > Creo todos los objetos y referencias necesarios para conectar al servicio
>> >> > web, lo consumo y recibo la respuesta. Con esta respuesta tengo el documento.
>> >> >
>> >> > respuesta.write (respuesta.archivo_adjunto)
>> >> >
>> >> > Sale por pantalla: System.Byte[]
>> >> >

>> >> > Originalmente el documento pdf est� codificado en Base64, ahora, con el

Javi

unread,
Aug 4, 2009, 2:35:01 AM8/4/09
to

Muchas gracias por su ayuda,

Hago lo que usted. Si quito el html, body... sale sigue saliendo el error de
""El archivo no empieza por '%PDF-'. Si comento la línea no aparece el error
pero aparecen por pantalla un montón de caracteres chinos japoneses o lo que
sea:

㘦⍷歍猼渷笵⵵㥽❣㑜㑃䩅㍮籍呆⩗䅟❟愩坕䅰潘屒㱋噻䑅㙶䄢お乗晾屹摙瑴䜸繛給嵎幣嵈佤瑀朵⨩睉瘲啶ㅃ╣奷晡晪ど健㉖湐稵㘡睷帳敳䡇佡㍫圩幷╠噆塄眹慂幼ⵆ噬捚恇㴦湞弤紤畀㉌摀㠾笵尻奷⅔㩺汁⨮楤♊ⅴ慅批稨⅓慳┦礿捧


No se que hacer, no veo luz en este tunel.

Muchas gracias, saludos,

"Juan T. Llibre" wrote:

> re:
> !> dice: "El archivo no empieza por '%PDF-'"
>
> Dos posibles soluciones...
>
> 1.

> Asegúrate de que en el archivo .aspx no haya tags de html.


> i.e., elimina <html>, <body>, etc.
>
> 2.

> Prueba comentando la línea :


>
> en c# :
>
> // Response.ContentType = "application/pdf"
>
> en vb.net :
>
> ' Response.ContentType = "application/pdf"
>
>
>
>
> Juan T. Llibre, asp.net MVP
> ¿ Estas probando VS 2010 y ASP.NET 4.0 ?

> Regístrate (gratis) en los Foros de VS 2010 y ASP.NET 4.0, en español


> http://asp.net.do/foros/forums/
> =====================================================
> "Javi" <Ja...@discussions.microsoft.com> wrote in message news:F818CFBA-8C1B-491D...@microsoft.com...
> >
> > Muchas gracias Juan,
> >
> > He puesto esto:
> >
> > Dim encoding As System.Text.UnicodeEncoding = New System.Text.UnicodeEncoding
> >
> > Dim NuevaCadenaPDF As String = encoding.GetString(documento.documento_adjunto)
> >
> > y al ejecutar no da error, pero al intentar mostrar el pdf sale ventana de
> > adobe acrobat que dice: "El archivo no empieza por '%PDF-'"
> >

> > estoy empezando a pensar que igual el documento en base 64 que me están
> > pasando no está bien.


> >
> > muchas gracias, saludos,
> >
> > "Juan T. Llibre" wrote:
> >
> >> No estoy seguro, pero creo que no tienes que convertir a String.
> >> Base64 encoding es, por naturaleza, un String.
> >>

> >> Si fuera un documento PDF, solo tendrías que hacer la segunda parte,


> >> es decir, solo leer el stream, darle nombre y guardar o desplegar el archivo.
> >>
> >>
> >>
> >> Juan T. Llibre, asp.net MVP
> >> ¿ Estas probando VS 2010 y ASP.NET 4.0 ?

> >> Regístrate (gratis) en los Foros de VS 2010 y ASP.NET 4.0, en español


> >> http://asp.net.do/foros/forums/
> >> =====================================================
> >> "Javi" <Ja...@discussions.microsoft.com> wrote in message news:855EBD22-28E7-4649...@microsoft.com...
> >> >
> >> > Muchas gracias Juan por sui ayuda,
> >> >

> >> > Estoy poniendo lo que usted me indica, transformándolo a vb.net es decir:


> >> >
> >> > Dim TuCadenaPDF As String =
> >> > Convert.ToString(respuesta.documento_adjunto)
> >> > Dim B As Byte() = Convert.FromBase64String(TuCadenaPDF)
> >> > Dim encoding As System.Text.UnicodeEncoding = New
> >> > System.Text.UnicodeEncoding
> >> > Dim NuevaCadenaPDF As String = encoding.GetString(B)
> >> >
> >> > Response.Clear()
> >> > Response.ClearHeaders()
> >> > Response.Buffer = True
> >> > Response.ContentType = "application/pdf"
> >> > Dim filename As String = "Mi.pdf"
> >> > Response.AddHeader("content-disposition", "inline; filename=" +
> >> > filename)
> >> > Response.Write(NuevaCadenaPDF)
> >> > Response.Flush()
> >> > Response.End()
> >> >
> >> >

> >> > Al ejecutar la página sale el siguiente error:
> >> >
> >> > Detalles de la excepción: System.FormatException: Carácter no válido en una
> >> > cadena Base-64.

> >> > Línea 76: Dim B As Byte() = Convert.FromBase64String(TuCadenaPDF)


> >> >
> >> > respuesta.documento_adjunto devuelve el documento pdf en stringbase64
> >> > (byte()) por eso en la primera linea lo convierto a string para almacenarlo
> >> > en TuCadenaPDF.
> >> >
> >> > Estoy haciendo algo mal?
> >> >
> >> > Muchas gracias por ayuda.
> >> >
> >> > Saludos,
> >> >
> >> > "Juan T. Llibre" wrote:
> >> >
> >> >> Creo que con Convert.FromBase64String() resuelves.
> >> >>
> >> >> Esto convierte la cadena Base 64 a Unicode :
> >> >>
> >> >> string TuCadenaPDF = 'incluye la cadena que recibes aqui';
> >> >> byte[] B = Convert.FromBase64String(TuCadenaPDF);
> >> >> System.Text.UnicodeEncoding encoding = new System.Text.UnicodeEncoding();
> >> >> string NuevaCadenaPDF = encoding.GetString(B);
> >> >>

> >> >> Ahora hay que agregar NuevaCadenaPDF al response de la página:


> >> >>
> >> >> Response.Clear();
> >> >> Response.ClearHeaders();
> >> >> Response.Buffer = true;
> >> >> Response.ContentType = "application/pdf";
> >> >> string filename = "Mi.pdf";
> >> >> Response.AddHeader("content-disposition", "inline; filename=" + filename);
> >> >> Response.Write(NuevaCadenaPDF);
> >> >> Response.Flush();
> >> >> Response.End();
> >> >>
> >> >>
> >> >>
> >> >>
> >> >> Juan T. Llibre, asp.net MVP
> >> >> ¿ Estas probando VS 2010 y ASP.NET 4.0 ?

> >> >> Regístrate (gratis) en los Foros de VS 2010 y ASP.NET 4.0, en español


> >> >> http://asp.net.do/foros/forums/
> >> >> =====================================================
> >> >>
> >> >> "Javi" <Ja...@discussions.microsoft.com> wrote in message
> >> >> news:EC9CD412-0804-4C54...@microsoft.com...
> >> >> >
> >> >> > Hola
> >> >> >

> >> >> > Tengo un problema que aún no he conseguido solucionar. He escrito algún
> >> >> > comentario respecto a este problema pero no encuentro la solución.
> >> >> >
> >> >> > A través de un servicio web recibo lo siguiente:


> >> >> >
> >> >> > <xs:element name="archivo_adjunto" type="xs:base64Binary" />
> >> >> >
> >> >> > Creo todos los objetos y referencias necesarios para conectar al servicio
> >> >> > web, lo consumo y recibo la respuesta. Con esta respuesta tengo el documento.
> >> >> >
> >> >> > respuesta.write (respuesta.archivo_adjunto)
> >> >> >
> >> >> > Sale por pantalla: System.Byte[]
> >> >> >

> >> >> > Originalmente el documento pdf está codificado en Base64, ahora, con el

Javi

unread,
Aug 4, 2009, 8:35:02 AM8/4/09
to

Hola Juan,

Muchas gracias por toda su ayuda. He conseguido que funcione, el problema
estaba en que no se estaba recibiendo de forma correcta el PDF.

Muchas gracias por todo.

Saludos

"Juan T. Llibre" wrote:

> re:
> !> dice: "El archivo no empieza por '%PDF-'"
>
> Dos posibles soluciones...
>
> 1.

> Asegúrate de que en el archivo .aspx no haya tags de html.


> i.e., elimina <html>, <body>, etc.
>
> 2.

> Prueba comentando la línea :


>
> en c# :
>
> // Response.ContentType = "application/pdf"
>
> en vb.net :
>
> ' Response.ContentType = "application/pdf"
>
>
>
>
> Juan T. Llibre, asp.net MVP
> ¿ Estas probando VS 2010 y ASP.NET 4.0 ?

> Regístrate (gratis) en los Foros de VS 2010 y ASP.NET 4.0, en español


> http://asp.net.do/foros/forums/
> =====================================================
> "Javi" <Ja...@discussions.microsoft.com> wrote in message news:F818CFBA-8C1B-491D...@microsoft.com...
> >
> > Muchas gracias Juan,
> >
> > He puesto esto:
> >
> > Dim encoding As System.Text.UnicodeEncoding = New System.Text.UnicodeEncoding
> >
> > Dim NuevaCadenaPDF As String = encoding.GetString(documento.documento_adjunto)
> >
> > y al ejecutar no da error, pero al intentar mostrar el pdf sale ventana de
> > adobe acrobat que dice: "El archivo no empieza por '%PDF-'"
> >

> > estoy empezando a pensar que igual el documento en base 64 que me están
> > pasando no está bien.


> >
> > muchas gracias, saludos,
> >
> > "Juan T. Llibre" wrote:
> >
> >> No estoy seguro, pero creo que no tienes que convertir a String.
> >> Base64 encoding es, por naturaleza, un String.
> >>

> >> Si fuera un documento PDF, solo tendrías que hacer la segunda parte,


> >> es decir, solo leer el stream, darle nombre y guardar o desplegar el archivo.
> >>
> >>
> >>
> >> Juan T. Llibre, asp.net MVP
> >> ¿ Estas probando VS 2010 y ASP.NET 4.0 ?

> >> Regístrate (gratis) en los Foros de VS 2010 y ASP.NET 4.0, en español


> >> http://asp.net.do/foros/forums/
> >> =====================================================
> >> "Javi" <Ja...@discussions.microsoft.com> wrote in message news:855EBD22-28E7-4649...@microsoft.com...
> >> >
> >> > Muchas gracias Juan por sui ayuda,
> >> >

> >> > Estoy poniendo lo que usted me indica, transformándolo a vb.net es decir:


> >> >
> >> > Dim TuCadenaPDF As String =
> >> > Convert.ToString(respuesta.documento_adjunto)
> >> > Dim B As Byte() = Convert.FromBase64String(TuCadenaPDF)
> >> > Dim encoding As System.Text.UnicodeEncoding = New
> >> > System.Text.UnicodeEncoding
> >> > Dim NuevaCadenaPDF As String = encoding.GetString(B)
> >> >
> >> > Response.Clear()
> >> > Response.ClearHeaders()
> >> > Response.Buffer = True
> >> > Response.ContentType = "application/pdf"
> >> > Dim filename As String = "Mi.pdf"
> >> > Response.AddHeader("content-disposition", "inline; filename=" +
> >> > filename)
> >> > Response.Write(NuevaCadenaPDF)
> >> > Response.Flush()
> >> > Response.End()
> >> >
> >> >

> >> > Al ejecutar la página sale el siguiente error:
> >> >
> >> > Detalles de la excepción: System.FormatException: Carácter no válido en una
> >> > cadena Base-64.

> >> > Línea 76: Dim B As Byte() = Convert.FromBase64String(TuCadenaPDF)


> >> >
> >> > respuesta.documento_adjunto devuelve el documento pdf en stringbase64
> >> > (byte()) por eso en la primera linea lo convierto a string para almacenarlo
> >> > en TuCadenaPDF.
> >> >
> >> > Estoy haciendo algo mal?
> >> >
> >> > Muchas gracias por ayuda.
> >> >
> >> > Saludos,
> >> >
> >> > "Juan T. Llibre" wrote:
> >> >
> >> >> Creo que con Convert.FromBase64String() resuelves.
> >> >>
> >> >> Esto convierte la cadena Base 64 a Unicode :
> >> >>
> >> >> string TuCadenaPDF = 'incluye la cadena que recibes aqui';
> >> >> byte[] B = Convert.FromBase64String(TuCadenaPDF);
> >> >> System.Text.UnicodeEncoding encoding = new System.Text.UnicodeEncoding();
> >> >> string NuevaCadenaPDF = encoding.GetString(B);
> >> >>

> >> >> Ahora hay que agregar NuevaCadenaPDF al response de la página:


> >> >>
> >> >> Response.Clear();
> >> >> Response.ClearHeaders();
> >> >> Response.Buffer = true;
> >> >> Response.ContentType = "application/pdf";
> >> >> string filename = "Mi.pdf";
> >> >> Response.AddHeader("content-disposition", "inline; filename=" + filename);
> >> >> Response.Write(NuevaCadenaPDF);
> >> >> Response.Flush();
> >> >> Response.End();
> >> >>
> >> >>
> >> >>
> >> >>
> >> >> Juan T. Llibre, asp.net MVP
> >> >> ¿ Estas probando VS 2010 y ASP.NET 4.0 ?

> >> >> Regístrate (gratis) en los Foros de VS 2010 y ASP.NET 4.0, en español


> >> >> http://asp.net.do/foros/forums/
> >> >> =====================================================
> >> >>
> >> >> "Javi" <Ja...@discussions.microsoft.com> wrote in message
> >> >> news:EC9CD412-0804-4C54...@microsoft.com...
> >> >> >
> >> >> > Hola
> >> >> >

> >> >> > Tengo un problema que aún no he conseguido solucionar. He escrito algún
> >> >> > comentario respecto a este problema pero no encuentro la solución.
> >> >> >
> >> >> > A través de un servicio web recibo lo siguiente:


> >> >> >
> >> >> > <xs:element name="archivo_adjunto" type="xs:base64Binary" />
> >> >> >
> >> >> > Creo todos los objetos y referencias necesarios para conectar al servicio
> >> >> > web, lo consumo y recibo la respuesta. Con esta respuesta tengo el documento.
> >> >> >
> >> >> > respuesta.write (respuesta.archivo_adjunto)
> >> >> >
> >> >> > Sale por pantalla: System.Byte[]
> >> >> >

> >> >> > Originalmente el documento pdf está codificado en Base64, ahora, con el

Luz Dary Ferreira

unread,
Dec 2, 2010, 11:59:14 AM12/2/10
to
Hola

A mi me est? pasando que me salen tambi?n los caracteres especiales... que hiciste para cuadrarlo?, quisiera generar el archivo .pdf y mostrarlo en pantalla.

> On Monday, August 03, 2009 5:30 AM Javi wrote:

> Hola
>
> Tengo un problema que a??n no he conseguido solucionar. He escrito alg??n
> comentario respecto a este problema pero no encuentro la soluci??n.
>
> A trav??s de un servicio web recibo lo siguiente:


>
> <xs:element name="archivo_adjunto" type="xs:base64Binary" />
>
> Creo todos los objetos y referencias necesarios para conectar al servicio
> web, lo consumo y recibo la respuesta. Con esta respuesta tengo el documento.
>
> respuesta.write (respuesta.archivo_adjunto)
>
> Sale por pantalla: System.Byte[]
>

> Originalmente el documento pdf est?? codificado en Base64, ahora, con el


> servicio web lo puedo obtener y tengo que hacer lo contrario, decodificarlo
> para obtener el pdf.
>
> Me puede ayudar?,
>
> Muchas gracias


>> On Monday, August 03, 2009 7:52 AM Juan T. Llibre wrote:

>> Creo que con Convert.FromBase64String() resuelves.
>>
>> Esto convierte la cadena Base 64 a Unicode :
>>
>> string TuCadenaPDF = 'incluye la cadena que recibes aqui';
>> byte[] B = Convert.FromBase64String(TuCadenaPDF);
>> System.Text.UnicodeEncoding encoding = new System.Text.UnicodeEncoding();
>> string NuevaCadenaPDF = encoding.GetString(B);
>>

>> Ahora hay que agregar NuevaCadenaPDF al response de la p?gina:


>>
>> Response.Clear();
>> Response.ClearHeaders();
>> Response.Buffer = true;
>> Response.ContentType = "application/pdf";
>> string filename = "Mi.pdf";
>> Response.AddHeader("content-disposition", "inline; filename=" + filename);
>> Response.Write(NuevaCadenaPDF);
>> Response.Flush();
>> Response.End();
>>
>>
>>
>>
>> Juan T. Llibre, asp.net MVP

>> ? Estas probando VS 2010 y ASP.NET 4.0 ?
>> Reg?strate (gratis) en los Foros de VS 2010 y ASP.NET 4.0, en espa?ol
>> http://asp.net.do/foros/forums/
>> =====================================================


>>> On Monday, August 03, 2009 8:14 AM Javi wrote:

>>> Muchas gracias Juan por sui ayuda,
>>>

>>> Estoy poniendo lo que usted me indica, transform??ndolo a vb.net es decir:


>>>
>>> Dim TuCadenaPDF As String =
>>> Convert.ToString(respuesta.documento_adjunto)
>>> Dim B As Byte() = Convert.FromBase64String(TuCadenaPDF)
>>> Dim encoding As System.Text.UnicodeEncoding = New
>>> System.Text.UnicodeEncoding
>>> Dim NuevaCadenaPDF As String = encoding.GetString(B)
>>>
>>> Response.Clear()
>>> Response.ClearHeaders()
>>> Response.Buffer = True
>>> Response.ContentType = "application/pdf"
>>> Dim filename As String = "Mi.pdf"
>>> Response.AddHeader("content-disposition", "inline; filename=" +
>>> filename)
>>> Response.Write(NuevaCadenaPDF)
>>> Response.Flush()
>>> Response.End()
>>>
>>>

>>> Al ejecutar la p??gina sale el siguiente error:
>>>
>>> Detalles de la excepci??n: System.FormatException: Car??cter no v??lido en una
>>> cadena Base-64.
>>> L??nea 76: Dim B As Byte() = Convert.FromBase64String(TuCadenaPDF)


>>>
>>> respuesta.documento_adjunto devuelve el documento pdf en stringbase64
>>> (byte()) por eso en la primera linea lo convierto a string para almacenarlo
>>> en TuCadenaPDF.
>>>
>>> Estoy haciendo algo mal?
>>>
>>> Muchas gracias por ayuda.
>>>
>>> Saludos,
>>>
>>> "Juan T. Llibre" wrote:


>>>> On Monday, August 03, 2009 12:05 PM Juan T. Llibre wrote:

>>>> No estoy seguro, pero creo que no tienes que convertir a String.
>>>> Base64 encoding es, por naturaleza, un String.
>>>>

>>>> Si fuera un documento PDF, solo tendr?as que hacer la segunda parte,


>>>> es decir, solo leer el stream, darle nombre y guardar o desplegar el archivo.
>>>>
>>>>
>>>>
>>>> Juan T. Llibre, asp.net MVP

>>>> ? Estas probando VS 2010 y ASP.NET 4.0 ?
>>>> Reg?strate (gratis) en los Foros de VS 2010 y ASP.NET 4.0, en espa?ol
>>>> http://asp.net.do/foros/forums/
>>>> =====================================================


>>>>> On Monday, August 03, 2009 12:24 PM Javi wrote:

>>>>> Muchas gracias Juan,
>>>>>
>>>>> He puesto esto:
>>>>>
>>>>> Dim encoding As System.Text.UnicodeEncoding = New System.Text.UnicodeEncoding
>>>>>
>>>>> Dim NuevaCadenaPDF As String = encoding.GetString(documento.documento_adjunto)
>>>>>
>>>>> y al ejecutar no da error, pero al intentar mostrar el pdf sale ventana de
>>>>> adobe acrobat que dice: "El archivo no empieza por '%PDF-'"
>>>>>

>>>>> estoy empezando a pensar que igual el documento en base 64 que me est??n
>>>>> pasando no est?? bien.


>>>>>
>>>>> muchas gracias, saludos,
>>>>>
>>>>> "Juan T. Llibre" wrote:


>>>>>> On Monday, August 03, 2009 3:59 PM Juan T. Llibre wrote:

>>>>>> re:
>>>>>> !> dice: "El archivo no empieza por '%PDF-'"
>>>>>>
>>>>>> Dos posibles soluciones...
>>>>>>
>>>>>> 1.

>>>>>> Aseg?rate de que en el archivo .aspx no haya tags de html.


>>>>>> i.e., elimina <html>, <body>, etc.
>>>>>>
>>>>>> 2.

>>>>>> Prueba comentando la l?nea :


>>>>>>
>>>>>> en c# :
>>>>>>
>>>>>> // Response.ContentType = "application/pdf"
>>>>>>
>>>>>> en vb.net :
>>>>>>
>>>>>> ' Response.ContentType = "application/pdf"
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> Juan T. Llibre, asp.net MVP

>>>>>> ? Estas probando VS 2010 y ASP.NET 4.0 ?
>>>>>> Reg?strate (gratis) en los Foros de VS 2010 y ASP.NET 4.0, en espa?ol
>>>>>> http://asp.net.do/foros/forums/
>>>>>> =====================================================


>>>>>>> On Tuesday, August 04, 2009 2:35 AM Javi wrote:

>>>>>>> Muchas gracias por su ayuda,
>>>>>>>
>>>>>>> Hago lo que usted. Si quito el html, body... sale sigue saliendo el error de

>>>>>>> ""El archivo no empieza por '%PDF-'. Si comento la l??nea no aparece el error
>>>>>>> pero aparecen por pantalla un mont??n de caracteres chinos japoneses o lo que
>>>>>>> sea:
>>>>>>>
>>>>>>> ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????


>>>>>>>
>>>>>>>
>>>>>>> No se que hacer, no veo luz en este tunel.
>>>>>>>

>>>>>>> Muchas gracias, saludos,
>>>>>>>
>>>>>>> "Juan T. Llibre" wrote:


>>>>>>>> On Tuesday, August 04, 2009 8:35 AM Javi wrote:

>>>>>>>> Hola Juan,
>>>>>>>>
>>>>>>>> Muchas gracias por toda su ayuda. He conseguido que funcione, el problema
>>>>>>>> estaba en que no se estaba recibiendo de forma correcta el PDF.
>>>>>>>>
>>>>>>>> Muchas gracias por todo.
>>>>>>>>
>>>>>>>> Saludos
>>>>>>>>
>>>>>>>> "Juan T. Llibre" wrote:


>>>>>>>> Submitted via EggHeadCafe
>>>>>>>> Microsoft ASP.NET For Beginners
>>>>>>>> http://www.eggheadcafe.com/training-topic-area/ASP-NET/7/ASP.aspx

tope22.j...@gmail.com

unread,
Jun 16, 2014, 6:22:12 AM6/16/14
to
HOLA javi, no se si puedes ayudarnos con el tema del pdf, tenemos el mismo problema.

saludos y gracias
Hola
0 new messages