Vendredi 26 sept

Forcer le téléchargement des .PDF

PHPAvec certains logiciels de lecture PDF, notamment le plus répandu Adobe Acrobat Reader, le réglage par défaut ouvre les PDF dans le navigateur quand on clique sur un lien vers un PDF.

En tant que webmaster vous pouvez forcer la boite de dialogue du navigateur permettant de choisir de l'ouvrir directement ou de l'enregistrer. :-)

Tout d'abord, vous avez besoin de créer un petit fichier PHP qui contient ceci:

<?php
if (file_exists ($_GET['f']))
{
  header('Content-type: application/force-download');
  header('Content-Disposition: attachment; filename=' . basename ($_GET['f']));
  readfile($_GET['f']);
}
else
{
  header('HTTP/1.0 404 Not Found');
  echo 'Erreur, ce fichier n\'existe pas.';
}
?>

Que fait ce script? Il envoie une entête disant au navigateur qu'il faut forcer le téléchargement pour ce fichier, puis le nom à proposer dans la boite de dialogue, et enfin envoie le fichier.

Si le fichier n'existe pas, il renvoie une erreur 404. Le message d'erreur peut être embelli, voire inclus dans le design de votre site. ;-)

J'appelle ce fichier _pdf.php. Ensuite, il faut pouvoir passer par ce fichier lorsqu'on met un lien vers un PDF.


1er cas, votre serveur supporte la réécriture d'adresse

C'est le plus simple, il suffit de rajouter ceci ou créer un fichier .htaccess avec ceci:

RewriteEngine on
RewriteRule ^(.*).pdf$
_pdf.php?f=$1 [L]

Au lieu d'ouvrir un fichier .pdf directement, cela l'envoie au fichier _pdf.php qui va donc forcer le téléchargement.

2d cas, votre ne supporte pas la réécriture d'URL

Ça sera plus fastidieux puisqu'il faudra réécrire à la main :-| les liens vers les PDF. Au lieu d'un lien vers fichier.pdf mettre :arrow: _pdf.php?f=fichier.pdf

Si vous ne savez pas dans quel cas vous êtes, essayez le 1er, si ça ne marche pas c'est cette seconde solution qu'il faut choisir.


   Agrégateur informatique

Laisser un commentaire

I follow

© Azur Dev Actualité informatique & tutoriels PHP Thème d'après Greenline + PHP HTML

ThemeWordpress
Azur Dev