我有Stream对象,其中包含我想在PDF文档中显示的数据。
如何从Stream对象创建和保存PDF文档? (Stream对象是使用MigraDoc工具创建的)
答案 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();