ASP.NET MVC从byte 生成PDF

在发布此消息之前,我在SO中查看了很多post,但很少有人直接说他们需要查看常见问题解答,很少有人提供使用iTextSharp或其他内容的解决方案。 但没有人能解决我的问题。 我的问题是我有一个byte [],我需要在新的子窗口中生成一个PDF我们只是使用ASP.NET MVC 4而没有iTextSharp或类似的。 如果已经有一个与此完全匹配的post,请告诉我。 我可以创建新的部分视图

我的部分视图中有一个PDF图标图像。 当用户点击它时,我需要在新的浏览器窗口中显示PDF。 我可以成功调用一个JavaScript函数来调用从另一个服务器获取文件的控制器。 我甚至可以将文件转换为字节数组。 我想在新的浏览器窗口中以PDF格式显示这个字节数组。

在视图中我有像下面的PDF图标

 

ShowCDinPDF在我的javascript中如下

 function ShowCDinPDF(popUpURL, windowProperties, w, h) { var childWindow = window.showModelessDialog(popUpURL, "", ""); } 

在我的Controller中,我有ShowPDF方法

 public ActionResult ShowPDF(string personid) { //call service and get data string fileContent = response.FileContent; byte[] data = Convert.FromBase64String(fileContent); **// Here using data I need to show PDF in new window** } 

请告诉我如何创建PDF。

UPDATE

我没什么进展。 现在我的代码如下所示。 一个新窗口打开,我收到错误弹出消息文件不以’%PDF-‘开头 。 我试图找到解决方案,但没有成功。

  public ActionResult ShowPDF(string personid) { //call service and get data string fileContent = response.FileContent; byte[] data = Convert.FromBase64String(fileContent); using (MemoryStream memoryStream = new MemoryStream()) { Response.ClearHeaders(); Response.ClearContent(); Response.Charset = ""; Response.AddHeader("Content-Type", "application/pdf"); memoryStream.Write(data, 0, data.Length); memoryStream.WriteTo(Response.OutputStream); Response.Flush(); Response.Close(); Response.End(); } return View(); } 

提前致谢。

更新2

我尝试了很多但没有用。 由于我们接近PROD截止日期,我们的团队决定在我们的服务器中创建PDF文件并在IE浏览器中启动该文件。

注意

我真的不知道为什么这会被投票。 是否有人可以呈现PDF格式的文件,而无需在任何物理位置存储/创建PDF文件。 为什么要投票?

假设您拥有的字节数组代表一个有效的PDF,那么在您的控制器操作中,您可以通过返回具有正确Content-Type响应头的正确ActionResult来提供此PDF:

 public ActionResult ShowPDF(string personid) { //call service and get data string fileContent = response.FileContent; byte[] data = Convert.FromBase64String(fileContent); **// Here using data I need to show PDF in new window** return File(data, "application/pdf"); }