0

我需要使用从 POST 请求中获得的一些数据生成 PDF 文件。作为对此请求的响应,我想发送生成的 PDF 文件,用户应该得到一个“将文件另存为”对话框。

这一切都应该即时发生。我不想将 PDF 保存到磁盘并通过附加请求提供它。这一切都应该发生在一个请求中。

但我不知道我怎么能做到这样的事情。如果我使用 XMLHttRequest,则无法显示“文件另存为”对话框。另一方面,如果我使用表单,我无法在没有 URL 加密开销的情况下发送 POST 数据。

有人有想法吗?

4

2 回答 2

0

最后,我用 2 个请求解决了它。首先将所需的数据发送到服务器并从中创建 PDF,然后返回临时文件的 ID。第二个下载pdf并删除临时文件。

于 2012-10-15T16:09:55.207 回答
0

我通过将数据从 javascript 生成的表单字段发布到 php.ini 来做到这一点。

var form = $('<form method="post" action="svgoutput/convert.php"> <input type="text"  name="incomingSvgData" value="'+base64_encode(svgDataString)+'"><input type="submit" value="Submit Post"> </form> ');
form[0].submit();

对于 IE,表单在提交时位于 dom 中。

在 php 方面,我做我的生成和东西(在这种情况下为 SVG 到 PNG)并设置以下标题:

header("Content-Type: YOURMIMETYPE");
header("Content-Disposition: attachment; filename=YOURFILENAME.EXT");
echo YOURDATA;

无需在一篇文章中显示另存为对话框即可顺利下载。如果您需要“另存为”,只需使用标题,例如此处如何使用 PHP 显示“另存为”对话框用于文本文件

于 2013-04-11T18:25:59.467 回答