mpdf создает пустую страницу

Поэтому у меня возникают трудности с созданием pdf из URL-адреса с использованием кода mpdf:

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

сгенерировать.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;
 }
 ?>

Возвращает никаких ошибок, просто пустая страница PDF.


person matri70boss    schedule 20.01.2016    source источник
comment
если вы хотите протестировать mpdf, лучше используйте прямую строку IE <p>How are you</p>.   -  person Adi Prasetyo    schedule 27.08.2017


Ответы (2)


У меня такая же проблема с mPDF 5.6. Когда я использовал xdebug, я нашел эти 2 строки:

$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;
    }
}
person Константин Константин    schedule 14.10.2017

Вы не указали много информации о вводимом URL-адресе. Я надеюсь, что URL-адрес указывает на тот же сервер. Иначе mpdf покажет ошибку

С вашим кодом все в порядке. Пожалуйста, проверьте наличие проблем с правами доступа к файлам.

person jayadevkv    schedule 06.02.2016