2014-09-01 52 views
1

我有这个叫print.php PHP文件:使用PHP DOMPDF和AJAX下载PDF文件

<?php 
require_once("modules/pdf/dompdf_config.inc.php"); 
$html = $_POST["toRender"]; 
$number = $_POST["number"]; 
$dompdf = new DOMPDF(); 
$dompdf->load_html($html); 
$dompdf->render(); 
$dompdf->stream($number.".pdf"); 

正如你所看到的,HTML和一些通过POST接收。

的JavaScript文件看起来是这样的:

$("#btnViewPDF").click(function() { 

     var theHtml = $("#printable").html(); 
     var theNumber = $("#invoiceNumber").val(); 

     $.ajax({ 
      type : "post", 
      url : "views/print.php", 
      data : {toRender : theHtml, number : theNumber}, 
      beforeSend: function() { 
       $(".ajax-loader-bg").fadeIn(); 
      } 
     }).always(function() { 
      $(".ajax-loader-bg").fadeOut(); 
     }); 
     return false; 
    }); 

基本上它需要一个DIV里面的所有内容称为“打印”但我想,下一步是要显示已在print.php生成的PDF ,我一直无法弄清楚我该如何做到这一点。

当我在print.php中生成测试HTML然后输入url mysite.com/print.php时,我已经使它工作了......它呈现PDF并允许我下载它或在另一个浏览器标签

我如何通过AJAX实现这一目标?

回答

3

您无法通过AJAX下载内容,您可以使用隐藏的iframe来模拟行为。

不是说你不能下载它,但是,它永远不会在文件系统中保存目的,因为JavaScript不能做到这一点,出于安全原因。

反正人总是找到解决方案,你可以试试这个:https://stackoverflow.com/a/23797348/1131176

+0

非常有帮助的人!尽管如此,我走过了安全之路。我为我需要的每种PDF格式制作了不同的页面。我会检查一下,如果我可以用这种方法正常工作! – JuanBonnett 2014-09-02 13:45:09