使用 AJAX 和 PHP 输出 PDF


Using AJAX and PHP to output PDF

我的Web应用程序的工作方式是用户填写表单,然后AJAX将表单数据发送到生成PDF(使用xpdf)的PHP文件。然后,生成的 PDF 应该可以使用 AJAX 在 HTML 页面上下载。

如果我直接在浏览器中打开pdf.php它可以正常工作。但是,我需要弄清楚如何将其与 AJAX 连接,以便它将生成的 PDF 发送回 AJAX,用户只需单击页面上的按钮即可下载它。

阿贾克斯:

$.ajax({
    url: 'pdf.php',
    type: 'POST',
    data: pdfData
})
.done(function(response){
});

.php:

<?php 
include('fpdf.php');
include('fpdi.php'); 
// initiate FPDI 
$pdf =& new FPDI(); 
// add a page 
$pdf->AddPage();
...
$pdf->Output('address.pdf', 'D'); 
?>

pdf 文件完成后,您知道 pdf 的路径和所有详细信息。将 html 或 json 对象返回到您的页面,并创建一个将链接到 pdf 文件的新 html 按钮。

您返回的数据将包含有关 pdf 的所有必需详细信息。名称、路径等

您需要一个两步过程,不能仅通过第一次 AJAX 调用来完成。

  1. 您的 AJAX 调用不应返回 PDF 内容,而应返回用于访问 PDF 的 URL,例如/path/to/getpdf.php?id=23535&securitykey=142505
  2. 您的 javascript 应该尝试在新窗口或选项卡中打开该新 URL
  3. 您的getpdf.php脚本应使用适当的 HTTP Content-TypeContent-Disposition标头为 PDF 数据提供,以强制下载提示。

大多数浏览器会在用户选择打开/保存文件后自动关闭新选项卡。