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

全部,</ p>

我有一个用Zend Framework和MVC编写的PHP5应用程序 。 在我的主页上,我想要合并下载动态生成的pdf文件的功能。 这样做的方法是:</ p>


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

    我有以下代码:</ p>

      &lt; script type =“text / Javascript”&gt; 
    $('#dlcontent')。click(function(e){
    $ .ajax({
    type:'POST',
    url :“/ downloads / dlpolicies”,
    data:$(“#frmMyContent”)。serialize(),
    cache:false,
    dataType:“html”,
    success:function(html_input){
    alert (html_input); //这有一个字符串中的pdf文件。
    // ToDo:使用此字符串打开/保存pdf文件对话框..
    }
    });
    });
    &lt; / script&gt ;
    </代码> </ PRE> \ n

    谢谢</ p>

    </ p>
    </ div>

展开原文

原文

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

3个回答



我会尽量保持这一点。 只需使用 target =“_ blank”</ code>对表单进行求值,然后让PHP强制下载文件。</ p>

HTML CODE </ strong> </ p >

 &lt; script type =“text / Javascript”&gt; 
$('#dlcontent')。click(function(e){
e.preventDefault();
$(“#frmMyContent”)。submit();
});
&lt; / script&gt;

&lt; form id =“formMyContent”action =“/ downloads / dlpolicies”target =“_ blank”... &gt;
...
&lt; / form&gt;
</ code> </ pre>

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

PHP代码</ strong> </ p>

  $ this-&gt; getResponse()

  • &gt; setHeader(' Content-Disposition','attachment; filename = result.pdf')
  • &gt; setHeader('Content-type','application / pdf');
    </ code> </ pre>

    < p>从这里得到这个:
    Zend Framework如何设置标题 < / p>
    </ div>

展开原文

原文

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

duanao2688
duanao2688 谢谢! 更新。
8 年多之前 回复
duanlinghe8417
duanlinghe8417 内容类型应该是“application / pdf”,因为它已经标准化了很久以前。
8 年多之前 回复
doujinyi1267
doujinyi1267 嗯..我如何将pdf字符串强制转换为result.pdf?
10 年多之前 回复



最简单的方法是打开一个带有pdf字符串URL的新窗口。</ p>
</ div>

展开原文

原文

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



在页面中添加一个您想要链接的元素。 它可以是表格中的span或div或单元格,也可以是您想要的任何内容。 给它一个唯一的ID。 然后使用jQuery设置该元素的html。 我在这里将它称为 somepageelement </ code>。</ p>

  $('#dlcontent')。click(function(e){
$ .ajax( {
type:'POST',
url:“/ downloads / dlpolicies”,
data:$(“#frmMyContent”)。serialize(),
cache:false,
dataType:“html”,

成功:function(html_input){
$('#somepageelement')。html('&lt; a href =“'+ html_input +'”&gt;点击此处下载pdf&lt; / a&gt;'); \ n}
});
});
</ code> </ pre>
</ div>

展开原文

原文

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>');
                }
            });
});

duanpo2813
duanpo2813 好的,抱歉误会了。 在那种情况下,我不确定为什么你需要Ajax才能做到这一点。 我会有一个表单发布到生成pdf的页面并在表单上指定target =“_ new”,以便在新窗口中打开。 如果你想要,你可以这样做,以便点击#dlcontent提交表单。
10 年多之前 回复
duanniling0018
duanniling0018 问题是“#dlcontent”本身是下载pdf文件的链接。 我可以通过弹出窗口进行操作吗? 有了这个,我没有点击2链接下载文件。
10 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐