2009-10-26 11 views
7

tengo los datos en bruto de base64Binary.convertir a pdf base64Binary

string base64BinaryStr = "J9JbWFnZ......" 

¿Cómo puedo hacer un archivo pdf? Sé que necesita alguna conversión. Por favor, ayúdame.

+0

¿Qué idioma estás usando? –

+0

¿Los datos brutos se grafican o trazan, o se muestran en una tabla, o simplemente se colocan en el pdf como datos brutos? –

+0

C# se usa como lenguaje en desarrollo. –

Respuesta

2

Todo lo que necesita hacer es correr a través de cualquier decodificador de base 64 que se llevará a sus datos como una cadena y pasar de nuevo a una matriz de bytes. Luego, simplemente escriba ese archivo con el pdf en el nombre del archivo. O, si se está transmitiendo esto a un navegador, simple escribir los bytes en el flujo de salida, marcando el tipo MIME adecuado en las cabeceras.

La mayoría de los idiomas, ya sea han construido en los métodos para el convertida a/de base 64. O un simple Google con su idioma específico devolverá numerosas implementaciones que puede usar. El proceso de ida y vuelta a Base64 es bastante sencillo y puede ser implementado incluso por desarrolladores novatos.

18

Paso 1 es la conversión de la cadena de base 64 a una matriz de bytes:

byte[] bytes = Convert.FromBase64String(base64BinaryStr); 

Paso 2 es el ahorro de la matriz de bytes en el disco:

System.IO.FileStream stream = 
    new FileStream(@"C:\file.pdf", FileMode.CreateNew); 
System.IO.BinaryWriter writer = 
    new BinaryWriter(stream); 
writer.Write(bytes, 0, bytes.Length); 
writer.Close(); 
+0

Longitud no válida para una matriz de caracteres Base-64. en setp 1 –

+0

@novicedeveloper: eso generalmente significa que hay algunos caracteres extraños en su cadena que la convierten en una cadena Base-64 inválida. ¿Tiene dos comillas dobles ('" "') al final de la cadena? – MusiGenesis

+0

¿O está pasando esta cadena a una página ASP.Net en la cadena de consulta? – MusiGenesis

11
using (FileStream stream = System.IO.File.Create("c:\\file.pdf")) 
{ 
    byte[] byteArray = Convert.FromBase64String(base64BinaryStr); 
    stream.Write(byteArray, 0, byteArray.Length); 
} 
2

base64BinaryStr - del mensaje de servicio web de SOAP

byte[] bytes = Convert.FromBase64String(base64BinaryStr); 
0

Sé que este problema deja atrás a waaaay. Pero tal vez pueda ayudar a alguien con este código.

yo ni siquiera tengo que escribir cualquier archivo en el disco duro. ;-)

Response.AddHeader("Content-Type", "application/pdf"); 
Response.AddHeader("Content-Length", base64Result.Length.ToString()); 
Response.AddHeader("Content-Disposition", "inline;"); 
Response.AddHeader("Cache-Control", "private, max-age=0, must-revalidate"); 
Response.AddHeader("Pragma", "public"); 
Response.BinaryWrite(Convert.FromBase64String(base64Result)); 

Nota: la variable 'base64Result' contiene la base 64 cuerdas: "JVBERi0xLjMgCiXi48/TIAoxI ..."

feliz Codificación! ;-)

+0

ATENCIÓN: tuvimos que eliminar esta línea en nuestro código: 'código' Response.AddHeader (" Content-Length ", base64Result.Length.ToString()); 'código' Porque algunos navegadores no podían descargar todo el archivo. Después de borrar la cantidad de Byte, todo funcionó bien. Deje que los navegadores hagan el cálculo del tamaño de byte por sí mismo. ;-) –

0

Primera convertir la cadena Bas64 a byte [] y escribirlo en un archivo.

byte[] bytes = Convert.FromBase64String(base64BinaryStr); 
File.WriteAllBytes(@"FolderPath\pdfFileName.pdf", bytes);