2009-10-26 2 views
7

У меня есть исходные данные base64Binary.конвертировать base64Binary в pdf

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

Как я могу сделать pdf-файл? Я знаю, что это требует некоторой конверсии. Пожалуйста, помогите мне.

+0

Какой язык вы используете? –

+0

Являются ли необработанные данные графическими или графическими, или отображаются в таблице, или просто вставлять PDF в качестве необработанных данных? –

+0

C# используется как развивающийся язык. –

ответ

2

Все, что вам нужно сделать, это запустить его через любой декодер Base64, который возьмет ваши данные в виде строки и передаст массив байтов. Затем просто напишите этот файл с pdf в имени файла. Или, если вы передаете это обратно в браузер, просто напишите байты в выходной поток, отметив соответствующий тип mime в заголовках.

Большинство языков либо построили методы для преобразования в/из Base64. Или простой Google с вашим конкретным языком вернет многочисленные реализации, которые вы можете использовать. Процесс перехода туда и обратно на Base64 довольно прост и может быть реализован даже начинающими разработчиками.

18

Шаг 1 является преобразование вашей base64 строки в массив байтов:

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

Шаг 2 сохраняет массив байтов на диске:

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

Недопустимая длина для массива символов Base-64. в setp 1 –

+0

@novicedeveloper: это обычно означает, что в вашей строке есть какой-то странный символ (ы), который делает его недопустимой строкой Base-64. У вас есть две двойные кавычки ('' '') в конце строки? – MusiGenesis

+0

Или эта строка передается на страницу ASP.Net в querystring? – 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 - от веб-сервиса SOAP сообщения

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

Я знаю, что эта проблема задерживается. Но, возможно, я могу помочь кому-то с этим кодом.

Мне даже не пришлось записывать файлы на жесткий диск. ;-)

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)); 

Примечание: переменная 'base64Result' содержит Base64-String: "JVBERi0xLjMgCiXi48/TIAoxI ..."

Днем Coding! ;-)

+0

ВНИМАНИЕ: мы должны были удалить эту строку в нашем коде: «код» Response.AddHeader («Content-Length», base64Result.Length.ToString()); 'code' Поскольку некоторые браузеры не смогли загрузить весь файл. После того, как мы стерли количество байт, все работало нормально. Позвольте браузерам самостоятельно выполнить расчет размера байта! ;-) –

0

Сначала преобразуйте строку Bas64 в байт [] и запишите ее в файл.

byte[] bytes = Convert.FromBase64String(base64BinaryStr); 
File.WriteAllBytes(@"FolderPath\pdfFileName.pdf", bytes); 
Смежные вопросы