Pour indiquer au navigateur que le fichier doit être affiché dans le navigateur, la réponse HTTP doit inclure les en-têtes suivants:
Content-Type: application/pdf
Content-Disposition: inline; filename="filename.pdf"
Pour télécharger le fichier plutôt que le visualiser:
Content-Type: application/pdf
Content-Disposition: attachment; filename="filename.pdf"
Les guillemets autour du nom de fichier sont requis si le nom de fichier contient des caractères spéciaux tels que ceux filename[1].pdf
qui pourraient autrement briser la capacité du navigateur à gérer la réponse.
La façon dont vous définissez les en-têtes de réponse HTTP dépendra de votre serveur HTTP (ou, si vous générez la réponse PDF à partir du code côté serveur: votre langage de programmation côté serveur).
Si vous utilisez HTML5 (et je suppose que tout le monde l'utilise de nos jours), il existe un attribut appelé
download
.Par exemple,
Voici
filename
facultatif, mais s'il est fourni, il prendra ce nom pour le fichier téléchargé.la source
Le type correct est
application/pdf
pour PDF, nonapplication/force-download
. Cela ressemble à un hack pour certains navigateurs hérités. Utilisez toujours le type MIME correct si vous le pouvez.Si vous contrôlez le code du serveur:
header("Content-Disposition", "attachment; filename=myfilename.myextension");
header("Content-Disposition", "inline; filename=myfilename.myextension");
Aucun contrôle sur le code du serveur:
REMARQUE: je préfère définir le nom de fichier côté serveur car vous pouvez avoir plus d'informations et utiliser le code commun.
la source
Si vous avez Apache, ajoutez ceci au
.htaccess
fichier:la source
Oups, il y avait des erreurs de frappe dans mon post précédent.
Si vous ne voulez pas que le navigateur invite l'utilisateur, utilisez "inline" pour la troisième chaîne au lieu de "attachment". Inline fonctionne très bien. Le PDF s'affiche immédiatement sans demander à l'utilisateur de cliquer sur Ouvrir. J'ai utilisé "pièce jointe" et cela invitera l'utilisateur à ouvrir, enregistrer. J'ai essayé de changer l'écrou des paramètres du navigateur, cela n'empêche pas l'invite.
la source
C'est pour ASP.NET MVC
Dans votre page cshtml:
Dans votre contrôleur:
la source
Bien que ce qui suit fonctionne bien sur Firefox, il ne fonctionne PAS sur les navigateurs Chrome et mobiles.
Pour corriger l'erreur des navigateurs Chrome et mobiles, procédez comme suit:
Google PDF Viewer peut être utilisé comme suit:
la source
Ouvrez downloads.php à partir du fichier racine.
Passez ensuite à la ligne 186 et modifiez-la comme suit:
la source
Vous pouvez le faire de la manière suivante:
Si le fichier PDF se trouve dans un dossier et que ce dossier n'est pas autorisé à accéder directement aux fichiers de ce dossier, vous devez contourner certaines restrictions d'accès aux
.htaccess
fichiers en utilisant le paramètre de fichier de cette façon:Mais permettez maintenant juste certain fichiers nécessaires.
J'ai utilisé ce code et cela a parfaitement fonctionné.
la source
Soit utiliser
<embed src="file.pdf" />
si l'intégration est une option ou mon nouveau plugin, PIFF: https://github.com/terrasoftlabs/piff
la source
Voici une autre méthode pour forcer un fichier à afficher dans le navigateur en PHP:
la source
header
ne fonctionne pas après que vous ayez commencé à sortir le corps de la requête (et il ne retourne pas de chaîne pour la concaténation dans un document HTML)Ouvrez simplement Adobe Reader, menu → Édition → Préférences → Internet , puis passez en mode navigateur ou pour obtenir des instructions détaillées sur différents navigateurs, essayez Afficher PDF dans le navigateur | Acrobat, Acrobat Reader .
la source
Si vous créez un lien vers un .PDF, il s'ouvrira dans le navigateur.
Si la case n'est pas cochée, elle doit être liée à un .zip pour forcer le téléchargement.
Si un .zip n'est pas une option, utilisez des en- têtes en PHP pour forcer le téléchargement
la source