2010-10-26 7 views
1

J'ai une classe Java qui génère un fichier PDF dans un dossier de mon ordinateur. J'ai réussi à connecter cette classe à un lien sur une application web et quand je clique sur ce lien, il génère le pdf et l'écrit dans le dossier sur mon ordinateur. Je voudrais changer cela et avoir le lien envoyer le pdf au navigateur à la place. Comment puis-je faire ceci? La classe n'utilise pas HttpRequests ou similaire et le lien n'est pas un lien hypertexte atm. Je suis à la recherche de la façon la plus directe d'envoyer un pdf au navigateur.Comment envoyer un PDF au navigateur à partir d'une application Web Java?

+0

envoyer un pdf au navigateur? Voulez-vous dire "ouvrir/afficher le pdf dans le navigateur"? – pinichi

Répondre

0

Vous devriez être en mesure d'écrire le pdf dans un flux, vous pouvez lui transmettre le flux de sortie de votre réponse.

2
/* Java Code */ 
response.setContentType("application/pdf"); 
response.setHeader("Content-Disposition", "attachment; filename=path/to/file.pdf"); 
0

Il y a plusieurs façons de le faire:

  1. placer le fichier PDF sur un endroit disponible à partir du Web, puis rediriger l'utilisateur à l'URL, qui le conduira vers un fichier PDF (si votre web le serveur le supporte). La redirection peut être facilement effectuée avec l'en-tête HTTP "Location".

  2. Envoyer le fichier PDF dans le flux de réponse HTTP. Notez que vous devrez définir le type Mime correspondant dans l'en-tête HTTP. La mise en œuvre dépend du serveur web/framework web que vous utilisez dans votre application.

+0

http://developers.itextpdf.com/question/how-can-i-serve-pdf-browser-without-storing-file-server-side –

1

i l'imprimer (tout type de fichier) dans le flux de réponse d'un tableau d'octets, dans un servlet

if(content != null) 
       { 
        response.setContentType("application/octet-stream"); 
              response.setHeader("Content-Disposition", "attachment; filename=\"" + fname + "\""); 
       response.setContentLength(content.length); 
       out.write(content); 
      }//where content is byte[]