Intereting Posts

PHP: Adobe Reader не может открыть PDF-файлы, созданные с помощью mpdf

Я использую mpdf для создания файлов PDF на лету, и файлы открываются в браузере, но Adobe дает мне ошибку:

Adobe Acrobat Reader DC не смог открыть «example-filename.pdf», потому что это либо не поддерживаемый тип файла, либо потому, что файл поврежден (например, он был отправлен как вложение электронной почты и неправильно декодирован).

Я рассмотрел другие вопросы об этом ( еще одна ошибка mpdf + adobe ) и проверил pdf в текстовом редакторе. Я обнаружил, что первая часть файла выглядела так:

<!DOCTYPE html> <head> <title> CapstoneDB </title> %PDF-1.4 %âãÏÓ 

После того, как я удалил все до %PDF-1.4 (включая вкладку), файл был отлично открыт в Adobe, и это здорово, за исключением того, что мне нужно получить открытые pdf-файлы для открытия в Adobe без ручного воспроизведения кода каждый время.

Вот моя оберточная функция, которая вызывает mpdf с html и css:

 include('../mpdf/mpdf.php'); function user_download_pdf($html, $css_file, $filename) { $mpdf = new mPDF(); $stylesheet = file_get_contents($css_file); $mpdf->WriteHTML($stylesheet,1); $mpdf->WriteHTML($html,2); $mpdf->Output($filename, "D"); } 

Я никогда не загружаю mpdf полную html-страницу, обычно только h3 и одну или несколько таблиц. Может быть, мне нужно предоставить mpdf всю html-страницу, включая <head> , <body> и т. Д.? Есть ли способ изменить конфигурацию mpdf или способ, которым я называю mpdf в php, который избавится от html-мусора в начале PDF-файла, который все размахивает?

Related of "PHP: Adobe Reader не может открыть PDF-файлы, созданные с помощью mpdf"

Место

 ob_clean(); 

непосредственно перед

 $mpdf->Output(); 

Без этого mpdf иногда включает HTML-страницу сайта, а не только HTML, который вы хотите в PDF-файле, вероятно, потому, что заголовки уже отправлены в другом месте кода. Это может испортить ваш PDF, чтобы Adobe не открывала его.