【发布时间】:2011-09-06 02:33:46
【问题描述】:
我有 Stream 对象,其中包含我想在 PDF 文档中显示的数据。
如何从该 Stream 对象创建和保存 PDF 文档? (Stream 对象是使用 MigraDoc 工具创建的)
【问题讨论】:
标签: c# stream io filestream
我有 Stream 对象,其中包含我想在 PDF 文档中显示的数据。
如何从该 Stream 对象创建和保存 PDF 文档? (Stream 对象是使用 MigraDoc 工具创建的)
【问题讨论】:
标签: c# stream io filestream
我想你可能会感到困惑。 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();
【讨论】: