【问题标题】:Create pdf document from System.IO.Stream object?从 System.IO.Stream 对象创建 pdf 文档?
【发布时间】:2011-09-06 02:33:46
【问题描述】:

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

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

【问题讨论】:

    标签: c# stream io filestream


    【解决方案1】:

    我想你可能会感到困惑。 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();
    

    【讨论】:

    • 我从 MicroDoc 创建了流,并将其保存到 DB,然后我检索它,然后我想根据用户请求将其保存为 PDF
    • 是网页请求还是程序接口请求?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-29
    相关资源
    最近更新 更多