输出后如何下载或附加pdf文件 - mpdf

时间:2018-02-13 15:02:14

标签: php pdf

我希望mpdf在用户的AJAX请求下生成pdf文件。一切运行正常,但响应不会以pdf打开。

在NETWORK下的RESPONSE中,我看到如下内容:

%PDF-1.4
%âãÏÓ
3 0 obj
<</Type /Page
/Parent 1 0 R
/MediaBox [0 0 595.280 841.890]
/TrimBox [0.000 0.000 595.280 841.890]
/Resources 2 0 R
/Group << /Type /Group /S /Transparency /CS /DeviceRGB >> 
/Contents 4 0 R>>
endobj
4 0 obj
<</Filter /FlateDecode /Length 382>>
stream
x­TËNÃ0ôÙ_1G8à®8¯HP©·Ò [¨j+µêï³ô!q°ãÝ]ÛØpBj9
ç3eÛ l`¼VÚùß_#=
ðäZQg?¬d/Ú¤ÒãÁSX`©Â`"IÙÌá$<2R¬dËÑx¦±:6Qâ ß?ØÙ¼9ãÌÑscåbxØ{dB
8Æ&*1\TfuŸZØråDʾG±f
.°%À9K½(²l%÷*vâKÅBÌ/Éì«úÝÜ" yàöV¹<LCnmj|êQâ3³Æ¡½¿¹Åk^N¾Ît¥[WfI9e'%]a0Ú¡X ÇÉ]m¨3o³ÐõºtÐfÐíÎMahjðØn6¦YO´D~¯¬¿¶\B Ì)m¿üu.¿@u^ÿç~3ªÃ³ßL
~L¬

请指导我如何让mpdf将生成的文件附加到浏览器,以便用户可以下载?

这是我的代码:

<?php
header('Content-Type: application/pdf'); 
require('../../../../core/inc/connect.php');
require('../func.php');
require('mpdf.php');

    //generate sign up codes as pdf file
if (isset($_POST['codes'])) {
$content = array();
foreach ($_POST['codes'] as $key => $value) {
    $content[] = mpdfContent($value,'Unused');
}
$mpdf = new mPDF();
$mpdf->WriteHTML("<div>".(implode($content))."<div style='clear:both;'></div></div>");
$mpdf->Output();
}

?>

2 个答案:

答案 0 :(得分:0)

尝试在脚本中添加以下标题:

header("Content-Disposition: attachment")

这会下载文件。

答案 1 :(得分:0)

通常您不需要自己设置任何标题。如果目的地是I(内联)或D(强制下载),则由MPDF处理。检查MPDF文档或源以查看发送的标头。 MPDF manual标题也应显示在网络控制台中。

您打算通过AJAX调用下载代码是什么意思?通常,您要么通过AJAX请求一些JSON oder HTML来更新当前页面的视图状态。如果AJAX是由链接触发的,请尝试直接链接到您的PHP文件而不使用AJAX,因为我不确定在执行AJAX调用时是否解释了下载头