通过AJAX生成PDF预览

时间:2014-05-18 20:23:19

标签: jquery ajax pdf tcpdf

我在index.php中有一个用于使用TCPDF库创建PDF的表单。我正在尝试做的是在提交表单之前显示PDF预览,当文本字段或选择失去焦点时。

3个PHP文件:

  1. 第一个包含用于创建PDF的TCPDF函数(有PDF输出设置$pdf->Output('file_name.pdf', I);。" I"表示此处将PDF呈现给浏览器(" F"是用于保存文件)。
  2. 第二个(create_pdf_preview.php)包含第一个文件和其他一些东西
  3. 第三个(create_pdf.php)包含第一个文件和收集数据到DB
  4. HTML - index.php

    <div id="insertingData">
      <form id="form" action="create_pdf.php" method="POST">
         // some input, textarea and select tags for PDF content with 'c' class
      </form>
    </div>
    <div id="pdfPreview"></div>
    

    AJAX

    $('.c').on('blur', function(){
        $.ajax({
            type: 'POST',
            url: 'create_pdf_preview.php',
            data: $('#form').serialize(),
            success: function(data){
                $('#pdfPreview').html(data); // this should be PDF
            },
            dataType: 'html' // PDF
        });
    });
    

    那么 - 有谁知道,如何改变AJAX工作?如果我要提供更多细节,请告诉我。

    感谢您的任何建议。

1 个答案:

答案 0 :(得分:0)

即使它有效,你如何期望.html() pdf进入页面?

我建议你做什么(受到Preview pdf file created with TCPDF in embed tag after Ajax call的启发)是添加一个嵌入标签,其中包含src新创建的pdf。我的意思是,用新创建的pdf刷新嵌入源。

不是像在create_pdf_preview.php中那样输出pdf,而是可以使用第二个被重写的文件,当ajax调用结束时,只需将嵌入的src更改为path/to/file.pdf?g=45,并在那里使用随机数这会欺骗浏览器认为src已经改变并刷新文件。

现在,正如我从中获得灵感的问题一样,如果您为多个用户使用相同的文件,只会根据时间戳或ip或两者创建临时文件,并在完成编辑后删除它们,则会出现问题。< / p>