Не удалось загрузить PDF-документ в браузере chrome

Я использую библиотеку mPDF для создания PDF-файлов с HTML-страницы. Он работает хорошо в firefox, но он не отображает PDF-файл в браузере chrome.

Я получаю следующую ошибку при создании PDF в chrome.

Getting error in chrome browser while generating PDF

Ниже приведен мой код для создания PDF с помощью mPDF

ob_clean();
header('Content-type: application/pdf');
header('Content-Disposition: inline; filename="' . $yourFileName . '"');
header('Content-Transfer-Encoding: binary');
header('Accept-Ranges: bytes');
$mpdf = new PDF( 'c','A4','','',15, 15,10,14,0,0);
$mpdf->useOnlyCoreFonts = false;
$mpdf->SetDisplayMode('real');
$mpdf->list_indent_first_level = 0; // 1 or 0 - whether to indent the first level of a list
$stylesheet = file_get_contents(APPPATH . 'third_party/mpdf/style.css');
$mpdf->WriteHTML($stylesheet,1);
$mpdf->WriteHTML($html);
$mpdf->Output();

5 ответов


это проблема, с которой люди столкнулись на гораздо более старой версии Chrome. Если вы все еще видите эту проблему, выполните следующие действия

в Google Chrome у вас есть 2 опции для просмотра PDF-файлов. Вы можете использовать Chrome pdf viewer (по умолчанию) или Adobe Reader

можете ли вы проверить chrome: / / plugins (введите его в адресной строке) ? и переключитесь на другой просмотрщик PDF (Chrome / Adobe), просто включив его !


возможно, это проблема с сгенерированным pdf. Если он работает в firefox, загрузите файл и попробуйте открыть его. И если PDF viewer в вас выходы ПК поврежденный pdf, тогда вам может потребоваться настроить свой код. Я сталкиваюсь с той же проблемой. Chrome не откроет его из-за поврежденного pdf-файла.

Надеюсь, мой ответ позволит вам отправиться в путешествие отладки. Овации. : D


Это также происходит, когда вы используете библиотеку html в PDF, такую как mPDF, и каким-то образом вы отправляете HTML в браузер перед отправкой файла. Многие читатели игнорируют HTML перед чтением разметки PDF - Chrome не делает.

например, в PHP очистите выходной буфер перед отправкой данных в mPDF:ob_clean().


в моем случае html текущей страницы был отправлен в pdf (я вижу его, когда открываю pdf с помощью простого текстового редактора).

решение для меня флеш + ob_clean перед отправкой заголовка

ob_clean();
flush();
header("Content-type:application/pdf");
header("Content-Disposition:attachment;filename='downloaded.pdf'"); 
echo $result; 
exit;

следующий блок кода сделал работу для меня в C# для случая открытия Chrome в браузере pdf с MemoryStream:

MemoryStream ms;
ms = new MemoryStream(result.ResponseData[0].Report);
HttpContext context = HttpContext.Current;
HttpContext context = HttpContext.Current;
context.Response.Clear();
context.Response.ClearContent();
context.Response.ClearHeaders();
context.Response.ContentType = "application/pdf";
context.Response.AddHeader("Content-Disposition", "inline;filename=" + Guid.NewGuid().ToString() + "." + _exportType);
context.Response.AddHeader("Content-Length", ms.Length.ToString());            
context.Response.BinaryWrite(ms.ToArray());            
context.Response.Flush();
context.Response.Close();
context.Response.End();