下载PHP使用AJAX创建的PDF

时间:2016-02-18 16:23:25

标签: javascript php ajax pdf pdf-generation

我有一个PHP文件,我在其中创建PDF。我使用AJAX调用这个PHP并给出一些视觉反馈(我显示然后隐藏一个微调器),因为我将创建一个500页的PDF,这个过程有点慢。

要创建PDF,我使用PDFMerger(因为我需要合并一些PDF)。为了调用这个PHP,我有一个关联JavaScript函数的按钮。

问题是,如何使用AJAX下载文件。因为如果我不使用AJAX并且我使用PHP,那么文件将被下载,但是如果我使用AJAX而不是PHP,我将成功获得所有'PDF-data'(...06�P��endstreamendobj965 0 obj<</Filter /FlateDecode /Type /XObject/Subtype /Form/FormType 1/BBox [0.00 0.00 595.28 841.89]/Resources <</ProcSet [/PDF /Text /ImageB /ImageC /ImageI ]/Font <</F1 960 0 R/F2 961 0 R>>/XObject <<>>/Properties...)。

我的问题与如何通过AJAX下载文件完全不同。我正试图找出如何结合PDFMerger和AJAX来获取PDF。

的JavaScript

showSpinner();
$.ajax({
    url: 'downloadPDF.php',
    success: function (data) {
        //And now I want to download the PDF
    },
    complete: function () {
        hideSpinner();
    }
});

PHP(downloadPDF.php

$pdf = new PDFMerger();
foreach ($arrayPDFs as $url) {
   $pdf->addPDF($url, 'all');
}
$pdf->merge('download');

1 个答案:

答案 0 :(得分:0)

如果你使用ajax,你显然可以将PDF内容作为数据。

如果您希望用户单击链接并获得PDF作为结果,则不需要ajax。用户单击其浏览器中的链接,浏览器将下载PDF文件 - 无需其他选项卡等。

如果由于某种原因无法提供此链接,您可以通过将原始数据传递到JavaScript PDF库(例如jsPDF)来从JavaScript获取PDF内容。

告诉浏览器通过PHP直接下载将文件显示为PDF,请使用此问题中描述的标题:Show a PDF files in users browser via PHP/Perl