我不知道这是否一定很重要,但我正在使用 Infragistics iggrid 为我的网格及其报告内容导出为 PDF。
我遇到的根本问题是我要导出的数据在浏览器中,我希望不必创建要下载的服务器端文件。我们在屏幕上有一个图标,用户单击该图标即可下载 PDF。
所以我在客户端上做的是收集所有数据。这必须在客户端完成,因为我想在用户对其进行排序、过滤和列排序时导出数据(否则我可以只收集服务器端的数据,这会使这更简单)。然后我通过 POST 将数据发送到服务器。
在服务器端,我生成 PDF 文件。现在,显然,我可以保存 PDF 服务器端并重定向到生成的文件,但这增加了我希望避免的临时文件的维护(但最坏的情况下,我可以去那里。现在只是在寻找选项) .
我尝试返回base64编码的数据库,然后执行:
window.open("data:application/pdf;base64," + encodedData);
这不起作用(至少在 IE 中),因为 URL 限制有点超过 2K。
我在这里尝试使用 downloadDataURI javascript 函数:http ://code.google.com/p/download-data-uri/
但这似乎只适用于 Chrome(即使在注释掉 webkit 检查之后),而且我显然不够聪明,无法弄清楚原因。
我确定我错过了一些不需要创建服务器端文件的明显可能性,但我只是没有看到它。(免责声明:我女儿今天早上把我吵醒了,所以答案可能真的很琐碎,明天当我的大脑工作时我会感到愚蠢)。