11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous,

Voilà je voudrais que lors du clique sur un lien, ça télécharge le fichier .pdf et ça ne lance pas l'aperçus du navigateur sur lequel on est; Firefox, Safari, Chrome ont leur aperçus PDF, du coup le .pdf s'affiche dans le navigateur or je voudrais qu'il se télécharge directement.

Comment y procéder ?

Mon code :


<script type="text/javascript">
$(document).ready( function(){
 $('a#buttonDownloadPdf').click( function(){
  var file = $(this).attr('title');
  window.location=file;
  return false;
 });
});
</script>



echo '<a id="buttonDownloadPdf" href="#" title="'.$symbolLinkAvoir.'/RB'.$avoirId.'.pdf"><img src="images/logoPDF.png" width="50px"/></a>';


Modifié par tonymx15 (21 Jun 2012 - 14:17)
Bonjour,

Je ne vois pas l'utilité de forcer un comportement à un utilisateur surtout qu'un bouton télécharger est présent sur le lecteur intégré au navigateur.

Cela dit, la solution est côté serveur. Tu devras changer le header HTTP envoyé lors de la requête.

P.S.: Ton code javascript est inutile puisqu'un lien <a> pointant vers un fichier amène au même résultat
Modérateur
Vaxilart a écrit :
Je ne vois pas l'utilité de forcer un comportement à un utilisateur surtout qu'un bouton télécharger est présent sur le lecteur intégré au navigateur.

Je viens d'avoir récemment un cas où ça posait problème, le lecteur intégré à chrome gère mal les pdf et imprime n'importe comment. Pour nos utilisateurs, le report généré par une application posait ainsi des problèmes. Afin d'éviter de compliquer la formation utilisateur, «forcer» le téléchargement est devenu l'option la plus raisonnable.

En gros il faut faire un lien vers une ressource, envoyer le bon header (application/pdf) et mettre le pdf en Content-Disposition: attachment