afficher un pdf dans un nouvel onglet

Petit nouveau ! | 1 Messages

30 juil. 2019, 10:56

Bonjour,
pour contourner le blocage de popup généré en javascript avec "window.open", je souhaite afficher un pdf dans un nouvel onglet avec du php et "header()", le choix du pdf s'effectuant à partir d'une liste déroulante.

voici mon code :

Code : Tout sélectionner

<form method="post" action="index.php"> <select name="filename"> <optgroup label="EUROPE"> <option value="https://www.monsite.fr/monpdfFR.pdf">Français </option> <option value="https://www.monsite.fr/monpdfEN.pdf">Anglais </option> </optgroup> </select> <input type="submit" value="télécharger" /> </form> <?php if(isset($_POST['filename'])){ $file = $_POST['filename']; header('Content-type: application/pdf'); header('Content-Disposition: inline; filename="' . $file . '"'); header('Content-Transfer-Encoding: binary'); header('Content-Length: ' . filesize($file)); header('Accept-Ranges: bytes'); @readfile($file); } ?>
La création d'un nouvel onglet dans le navigateur a bien lieu, les urls des pdfs sont valides, mais pas moyen de voir le pdf sélectionné s'afficher correctement. UN message d'erreur suivant apparait : "Erreur - Échec de chargement du document PDF."

Par contre quand j'utilise uniquement cette ligne

Code : Tout sélectionner

header('Location:'.$file);
le pdf s'affiche bien mais dans le même onglet, ce que je souhaiterai éviter.

N'ayant pas trouver de ressources sur ce cas précis, je partage mon problème en espérant trouver de l'aide ! auriez-vous des idées ? :priere: :priere: :priere:

Merci d'avance

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

30 juil. 2019, 13:57

"Erreur - Échec de chargement du document PDF."
En général ça veut dire que tu as mis un header('Content-type: application/pdf') mais que derrière ce n'est pas un fichier PDF valide que tu envoies, probablement parce que du HTML affiché ou des messages d'erreur.

Pour debuguer facilement, mets en commentaire ce header, et regarde si tu as des messages d'erreurs ou du HTML qui traine. Si tu n'as que des caractères incompréhensibles, c'est le binaire du PDF et donc ça devrait être bon.
Quand tout le reste a échoué, lisez le mode d'emploi...