Comment puis-je afficher un fichier PDF sur une page JSF
Je veux afficher un fichier PDF sur mon JSF page, j'ai vérifier ce comment faire pour afficher un document pdf dans jsf page dans un iFrame, mais je ne veux pas l'afficher sur un iframe(car il va générer de la barre de défilement). Je veux juste afficher le fichier pdf sur une page comme une image et capable de donner une largeur et une hauteur pour elle.
MODIFIER Hi BalusC. J'ai toujours ne peux pas être en mesure d'afficher le pdf en ligne. Voici mon code.
@WebServlet(name = "pdfHandler", urlPatterns = {"/pdfHandler/*"})
public class pdfHandler extends HttpServlet {
private static final int DEFAULT_BUFFER_SIZE = 10240;
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String requestedFile = request.getPathInfo();
File file = new File("/Users/KingdomHeart/Downloads/Test/pdf/" + requestedFile);
response.reset();
response.setContentType("application/pdf");
response.setBufferSize(DEFAULT_BUFFER_SIZE);
response.setHeader("Content-Length", String.valueOf(file.length()));
response.setHeader("Content-Disposition", "inline; filename=\"" + file.getName() + "\"");
BufferedInputStream input = null;
BufferedOutputStream output = null;
try{
input = new BufferedInputStream(new FileInputStream(file), DEFAULT_BUFFER_SIZE);
output = new BufferedOutputStream(response.getOutputStream(), DEFAULT_BUFFER_SIZE);
byte[] buffer = new byte[DEFAULT_BUFFER_SIZE];
int length;
while((length = input.read(buffer)) > 0){
output.write(buffer, 0, length);
}
}finally{
output.close();
input.close();
}
}
...
}
- Il encore m'inviter à télécharger le fichier pdf. Le fichier pdf téléchargés à mon ordinateur est correcte pdf fichier btw. U peut repérer quelque chose de mal?
- Tout d'abord, vérifiez que vous avez le Adobe Reader plugin est installé sur votre navigateur. Pouvez-vous visualiser les documents PDF, à l'intérieur votre navigateur, ou encore de la demande pour les télécharger?
Vous devez vous connecter pour publier un commentaire.
Il n'y a pas vraiment d'une autre façon (attendre de HTML
<object>
balise qui auraient les mêmes "problèmes"), mais vous pouvez simplement donner de l'<iframe>
une taille fixe et de désactiver le défilement comme suit:Si vous aussi vous voulez cacher l' (par défaut) de la bordure, ajouter
frameBorder="0"
ainsi.Content-Disposition
en-tête de réponse àinline
(par défaut) au lieu deattachment
. Voir aussi la réponse qui vous a lié pour la ligne de code qui fait ça.Vous devriez jeter un oeil à ICEpdf, il crée une image sur le côté serveur, donne le zoom, et d'autres contrôles (démo).
Essayez d'aller dans Adobe Reader, et en vertu de la boîte de dialogue Options il y a des paramètres du site web où vous pouvez indiquer que vous voulez toujours de documents de type PDF pour l'ouvrir dans le navigateur.
C'est malheureusement un correctif côté client et ne prend pas en compte d'autres lecteurs de PDF.
Ce que vous voulez, c'est impossible. Les navigateurs ne sont pas magiques, ils ont juste l'affichage des différents types de documents, dont certains (HTML) peut incorporer des objets fournis par des plugins (flash, java) et d'autres documents à l'intérieur des iframes (pdf, flash, html). Si vous souhaitez afficher du pdf miniatures, vous devrez générer des images sur le serveur.