Создать документ PDF из объекта System.IO.Stream? - PullRequest
0 голосов
/ 01 июня 2011

У меня есть объект Stream, который содержит данные, которые я хочу показать в документе PDF.

Как создать и сохранить документ PDF из этого объекта Stream?(Объект Stream создается с помощью инструмента MigraDoc)

1 Ответ

4 голосов
/ 01 июня 2011

Я думаю, вы можете быть смущены. MigraDoc создает документы в формате PDF. Поэтому, если у вас есть поток из MigraDoc (который исходит из его объекта PdfDocument), я бы предположил, что сохранение потока на диск как «document.pdf» будет лучшим вариантом.

См. Ответ Джона Скитса на это здесь:

Как сохранить поток в файл в C #?

Помните, что поток - это просто двоичные данные. Поэтому, когда вы хотите прочитать и записать эти данные, вы используете System.IO для чтения или записи потока в какое-то место, будь то диск, память или сетевая передача.

Я бы взглянул на образцы MigraDoc для получения дополнительной информации:

http://www.pdfsharp.net/wiki/MigraDocSamples.ashx

если вы записываете это в вывод HTTP, я бы сделал следующее:

byte[] buffer = new byte[8192];

pdfStream.Seek(0, SeekOrigin.Begin);

Response.ClearContent();
Response.ClearHeaders();
Response.BufferOutput = true;
Response.ContentType = "application/pdf";

int bytesRead = pdfStream.Read(buffer, 0, 8192);
while(bytesRead > 0)
{
byte[] buffer2 = new byte[bytesRead];
System.Buffer.BlockCopy(buffer, 0, buffer2, 0, bytesRead);

Response.BinaryWrite(buffer2);
Response.Flush();

bytesRead = pdfStream.Read(buffer, 0, 8192);
}
Response.End();
...