从System.IO.Stream对象创建pdf文档?

时间:2011-06-01 08:41:25

标签: c# stream io filestream

我有Stream对象,其中包含我想在PDF文档中显示的数据。

如何从Stream对象创建和保存PDF文档? (Stream对象是使用MigraDoc工具创建的)

1 个答案:

答案 0 :(得分:4)

我想你可能会感到困惑。 MigraDoc创建Pdf文档。因此,如果您有来自MigraDoc的流(来自它的PdfDocument对象),我猜想将流保存到磁盘,因为“document.pdf”将是最佳选择。

请参阅Jon Skeets在此回答:

How do I save a stream to a file in 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();