MPdf无法在移动设备上生成PDF。在台式机上完美运行

时间:2019-09-02 12:27:16

标签: php mpdf

我正在使用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。

1 个答案:

答案 0 :(得分:0)

您可以使用I参数代替$mpdf->Output('ABCD.pdf','I');中的F参数。有关更多信息,请参见链接here

F参数在服务器的特定目录中创建文件,而使用ID参数时通常不会引起任何问题:$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();
}