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! :)