mpdf 生成空白页

mpdf generates blank page

所以我在尝试使用 mpdf 从 URL 生成 pdf 时遇到困难 代码:

<form action="generate.php" method="POST">
 url: <input type="text" name="url"><br>
<input type="submit">
</form>

generate.php:

 <?php
 if ($_SERVER["REQUEST_METHOD"] == "POST") {
 $url = test_input($_POST["url"]);
 $pdf=file_get_contents($url);   
 include('mpdf60/mpdf.php');
 $mpdf=new mPDF();
 $mpdf->debug = true; 
 $mpdf->WriteHTML($pdf);
 $mpdf->Output(); 
 exit;  
  }
 function test_input($data) {
 $data = trim($data);
 $data = stripslashes($data);
 $data = htmlspecialchars($data);
 return $data;
 }
 ?>

Returns 没有错误,只是空白的 pdf 页面。

你没有详细说明正在 given.I 的 url 输入,希望 url 指向相同的 server.Else mpdf 将显示错误

您的 code.Please 检查没有任何文件权限问题。

我在使用 mPDF 5.6 时遇到了同样的问题。当我使用 xdebug 时,我发现了这两行:

$str = @preg_replace('/\&\#([0-9]+)\;/me', "code2utf('\1',{$lo})",$str);
$str = @preg_replace('/\&\#x([0-9a-fA-F]+)\;/me', "codeHex2utf('\1',{$lo})",$str);

如您所见,有“@”字符阻止错误输出。因此,如果您有 php >=7.0,您将永远不会收到有关 "e" 修饰符已弃用的错误。所以你所有的 HTML 在这些行之后都将是 NULL。

我更新了这个函数:

// mpdf/includes/functions.php
if (!function_exists('strcode2utf')) {
    function strcode2utf($str,$lo=true)
    {
        //converts all the &#nnn; and &#xhhh; in a string to Unicode
        if ($lo) { $lo = 1; } else { $lo = 0; }
        // Deprecated modifier "E" in preg_replace
        //$str = @preg_replace('/\&\#([0-9]+)\;/me', "code2utf('\1',{$lo})",$str); // blocked errors output!! wtf?
        //$str = @preg_replace('/\&\#x([0-9a-fA-F]+)\;/me', "codeHex2utf('\1',{$lo})",$str);
        $str = preg_replace_callback('/\&\#([0-9]+)\;/m',
            function($num) use ($lo) {
                return code2utf($num, $lo);
            }, $str);
        $str = preg_replace_callback('/\&\#x([0-9a-fA-F]+)\;/m',
            function($num) use ($lo) {
                return codeHex2utf($num, $lo);
            }, $str);
        return $str;
    }
}