在发布此消息之前,我看了很多帖子,但很少有人直接关闭说他们需要查看常见问题解答,很少有人给出使用 iTextSharp 或其他东西的解决方案。但没有一个能解决我的问题。我的问题是我有一个byte[] 并且我需要在新的子窗口中生成 PDF. 我们只使用 ASP.NET MVC 4,没有 iTextSharp 或类似的。如果已经有与此完全匹配的帖子,请告诉我。我可以创建新的部分视图
我的部分视图中有一张 PDF 图标图像。当用户单击它时,我需要在新的浏览器窗口中显示 PDF。我可以成功调用 JavaScript 函数,该函数调用从另一台服务器获取文件的控制器。我什至可以将文件转换为字节数组。我想在新的浏览器窗口中以 PDF 格式显示这个字节数组。
在视图中我有如下所示的 PDF 图标
<img onclick="ShowCDinPDF('@Url.Action("ShowPDF", "MyController", new {personid= personid} )','', '920','500')" />
ShowCDinPDF 在我的 javascript 中,如下所示
function ShowCDinPDF(popUpURL, windowProperties, w, h) {
var childWindow = window.showModelessDialog(popUpURL, "", "");
}
在我的控制器中,我有以下 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();
}
提前致谢。
UPDATE 2
我尝试了很多但没有用。由于我们临近生产截止日期,我们的团队决定在我们的服务器中创建 PDF 文件并在 IE 浏览器中启动该文件。
NOTE
我真的不知道为什么这被否决了。是否有人可以渲染 PDF 格式的文件,而无需在任何物理位置存储/创建 PDF 文件。
为什么投反对票?