使用ajax在浏览器中内联显示PDF

我知道这个问题已经通过不同方式多次提出。 但我仍然无法找到答案。 我的意思是我找不到合适的描述性答案。</ p>

我使用mpdf库生成PDF。 我通过ajax将隐藏字段的一些数据发布到PHP脚本。</ p>

以下是代码片段。</ p>

  // ajax_file  

$(“#button_id”)。click(function(e){

var table_clone = $(“#table_id”)。clone();
var tableData = table_clone.prop('outerHTML'); // html for pdf generation
dataString ='page ='+ tableData;

$ .ajax({
type:'POST',
url:'pdfgenerator.php',
data:dataString,\ n cache:false,
success:function(response)
{
// //这里要做什么才能显示pdf
},
错误:函数(........... 。){


}
});
});
</ code> </ pre>

PHP脚本</ p>

< pre> // pdfgenerator.php

&lt;?php
include('../ mpdf / mpdf.php');
if(/ * check post items set * /)
{

//正在检索帖子项目

$ mpdf = new mPDF('c','A4-L');
$ mpdf-&gt; WriteHTML($ tableData);
$ mpdf-&gt; output( 'xyz.pdf', 'I');
退出;
}
?&gt;

</ code> </ pre>

以下是我的约束</ p>

- &gt; 我不想永久地在服务器上保存文件(这可以通过output()中的'F'选项)。 </ p>

- &GT; 我必须在可以下载它的浏览器中显示它。</ p>

如果没有ajax调用,PHP脚本可以正常工作。 因此,它返回正确的数据,但我无法在浏览器中的pdf中显示它。</ p>

在搜索答案时,我发现它不可能通过ajax。

是否有任何 通过PHP或javascript做某事的方式。 请提供描述性答案。</ p>

谢谢,</ p>
</ div>

展开原文

原文

I know that this question is already asked many times by different ways. But still i am not able to figure out the answer. I mean i did not find a proper descriptive answer.

I use mpdf library to generate PDF. I post some data of hidden fields to a PHP script by means of ajax.

Following are the code snippets.

//ajax_file

$("#button_id").click(function(e){

var table_clone=$("#table_id").clone();
var tableData=table_clone.prop('outerHTML');//html for pdf generation
dataString='page='+tableData;

$.ajax({
         type: 'POST',
         url: 'pdfgenerator.php',
         data: dataString,
         cache: false,
        success: function(response)
        {
          //what to do here in order to display pdf
         },
         error: function(............){
           .
           .
          }
        });
});

PHP Script

//pdfgenerator.php

<?php
      include('../mpdf/mpdf.php');
      if(/*checking post items are set*/)
       {
         //retriving post items

         $mpdf=new mPDF('c','A4-L');
         $mpdf->WriteHTML($tableData);
         $mpdf->output('xyz.pdf','I');
          exit;
        }
?> 

Following are my constraints

-> I don't want to save file permanently on server (which is possible by means of 'F' option in output()).

-> I have to display it in browser from where it can be downloaded.

PHP script works correctly if called without ajax. Hence it returns correct data but i am unable to display it in pdf inside the browser.

While searching for answers i found that it is not possible by means of ajax. so is there any way around by doing something in PHP or javascript. Please provide a descriptive answer.

Thanks,

doujie7497
doujie7497 但是,如果有人知道如何通过JavaScript或PHP做到这一点是受欢迎的
5 年多之前 回复
duan0403788996
duan0403788996 谢谢它的工作!
5 年多之前 回复
dqp4933
dqp4933 在页面中放置一个IFrame,为其命名,然后将HTML表单的目标设置为该名称。看看这个问题:stackoverflow.com/questions/168455/how-do-you-post-to-an-iframe
5 年多之前 回复
duan19805
duan19805 我是初学者,所以请你告诉我如何使用iframe。
5 年多之前 回复
dongyi1215
dongyi1215 Ajax的重点是在后台执行某些操作,但如果要显示PDF文件,则表示您实际上是在打开新页面。你为什么不发布一个表单,并可能在一个新的选项卡或弹出窗口中显示响应,甚至在同一个窗口中显示iframe?
5 年多之前 回复

1个回答



您可以使用此代码</ p>

  $。ajax({
type: 'POST',
url:'pdfgenerator.php',
data:dataString,
cache:false,
success:function(response)
{
var tag ='&lt; object width =“400 “height =”500“type =”application / pdf“data =”'+ xyz.pdf +'“id =”show_obj1“class =”obj“&gt;&lt; / object&gt;';
$(#pdfdiv)。 html(tag);
},
error:function(............){


}
});
});
</ code> </ pre>

$(#pdfdiv).html(tag)中的 #pdfdiv </ code>; </ code>是div的id 您要在其中显示pdf </ p>
</ div>

展开原文

原文

You can use this code

$.ajax({
         type: 'POST',
         url: 'pdfgenerator.php',
         data: dataString,
         cache: false,
        success: function(response)
        {
          var tag ='<object width="400" height="500" type="application/pdf" data="'+xyz.pdf+'" id="show_obj1" class="obj"></object>';
          $(#pdfdiv).html(tag);
         },
         error: function(............){
           .
           .
          }
        });
});

Here #pdfdiv in $(#pdfdiv).html(tag); is the id of the div in which you want to show the pdf

doufang7385
doufang7385 这是另一个问题,与我的代码正常工作并且显示PDF但不仅仅是二进制格式相同
5 年多之前 回复
duanqiao1949
duanqiao1949 pg1将数据发布到pg2,通过从dB检索数据生成表格,此页面包含一个按钮。 点击此按钮,jquery执行ajax调用,将POST数据(TABLE的文件名和HTML)发送到生成PDF的PHP脚本。 Ajax接收此原始数据作为响应。 如果我显示它,它显示垃圾值。 只看到这篇文章的图片[link](stackoverflow.com/questions/22273679 / ...)另见这篇文章的链接。 输入类型是提交。
5 年多之前 回复
dongxie548548
dongxie548548 我的解决方案是完美的,如果你遇到任何问题,然后发给我完整的代码,我会为你解决,无论如何告诉我一件事$(“#button_id”)。click(function(e){here #button_id是输入权? 这个输入的类型是什么(按钮或提交)???
5 年多之前 回复
dongquan0024
dongquan0024 对不起,实际上我没有删除我之前在评论中已经建议的代码逻辑,因此我的页面通过表单和ajax调用进行了两次POST,其中两种,表单POST正常工作。 所以我很高兴并迅速发表评论。 我非常感谢你的帮助,希望你原谅我。
5 年多之前 回复
drhzn3911
drhzn3911 我的回答有什么问题吗?
5 年多之前 回复
duanhuan6857
duanhuan6857 你的意思是说php代码不生成pdf? 还有一件事,如果它没有工作那么怎么说“伟大的工作!非常感谢你”?
5 年多之前 回复
dousi2013
dousi2013 我发现了问题,即代码试图从我的服务器获取xyz.pdf,而不是像我在问题中指定的那样保存它。 data指定<object>标记中的资源的url。 因此,我找不到控制台404中的错误
5 年多之前 回复
duaner5714
duaner5714 我使用相同的代码在同一页面上显示pdf的问题是什么,只需要在<div id =“pdfdiv”> </ div>中显示pdf
5 年多之前 回复
doujubeng2942
doujubeng2942 只是有点问题仍然与代码因此没有标记你的答案。 我必须在同一页面上显示pdf,
5 年多之前 回复
doupu5941
doupu5941 请upvote它也
5 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐