【问题标题】:How to convert a pdf to a memory stream如何将pdf转换为内存流
【发布时间】:2016-08-09 04:05:07
【问题描述】:

我正在用 MVC4 编写一个应用程序。

我在服务器上有一个物理 pdf 文件。我想将其转换为内存流并将其发送回用户,如下所示:

return File(stream, "application/pdf", "myPDF.pdf");

但是如何将 pdf 文件转换为内存流?

谢谢!

【问题讨论】:

标签: c# .net asp.net-mvc-4


【解决方案1】:

您不需要MemoryStream。最简单的方法是使用接受文件名的重载:

return File(@"C:\MyFile.pdf", "application/pdf");

另一种解决方案是使用接受byte[] 的重载:

return File(System.IO.File.ReadAllBytes(@"C:\Myfile.pdf"), "application/pdf");

或者如果你想使用FileStream:

return File(new FileStream(@"C:\MyFile.pdf", FileMode.Open, FileAccess.Read), "application/pdf");

【讨论】:

    【解决方案2】:

    解决了

     var pdfContent = new MemoryStream(System.IO.File.ReadAllBytes(imageLocation));
                    pdfContent.Position = 0;
                    return new FileStreamResult(pdfContent, "application/pdf");
    

    【讨论】:

    • 这还不错,但这会不必要地分配大量内存。您失去了拥有可以流式传输的物理文件的优势。
    【解决方案3】:

    使用使用文件名see here 的重载。当您有物理文件时,这是最简单的解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-17
      • 1970-01-01
      • 2011-10-31
      • 1970-01-01
      • 2012-10-21
      • 1970-01-01
      • 1970-01-01
      • 2018-02-24
      相关资源
      最近更新 更多