web-dev-qa-db-fra.com

Échec du chargement PDF document en navigateur chrome

J'utilise la bibliothèque mPDF pour générer des fichiers PDF à partir d'une page HTML. Cela fonctionne bien dans Firefox mais il n’affiche pas le fichier PDF dans le navigateur Chrome.

Je reçois une erreur de suivi lorsque je génère PDF en chrome.

 Getting error in chrome browser while generating PDF

Voici mon code pour générer PDF à l'aide de 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();
9
Ketav Chotaliya

C'est un problème que les gens rencontraient avec une version beaucoup plus ancienne de Chrome. Si vous voyez toujours ce problème, procédez comme suit.

Dans Google Chrome, vous disposez de 2 options pour afficher les fichiers PDF. Vous pouvez utiliser le visualiseur PDF Chrome (par défaut) ou Adobe Reader.

Pouvez-vous vérifier chrome: // plugins (tapez-le dans la barre d'adresse)? et basculez vers un autre visualiseur PDF (Chrome/Adobe) simplement en l'activant!

0
Parthiban K

C'est peut-être le problème avec le pdf généré . Si cela fonctionne sur Firefox, téléchargez le fichier et essayez de l'ouvrir. Et si pdf viewer in you pc output  pdf corrompu , alors vous devrez peut-être modifier votre code. Je suis confronté au même problème. Chrome ne l'ouvrira pas à cause du pdf corrompu.

J'espère que ma réponse vous laissera faire un voyage de débogage. À votre santé. :RÉ

5
Hamad Rakshani

Dans mon cas, le html de la page en cours a été envoyé au format pdf (je le vois quand j'ouvre le pdf avec un simple éditeur de texte).

Solution pour moi flush + ob_clean avant d'envoyer l'en-tête

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

Cela se produit également lorsque vous utilisez un fichier HTML dans une bibliothèque PDF, telle que mPDF, et que vous envoyez en quelque sorte du HTML au navigateur avant d'envoyer le fichier. De nombreux lecteurs ignorent le code HTML avant de lire le balisage PDF, ce qui n'est pas le cas de Chrome.

Par exemple, en PHP, effacez votre tampon de sortie avant d’envoyer les données à mPDF: ob_clean().

1
jorisw

Le bloc de code suivant a fait le travail pour moi en C # pour le cas de Chrome dans un navigateur PDF s'ouvrant avec 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();
0
Askeroglu