Discussion:
Transformar base64Bininary a archivo pdf
(demasiado antiguo para responder)
Javi
2009-08-03 09:30:01 UTC
Permalink
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
2009-08-03 11:52:57 UTC
Permalink
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/
=====================================================
Post by Javi
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.
<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
Javi
2009-08-03 12:14:02 UTC
Permalink
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,
Post by Juan T. Llibre
Creo que con Convert.FromBase64String() resuelves.
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);
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/
=====================================================
Post by Javi
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.
<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
2009-08-03 16:05:31 UTC
Permalink
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/
=====================================================
Post by Javi
Muchas gracias Juan por sui ayuda,
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()
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,
Post by Juan T. Llibre
Creo que con Convert.FromBase64String() resuelves.
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);
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/
=====================================================
Post by Javi
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.
<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
Javi
2009-08-03 16:24:01 UTC
Permalink
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,
Post by Juan T. Llibre
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/
=====================================================
Post by Javi
Muchas gracias Juan por sui ayuda,
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()
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,
Post by Juan T. Llibre
Creo que con Convert.FromBase64String() resuelves.
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);
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/
=====================================================
Post by Javi
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.
<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
2009-08-03 19:59:52 UTC
Permalink
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/
=====================================================
Post by Javi
Muchas gracias Juan,
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,
Post by Juan T. Llibre
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/
=====================================================
Post by Javi
Muchas gracias Juan por sui ayuda,
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()
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,
Post by Juan T. Llibre
Creo que con Convert.FromBase64String() resuelves.
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);
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/
=====================================================
Post by Javi
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.
<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
Javi
2009-08-04 06:35:01 UTC
Permalink
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,
Post by Juan T. Llibre
!> 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.
// Response.ContentType = "application/pdf"
' 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/
=====================================================
Post by Javi
Muchas gracias Juan,
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,
Post by Juan T. Llibre
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/
=====================================================
Post by Javi
Muchas gracias Juan por sui ayuda,
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()
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,
Post by Juan T. Llibre
Creo que con Convert.FromBase64String() resuelves.
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);
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/
=====================================================
Post by Javi
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.
<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
Javi
2009-08-04 12:35:02 UTC
Permalink
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
Post by Juan T. Llibre
!> 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.
// Response.ContentType = "application/pdf"
' 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/
=====================================================
Post by Javi
Muchas gracias Juan,
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,
Post by Juan T. Llibre
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/
=====================================================
Post by Javi
Muchas gracias Juan por sui ayuda,
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()
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,
Post by Juan T. Llibre
Creo que con Convert.FromBase64String() resuelves.
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);
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/
=====================================================
Post by Javi
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.
<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
Luz Dary Ferreira
2010-12-02 16:59:14 UTC
Permalink
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.
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.
<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
Post by Juan T. Llibre
Creo que con Convert.FromBase64String() resuelves.
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);
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/
=====================================================
Post by Javi
Muchas gracias Juan por sui ayuda,
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()
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,
Post by Juan T. Llibre
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/
=====================================================
Post by Javi
Muchas gracias Juan,
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,
Post by Juan T. Llibre
!> 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.
// Response.ContentType = "application/pdf"
' 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/
=====================================================
Post by Javi
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
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
No se que hacer, no veo luz en este tunel.
Muchas gracias, saludos,
Post by Javi
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
Submitted via EggHeadCafe
Microsoft ASP.NET For Beginners
http://www.eggheadcafe.com/training-topic-area/ASP-NET/7/ASP.aspx
t***@gmail.com
2014-06-16 10:22:12 UTC
Permalink
HOLA javi, no se si puedes ayudarnos con el tema del pdf, tenemos el mismo problema.

saludos y gracias
Post by Javi
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
Post by Juan T. Llibre
!> 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.
// Response.ContentType = "application/pdf"
' 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/
=====================================================
Post by Javi
Muchas gracias Juan,
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,
Post by Juan T. Llibre
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/
=====================================================
Post by Javi
Muchas gracias Juan por sui ayuda,
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()
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,
Post by Juan T. Llibre
Creo que con Convert.FromBase64String() resuelves.
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);
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/
=====================================================
Post by Javi
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.
<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
Hola

Loading...