Problème API itext

Problème API itext - Java - Programmation

Marsh Posté le 24-11-2008 à 17:04:15    

bonjour,
je suis entrain de développer une application web en utilisant le framework Struts. J'ai un formulaire avec un bouton editer qui permet d'editer la page courante en pdf. Le problème c'est que mon programme s'execute bien comme il faut mais le fichier (pdf) ne s'ouvre pas.
 
Programme :
public class HelloWorld {
 
 private final static String out = "contents2.pdf";
 
 public static void main(String[] args) {
 
 // etape 1
 Document document = new Document(PageSize.A4);
         
 try {
            // etape 2:
            // creation du writer -> PDF ou HTML  
            PdfWriter.getInstance(document, new FileOutputStream(out));
                       
            // etape 3: Ouverture du document
            document.open();
           
            // etape 4: Ajout du contenu au document
            document.add(new Phrase("Hello World" ));
           
        }
        catch(DocumentException de) {
            System.err.println(de.getMessage());
        }
        catch(IOException ioe) {
            System.err.println(ioe.getMessage());
        }
        // etape 5: Fermeture du document
        document.close();
        System.out.println("Document '"+out+"' generated" );
 }
}
 
 
NB: à la fin j'ai bien "Document 'contents2.pdf' generated", mais le fichier n'est pas ouvert.
 
Savez vous l'origine du pb ?

Reply

Marsh Posté le 24-11-2008 à 17:04:15   

Reply

Marsh Posté le 24-11-2008 à 17:30:56    

help please !!!!

Reply

Marsh Posté le 24-11-2008 à 18:09:46    

Ce que tu nous montres là n'a rien à voir avec une appli web et Struts.
Ton programme HelloWorld écrit le résultat dans un fichier sur le disque.
 

Reply

Marsh Posté le 24-11-2008 à 22:22:54    

oué je c bien, mais c t juste un exemple. En fait dans mon action j'ai mis la partie suivante :
 
 String out = "contents2.pdf";
 // etape 1
 Document document = new Document(PageSize.A4);
         
 try {
            // etape 2:
            // creation du writer -> PDF ou HTML  
            PdfWriter.getInstance(document, new FileOutputStream(out));
                       
            // etape 3: Ouverture du document
            document.open();
           
            // etape 4: Ajout du contenu au document
            document.add(new Phrase("Hello World" ));
           
        }
        catch(DocumentException de) {
            System.err.println(de.getMessage());
        }
        catch(IOException ioe) {
            System.err.println(ioe.getMessage());
        }
        // etape 5: Fermeture du document
        document.close();
        System.out.println("Document '"+out+"' generated" );
 }

Reply

Marsh Posté le 24-11-2008 à 23:05:48    

En fait je souhaite avoir un exemple de code qui permet de générer un pdf à partir d'une JSP.


Message édité par figosat le 24-11-2008 à 23:05:56
Reply

Marsh Posté le 25-11-2008 à 10:15:34    

Donc dans ton exemple, tu écris aussi ton PDF dans un fichier sur le disque.
 
Ce que tu veux, c'est renvoyer le Pdf dans l'OutputStream de la réponse Http :

Code :
  1. // en supposant que la méthode définisse un param HttpServletResponse response
  2. response.getOutputStream()


 
Il faut aussi spécifier le content type qui va bien :

Code :
  1. response.setContentType("application/pdf" );


 
Cf. Tutorial pour plus d'infos
 

Reply

Marsh Posté le 25-11-2008 à 11:09:16    

Merci pour ton aide, ça marche

Reply

Marsh Posté le 25-11-2008 à 11:31:27    

Un petit détail encore svp  ;) , comment faire pour laisser le choix à l'utilisateur entre ouvrir le document ou le sauvegarder sur le disque ?  

Reply

Marsh Posté le 25-11-2008 à 13:53:32    

Ça dépend de la configuration du navigateur.

 

Tu peux tester en positionnant le header suivant :

 
Code :
  1. String fileName = "toto.pdf";
  2. response.addHeader("Content-disposition", "attachment; filename=\"" + fileName +"\"" );
  


Message édité par Bidem le 25-11-2008 à 13:53:52
Reply

Marsh Posté le 25-11-2008 à 17:49:53    

Merci bcp bidem.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed