Javascript 如何在ASP.NET MVC中将网格导出为PDF
我不知道这是否一定重要,但我正在使用Infragistics iggrid将我的网格及其报告内容导出为PDF 我面临的根本问题是,我要导出的数据在浏览器中,我希望不必创建服务器端文件来下载。我们在屏幕上有一个图标,用户可以单击该图标下载PDF 所以我在客户机上做的就是收集所有的数据。这必须在客户端完成,因为我希望在用户对数据进行排序、筛选和列排序时导出数据(否则,我可以只在服务器端收集数据,这将使操作更简单)。然后,我通过POST将数据发送到服务器 在服务器端,我生成PDF文件。现在,很明显,我可以保存PDF服务器端并重定向到生成的文件,但这增加了对临时文件的维护,这是我更愿意避免的(但最坏的情况是,我可以去那里。现在就去寻找选项) 我尝试返回base64编码的数据,然后执行以下操作:Javascript 如何在ASP.NET MVC中将网格导出为PDF,javascript,asp.net-mvc,asp.net-mvc-4,infragistics,iggrid,Javascript,Asp.net Mvc,Asp.net Mvc 4,Infragistics,Iggrid,我不知道这是否一定重要,但我正在使用Infragistics iggrid将我的网格及其报告内容导出为PDF 我面临的根本问题是,我要导出的数据在浏览器中,我希望不必创建服务器端文件来下载。我们在屏幕上有一个图标,用户可以单击该图标下载PDF 所以我在客户机上做的就是收集所有的数据。这必须在客户端完成,因为我希望在用户对数据进行排序、筛选和列排序时导出数据(否则,我可以只在服务器端收集数据,这将使操作更简单)。然后,我通过POST将数据发送到服务器 在服务器端,我生成PDF文件。现在,很明显,我
window.open(“数据:application/pdf;base64,”+encodedData)代码>
这不起作用(至少在IE中是这样),因为URL限制有点超过2K
我尝试在此处使用downloadDataURI javascript函数:
但这似乎只适用于Chrome(即使在评论了webkit检查之后),而我显然不太聪明,无法找出原因
我确信我遗漏了一些不需要创建服务器端文件的明显可能性,但我只是没有看到。(免责声明:我女儿今天早上很早就把我吵醒了,所以答案可能很琐碎,明天当我的大脑工作时,我会觉得自己很愚蠢)
在服务器端,我生成PDF文件。现在,很明显,我可以
保存PDF服务器端并重定向到生成的文件,但是
添加了我希望避免的临时文件的维护(但是
最糟糕的情况是,我可以去那里。现在就去寻找选择)
您不需要将其保存在服务器上。您可以简单地将PDF文件流式传输给用户(我假设您以某种流或字节[])。你所需要做的就是
Response.ContentType = "application/pdf";
Response.AddHeader("Content-Disposition", "filename.pdf");
Response.BinaryWrite(bytes);
Response.Flush();
Response.Close();
Response.End();
这将提示用户保存文件或在Adobe Reader中打开文件。该文件根本不会在服务器上创建。是的,我是个白痴。我在写一篇.ajax文章,但当然没有理由我不能改为写一篇表单文章。。。