【问题标题】:Save PDF document to the Response.OutputStream using PDFsharp使用 PDFsharp 将 PDF 文档保存到 Response.OutputStream
【发布时间】:2017-05-29 17:27:29
【问题描述】:

我正在尝试将源文件的副本直接保存到响应输出流中。但是,由于此代码,浏览器窗口具有深色背景。不使用 MemoryStream 怎么办?

public static void CreateCollage(IEnumerable<Stamp> stamps, Stream input)
{

    using (PdfDocument outDoc = new PdfDocument())
        using (PdfDocument inputDoc = PdfReader.Open(input, PdfDocumentOpenMode.Import))
        {
            for (int i = 0; i < inputDoc.PageCount; i++)
            {
                var page = inputDoc.Pages[i];
                var pageOut = outDoc.AddPage(page);

                foreach (var stamp in stamps.Where(s => s.xyp.page == (i + 1)))
                    InsertData(pageOut, stamp, page.Width.Value, page.Height.Value);
            }
            outDoc.Save(context.Response.OutputStream, true);
        }
}

如果我使用 Save() 函数 - 我得到一个错误:

不支持指定的方法。

在 System.Web.HttpResponseStream.get_Position() 在 PdfSharp.Pdf.IO.PdfWriter.WriteFileHeader(PdfDocument 文档) 在 d:\Users\yudina\Desktop\pdfsharp\PDFsharp\src\PdfSharp\Pdf.IO\PdfWriter.cs:row 488

【问题讨论】:

  • 看来您必须创建一个MemoryStream,因为HttpResponseStream 不支持更改流中的位置。
  • 好的,谢谢大家。 :(太糟糕了..
  • 这就是你完全做到的方式stackoverflow.com/a/21763965/20651

标签: c# asp.net pdfsharp


【解决方案1】:

你没有打电话给outDoc.Close(),也没有任何东西写入你的OutputStream

【讨论】:

  • 那么,如果没有 MemoryStream,我就无法实现这一点?
  • 拨打Close()会发生什么?你试过了吗?您可以创建一个MemoryStream,但您仍然必须调用Close()Save(),否则不会将任何内容写入流。
猜你喜欢
  • 1970-01-01
  • 2016-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-08
  • 1970-01-01
相关资源
最近更新 更多