我正在使用8.0版的MPdf和7.1版的PHP。 这是我的代码。
function generatePDF($order){
$html = getHTML($order);
try {
$mpdf = new \Mpdf\Mpdf(['margin_left' => 20,
'margin_right' => 15,
'margin_top' => 48,
'margin_bottom' => 25,
'margin_header' => 10,
'margin_footer' => 10]);
$mpdf->SetProtection(array('print'));
$mpdf->SetDisplayMode('fullpage');
$mpdf->WriteHTML($html);
$mpdf->Output('ABCD.pdf','I');
}catch (\Mpdf\MpdfException $e) { // Note: safer fully qualified exception name used for catch
// Process the exception, log, print etc.
$error = $e->getMessage();
echo $e->getMessage();
}
此代码在台式机上运行良好。如果我使用笔记本电脑或任何台式机,它会很好地生成PDF。但是,当我在移动设备上检查它时,它不会下载任何PDF。它也不会引发任何异常或错误。
我已经调试了每一行代码,每一行都执行得很好,只是没有生成PDF。
答案 0 :(得分:0)
您可以使用I
参数代替$mpdf->Output('ABCD.pdf','I');
中的F
参数。有关更多信息,请参见链接here。
F
参数在服务器的特定目录中创建文件,而使用I
或D
参数时通常不会引起任何问题:$mpdf->Output('/DIRABCD.pdf','F');
之后,您可以使用PHP中的readfile()
或fread()
函数强制浏览器(移动设备或PC)下载文件。
代码如下:
function generatePDF($order){
$html = getHTML($order);
try {
$mpdf = new \Mpdf\Mpdf(['margin_left' => 20,
'margin_right' => 15,
'margin_top' => 48,
'margin_bottom' => 25,
'margin_header' => 10,
'margin_footer' => 10]);
$mpdf->SetProtection(array('print'));
$mpdf->SetDisplayMode('fullpage');
$mpdf->WriteHTML($html);
$mpdf->Output('/DIR/ABCD.pdf','F');
ob_start();
header("Content-type:application/pdf");
header("Content-Disposition:attachment;ABCD.pdf");
readfile("/DIR/ABCD.pdf");
exit;
}catch (\Mpdf\MpdfException $e) { // Note: safer fully qualified exception name used for catch
// Process the exception, log, print etc.
$error = $e->getMessage();
echo $e->getMessage();
}