使用 Jquery 从字符串下载 pdf 文件

发布于 2024-09-11 11:54:56 字数 887 浏览 4 评论 0原文

所有,

我有一个用 Zend Framework 和 MVC 编写的 PHP5 应用程序。在我的主页上,我想合并下载动态生成的 pdf 文件的功能。完成此操作的方法是:

  1. 用户单击“下载文件”链接。
  2. 单击时,PHP 控制器会发生 AJAX 调用,该控制器获取表单数据、生成 pdf 并将其作为字符串返回。
  3. 我的 javascript 函数现在有 pdf 字符串。
  4. 如何向用户显示“打开/保存”对话框以从 javascript 下载 pdf 文件?

我有以下代码:

<script type="text/Javascript">
   $('#dlcontent').click(function(e) {
      $.ajax({
                type: 'POST',
                url: "/downloads/dlpolicies",
                data:  $("#frmMyContent").serialize(),
                cache: false,
                dataType: "html",
                success: function(html_input){
                    alert(html_input);  // This has the pdf file in a string.
                    //ToDo: Open/Save pdf file dialog using this string..
                }
            });
});
</script>

谢谢

All,

I have a PHP5 application written with Zend Framework and MVC. On my home page, I want to incorporate the functionality to download a dynamically generated pdf file. The way this is done is:

  1. User clicks "download file" link.
  2. On Click, an AJAX call occurs to a PHP controller, which takes the form data, generates the pdf and returns it as a string.
  3. My javascript function now has the pdf string.
  4. How can I display the user an "Open/Save" dialog to download the pdf file from javascript?

I have the following code:

<script type="text/Javascript">
   $('#dlcontent').click(function(e) {
      $.ajax({
                type: 'POST',
                url: "/downloads/dlpolicies",
                data:  $("#frmMyContent").serialize(),
                cache: false,
                dataType: "html",
                success: function(html_input){
                    alert(html_input);  // This has the pdf file in a string.
                    //ToDo: Open/Save pdf file dialog using this string..
                }
            });
});
</script>

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

俏︾媚 2024-09-18 11:54:56

我会尽量保持简单。只需使用 target="_blank" 提交表单,然后让 PHP 强制下载文件。

HTML 代码

<script type="text/Javascript">
$('#dlcontent').click(function(e) {
  e.preventDefault();
  $("#frmMyContent").submit();
});
</script>

<form id="formMyContent" action="/downloads/dlpolicies" target="_blank" ... >
...
</form>

然后在服务器端,您需要告诉 PHP 将响应作为“下载”发送。

PHP 代码

$this->getResponse()
  ->setHeader('Content-Disposition', 'attachment; filename=result.pdf')
  ->setHeader('Content-type', 'application/pdf');

从这里得到这个:
Zend Framework 如何设置标头

I would try to keep this simple. Just sumbit the form with a target="_blank" and then have PHP force the file download.

HTML CODE

<script type="text/Javascript">
$('#dlcontent').click(function(e) {
  e.preventDefault();
  $("#frmMyContent").submit();
});
</script>

<form id="formMyContent" action="/downloads/dlpolicies" target="_blank" ... >
...
</form>

Then on your server side, you need to tell PHP to send the response as a "download".

PHP Code

$this->getResponse()
  ->setHeader('Content-Disposition', 'attachment; filename=result.pdf')
  ->setHeader('Content-type', 'application/pdf');

Got this from here:
Zend Framework how to set headers

枯叶蝶 2024-09-18 11:54:56

最简单的方法是打开一个新窗口,其中包含 pdf 字符串的 URL。

The simplest way of doing it is open a new window with URL to pdf string.

窝囊感情。 2024-09-18 11:54:56

将一个元素添加到您想要链接所在的页面。它可以是一个跨度或一个 div 或表格中的一个单元格或任何你想要的。给它一个唯一的ID。然后使用 jQuery 设置该元素的 html。我在这里将其称为 somepageelement

$('#dlcontent').click(function(e) {
      $.ajax({
                type: 'POST',
                url: "/downloads/dlpolicies",
                data:  $("#frmMyContent").serialize(),
                cache: false,
                dataType: "html",
                success: function(html_input){
                    $('#somepageelement').html('<a href="' + html_input + '">Click here to download the pdf</a>');
                }
            });
});

Add an element to your page where you want the link to go. It can be a span or a div or a cell in a table or whatever you want. Give it a unique ID. Then use jQuery to set the html of that element. I refer to it as somepageelement here.

$('#dlcontent').click(function(e) {
      $.ajax({
                type: 'POST',
                url: "/downloads/dlpolicies",
                data:  $("#frmMyContent").serialize(),
                cache: false,
                dataType: "html",
                success: function(html_input){
                    $('#somepageelement').html('<a href="' + html_input + '">Click here to download the pdf</a>');
                }
            });
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文