【发布时间】: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