moral_2011 Ответов: 3

Преобразование массива байтов в pdf на языке c#


Дорогие Все,


Мне нужна некоторая помощь в преобразовании массива байтов, "который пришел из базы данных", в pdf-файл. Может ли кто-нибудь привести мне пример того, как это делается в C#? Вот что у меня есть до сих пор,

using System.IO;

string sFile = "c:\testpdf.pdf"; //Path
FileStream fs = File.Create(sFile);
BinaryWriter bw = new BinaryWriter(fs); 



И я использовал это для преобразования Pdf - файла в байтовый массив:

FileUpload1.SaveAs(filePathName);
byte[] picArray= System.IO.File.ReadAllBytes(filePathName);


заранее спасибо,

[no name]

Если вы используете компонент Pdf (http://pdfapi.codeplex.com/), вы можете просто загрузить байтовый массив в объект PdfDocument и сохранить его в виде Pdf-файла.

Документы PDF док = новый документы PDF();
док.LoadFromBytes(объект ByteArray);
док.SaveToFile("на выходе.формат PDF");

3 Ответов

Рейтинг:
28

OriginalGriff

Вы, кажется, пытаетесь записать байт arry из базы данных в файл: почему это вызывает у вас проблемы? Если у вас есть байты, просто напишите их:

File.WriteAllBytes(@"C:\testpdf.pdf", myArrayOfBytes);
(Вы должны знать, что это, скорее всего, не удастся - проблемы с разрешениями часто препятствуют записи в корневой каталог жесткого диска - попробуйте вместо этого использовать подкаталог)


moral_2011

Спасибо теперь он работает со мной

Member 12546186

спасибо братан

Deepak_Das

Есть ли способ, чтобы передать URL-адрес сервера в writeAllBytes способ
например http://localhost:17813/QuadraSuiteWeb/PROPAttachments/PropertyBill.pdf-да. Потому что, когда я пытаюсь добавить этот url, появляется исключение "форматы URI не поддерживаются."

String _ReportPath = "Reports/PropertyManagement/PROPBillGeneration.rdlc";
PDFReportGenerator _PDFReportGenerator = новый PDFReportGenerator(_ReportPath, "PROPBillReportDTO", P. PROPBillReportDTOList, Param);
var FileContent = _PDFReportGenerator.getReportBytes();

if (FileContent.Длина > 0)
{
ReportDTO.PROPBillID = P. PROPBillID;
DefaultResponseDTO _DefaultResponseDTO = serviceUtil.GetServiceProxy<ipropbillgenerationservice>().GenerateBillAndSendMail(ReportDTO, FileContent);
строка url = HttpContext.Current.Запрос.URL-адрес.AbsoluteUri.Заменить(Свойство HttpContext.Тока.Запрос.URL-адрес.AbsolutePath, "");
строка siteFolder = "/" + HttpContext.Current.Запрос.FilePath.Split('/')[1];
URL-адрес = URL-адрес.Сплит('?')[0] + siteFolder + @"/PROPAttachments/PropertyBill.формат PDF";
URL-адрес = URL-адрес.Заменить("~", "");
URL-адрес = URL-адрес.Заменить("//", "/");
URL-адрес = URL-адрес.Вставить(5, "/");
System.IO.File.WriteAllBytes(url, FileContent);
}

Рейтинг:
1

Kiran Sonawane

Response.Clear(); 
MemoryStream ms = new MemoryStream(pdfBytearray); 
Response.ContentType = "application/pdf"; 
Response.AddHeader("content-disposition", "attachment;filename=labtest.pdf"); 
Response.Buffer = true; 
ms.WriteTo(Response.OutputStream); 
Response.End(); 


Рейтинг:
1

arindamrudra

Если это массив байтов, вы можете записать его на диск, чтобы он был сохранен в виде файла *pdf.
или
либо вы можете записать байты в выходной поток ответа, и пользователю будет предложено загрузить и сохранить файл.

Response.Clear();
Response.ContentType = "application/pdf";
Response.AppendHeader("Content-Disposition", "inline;filename=data.pdf");
Response.BufferOutput = true;
byte[] pdf;
Response.AddHeader("Content-Length", response.Length.ToString());
Response.BinaryWrite(pdf);
Response.End();


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

http://social.msdn.microsoft.com/Forums/en-US/csharplanguage/thread/6810a67f-66d9-4ce4-87e5-06dbbb754730/[^]

Надеюсь, это вам поможет.