Я думаю, вы можете быть смущены. 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();