Je souhaite afficher les fichiers PDF de mes utilisateurs. La raison pour laquelle j'utilise cgi pour afficher le pdf est que je veux suivre les clics pour le pdf et masquer l'emplacement réel du pdf enregistré.
J'ai fait des recherches sur Internet et je n'ai trouvé que comment afficher la boîte de dialogue d'enregistrement aux utilisateurs et créer un pdf, sans montrer les fichiers aux utilisateurs.
Ce que je voulais, c'est montrer aux utilisateurs mes fichiers pdf, pas créer ou télécharger le pdf. Voici ce que j'ai obtenu de la documentation officielle de php:
<?php
header('Content-type: application/pdf');
readfile('the.pdf');
?>
Aussi mon code perl de résultat de recherche Google:
open(PDF, "the.pdf") or die "could not open PDF [$!]";
binmode PDF;
my $output = do { local $/; <PDF> };
close (PDF);
print "Content-Type: application/pdf\n";
print "Content-Length: " .length($output) . "\n\n";
print $output
si vous le faites sur rubis, dites-le moi s'il vous plaît. Mais je ne sais pas si mon serveur prend en charge les rails.
Désolé si mon code est trop éloigné de la méthode pour afficher le pdf, car je ne sais rien sur le traitement des pdf et comment implémenter ce problème.
Supposons que les utilisateurs disposent du plug-in Adobe Reader. Alors, comment résoudre mon problème?
edit : Je veux afficher le fichier pdf brut. Mon objectif principal: suivre mes fichiers pdf et utiliser des URL sophistiquées.
edit : Voici mon code php principal:
<?php
$file='/files/the.pdf';
header('Content-type: application/pdf');
header('Content-Disposition: inline; filename="the.pdf"');
@readfile($file);
?>
edit : Maintenant, le code fonctionne. Mais la barre de progression du chargement (sur le plugin Adobe Reader X) ne s'affiche pas. Pourquoi? Est-ce que quelqu'un peut m'aider? Voici mon code principal:
<?php
$file='./files/the.pdf';
header('Content-type: application/pdf');
header('Content-Disposition: inline; filename="the.pdf"');
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($file));
@readfile($file);
?>
edit : Tous mes problèmes sont résolus. Voici le code final:
<?php
$file = './path/to/the.pdf';
$filename = 'Custom file name for the.pdf'; /* Note: Always use .pdf at the end. */
header('Content-type: application/pdf');
header('Content-Disposition: inline; filename="' . $filename . '"');
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($file));
header('Accept-Ranges: bytes');
@readfile($file);
?>
Merci! :)
Réponses:
Je suppose que vous voulez que le PDF s'affiche dans le navigateur, plutôt que de forcer un téléchargement. Si tel est le cas, essayez de définir l'en-
Content-Disposition
tête avec une valeur deinline
.Souvenez-vous également que cela sera également affecté par les paramètres du navigateur - certains navigateurs peuvent être configurés pour toujours télécharger les fichiers PDF ou les ouvrir dans une autre application (par exemple Adobe Reader)
la source
Testé et fonctionne très bien. Si vous souhaitez que le fichier soit téléchargé à la place, remplacez
avec
la source
Vous pouvez modifier un moteur de rendu PDF tel que xpdf ou prouver le rendu dans une image graphique sur votre serveur, puis fournir l'image à l'utilisateur. C'est ainsi que la vue rapide de Google sur les fichiers PDF fonctionne, ils le rendent localement, puis fournissent des images à l'utilisateur. Aucun fichier PDF téléchargé, et la source est assez bien obscurcie. :)
la source
Le moyen le plus sûr d'avoir un affichage PDF au lieu de le télécharger semble être de l'incorporer à l'aide d'un élément
object
ouiframe
. Il existe également des solutions tierces telles que la visionneuse PDF de Google.Voir Meilleure façon d'incorporer un PDF dans HTML pour un aperçu.
Il existe également DoPDF , un visualiseur PDF intégré au navigateur basé sur Java. Je ne peux pas parler de sa qualité mais ça a l'air intéressant.
la source
Vous pouvez également utiliser la classe fpdf disponible sur: http://www.fpdf.org . Il donne des options pour la sortie dans un fichier et l'affichage sur le navigateur.
la source