[RESOLU] Mon fichier pdf ne s'ouvre pas dans une nouvelle fenêtre alors que...

Eléphant du PHP | 363 Messages

09 oct. 2015, 11:41

Bonjour,

Je n'arrive pas à comprendre pourquoi malgré le fait de mettre l'attribut target="_blank" mes fichiers PDF ne s'ouvrent pas dans un nouvel onglet comme demandé (ça me propose le téléchargement) alors que si je vais sur internet sur un autre site ça marche donc ça vient pas de mon navigateur à priori.

C'est au niveau du serveur ? Il y a un moyen de contourner le problème ?

Merci de votre aide.

Fée
Dis-donc fossoyeur, t'as une dent contre moi ou quoi ?

ViPHP
xTG
ViPHP | 7331 Messages

09 oct. 2015, 13:22

L'attribut target n'est plus dans les normes et donc n'est plus applicable.
Il faut gérer cela avec du javascript il me semble pour ouvrir un seconde fenêtre maintenant.

Eléphant du PHP | 363 Messages

09 oct. 2015, 14:28

Merci de ton aide xTG.

J'ai essayé en javascript et jquery mais dès que la nouvelle fenêtre s'ouvre elle se referme pour laisser place à la fenêtre de téléchargement.

Sur pleins de sites je clique sur le lien pdf et je n'ai pas ce comportement

Exemple : http://deflame.com/
Click here for the DeFlaming Guidelines, which will open as a PDF document that you can print. The Deflaming Guidelines provide the important details about how to reduce inflammation (deflame) with diet and nutritional supplements.

C'est le même code que moi :
<a href="http://deflame.com/wp-content/uploads/2 ... s-2012.pdf" target="_blank" >DeFlaming Guidelines</a>

Et ça, ça marche, moi non :cry:
Dis-donc fossoyeur, t'as une dent contre moi ou quoi ?

Mammouth du PHP | 1341 Messages

09 oct. 2015, 14:44

il y a 2 possibilitées pour un pdf, l'ouvrir normalement comme une page html ou focer le téléchargement. dans ton cas, quelque chose force le téléchargement, peut-être un fichier .htaccess

Eléphant du PHP | 363 Messages

09 oct. 2015, 14:58

Bonjour or1,

Donc ça peut venir d'un htaccess, là je comprends mieux :)
Ca peut venir d'apache ou autre chose ?
On peut outrepasser cette règle dans la page ? J'imagine que non, mais bon on ne sait jamais ;)
Dis-donc fossoyeur, t'as une dent contre moi ou quoi ?

ViPHP
xTG
ViPHP | 7331 Messages

09 oct. 2015, 15:57

En utilisant un script PHP qui s'interface entre toi et le fichier (script de téléchargement) c'est possible en jouant sur le header de la réponse.
C'est typiquement ce que fait wordpress il me semble.

Mais il y a possibilité en effet je pense de jouer directement sur un .htaccess pour dire que ces extensions auront tel header en plus.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 8464 Messages

09 oct. 2015, 17:01

Il faut que ton serveur renvoie le header Content-Type: application/pdf

1) Soit tu édites ton fichier de conf Apache httpd.conf pour ajouter ça :

Code : Tout sélectionner

<FilesMatch "\.(?i:pdf)$"> ForceType application/pdf </FilesMatch>
2) Soit tu ajoutes un fichier .htaccess avec le contenu suivant :

Code : Tout sélectionner

AddType application/pdf .pdf
3) Soit tu fais un fichier PHP qui va servir de proxy pour forcer le header
<?php
header("Content-Type: application/pdf");
readfile('TON_FICHIER.pdf');
L'attribut target n'est plus dans les normes et donc n'est plus applicable.
Il faut gérer cela avec du javascript il me semble pour ouvrir un seconde fenêtre maintenant.
Je m'inscris en faux ! ;-)
On peut toujours utiliser target : http://www.w3.org/TR/html-markup/a.html#a.attrs.target
(cf la note)
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 363 Messages

12 oct. 2015, 09:50

Kikoo, merci pour tout, ça marche, c'était bien ça :)
Dis-donc fossoyeur, t'as une dent contre moi ou quoi ?

ViPHP
xTG
ViPHP | 7331 Messages

12 oct. 2015, 10:37

L'attribut target n'est plus dans les normes et donc n'est plus applicable.
Il faut gérer cela avec du javascript il me semble pour ouvrir un seconde fenêtre maintenant.
Je m'inscris en faux ! ;-)
On peut toujours utiliser target : http://www.w3.org/TR/html-markup/a.html#a.attrs.target
(cf la note)
Ah bon à savoir !