簡體   English   中英

使用Jquery從字符串下載pdf文件

[英]Download pdf file from a string using Jquery

所有,

我有一個用Zend Framework和MVC編寫的PHP5應用程序。 在我的主頁上,我希望合並該功能以下載動態生成的pdf文件。 完成的方式是:

  1. 用戶單擊“下載文件”鏈接。
  2. 在Click上,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>

謝謝

我會盡量保持簡單。 只需使用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如何設置標題

最簡單的方法是打開一個新窗口,其中包含指向pdf字符串的URL。

在您想要鏈接的頁面上添加元素。 它可以是一個span或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>');
                }
            });
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM