Не удалось загрузить PDF-документ в браузере chrome
Я использую библиотеку mPDF для создания PDF-файлов с HTML-страницы. Он работает хорошо в firefox, но он не отображает PDF-файл в браузере chrome.
Я получаю следующую ошибку при создании PDF в chrome.
Ниже приведен мой код для создания 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();