Javascript 如何在ASP.NET MVC中将网格导出为PDF

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文件。现在,很明显,我

我不知道这是否一定重要,但我正在使用Infragistics iggrid将我的网格及其报告内容导出为PDF

我面临的根本问题是,我要导出的数据在浏览器中,我希望不必创建服务器端文件来下载。我们在屏幕上有一个图标,用户可以单击该图标下载PDF

所以我在客户机上做的就是收集所有的数据。这必须在客户端完成,因为我希望在用户对数据进行排序、筛选和列排序时导出数据(否则,我可以只在服务器端收集数据,这将使操作更简单)。然后,我通过POST将数据发送到服务器

在服务器端,我生成PDF文件。现在,很明显,我可以保存PDF服务器端并重定向到生成的文件,但这增加了对临时文件的维护,这是我更愿意避免的(但最坏的情况是,我可以去那里。现在就去寻找选项)

我尝试返回base64编码的数据,然后执行以下操作:

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文章,但当然没有理由我不能改为写一篇表单文章。。。