将PDF流保存到文件夹中

时间:2014-02-07 10:54:23

标签: c# asp.net-mvc stream pdf-generation filestream

我正在创建一个Stream,我可以将其下载为PDF文件&也可以将其作为文件流返回PDF格式。

但我想将此流保存到PDF文件格式的文件夹中。

我正在使用一些代码来创建流为::

public void PrintInvoice(long ID)
        {

            ReportDocument rd = new ReportDocument();
            rd.Load(AppDomain.CurrentDomain.BaseDirectory+(@"\Reports\InvoiceDocument.rpt"));
            Stream stream = rd.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat);
            stream.Seek(0, SeekOrigin.Begin);
            return File(stream, "application/pdf", "TestCrystal.pdf");     
        }

如何将形成的流文件保存为PDF文件格式? 我想在客户端计算机上保存PDF文件。

1 个答案:

答案 0 :(得分:1)

在服务器上保存文件 -

using (MemoryStream ms = new MemoryStream())
{
     stream.CopyTo(ms);
     System.IO.File.WriteAllBytes(Server.MapPath("~/Report1.pdf"), ms.ToArray());
}

在客户端保存文件 -

选项1 - Using ActiveX, you Save file on Client machine without user interaction

选项2 - Using Silverlight, you can put the file in IsolatedStorage available on client machine

遗憾的是,由于安全问题,您无法使用JQuery / JavaScript保存文件。还有许多其他选项,如Java Applets等。

我不明白为什么要从服务器端在客户端计算机上保存文件的原因。让用户承担这个责任,我的意思是让用户点击链接并从服务器获取文件并将其保存在他感兴趣的位置。如果服务器尝试在客户端计算机上保存/访问文件,您认为这不是安全问题吗?因此,我建议您重新考虑您的实施并提出不同的工作流程。