IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Documents Java Discussion :

[itext] problème d'ouverture et sauvegarde pdf


Sujet :

Documents Java

  1. #1
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    Par défaut [itext] problème d'ouverture et sauvegarde pdf
    Bonjour,

    je viens de commencer avec itext. J'ai essayé de faire un truc tout bête mais il ne fonctionne pas. Je veux ouvrir un pdf existant et ensuite le sauvegarder dans un autre répertoire. Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    try {	
    				PdfReader reader = new PdfReader("C:\\Temp\\pdfVide\\pdf_vierge.pdf");
    				PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("C:\\Temp\\pdfRempli\\pdf_rempli.pdf"));			
     
     
     
     
     
     
    		    	stamper.close();			
     
    			}catch (IOException ioe) {
    				ioe.printStackTrace();
    			}catch (DocumentException doce) {
    				doce.printStackTrace();
    			}
    		}
    Le problème c'est que le fichier pdf_rempli.pdf ne se crée pas. Aurais-je oublier quelque chose?

  2. #2
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 18
    Points : 20
    Points
    20
    Par défaut
    Citation Envoyé par kifouillou
    Le problème c'est que le fichier pdf_rempli.pdf ne se crée pas. Aurais-je oublier quelque chose?
    Le fichier pdf_rempli.pdf, même vide, doit exister. Peut-être il y a eu une exception avan la création de PdfStamper.

    Paulo

  3. #3
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    Par défaut
    Merci beaucoup.

    Et comment résoudre cette exception?

  4. #4
    Membre VIP

    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 74
    Points : 104
    Points
    104
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par psoares33
    Le fichier pdf_rempli.pdf, même vide, doit exister. Peut-être il y a eu une exception avant la création de PdfStamper.
    Hé Paulo, soyez le bienvenu! Tu as lu mon blog?

    Moi aussi, je suis 99,9% sur que c'est un problème IO plutôt qu'un problème iText; par exemple:
    - le fichier pdf_vierge.pdf n'existe pas (ou existe, mais pas là où tu le dis)
    - le fichier pdf_vierge.pdf n'est pas un fichier PDF (ou c'est un fichier avec 0 bytes)
    - le répertoire pdfRempli n'existe pas.
    - le répertoire pdfRempli existe, mais le JVM n'a pas le droit d'écrire dans ce répertoire
    - le fichier pdf_rempli.pdf existe déjà et est ouvert dans Adobe Reader.

    Comment résoudre? Cela dépend du type d'exception (que tu as oublié de nous dire).

  5. #5
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    Par défaut
    Bonjour,

    J'ai donc bien regardé,

    - Mon répertoire C:\\Temp\\pdfVide existe bien.
    - Le fichier pdf_vierge est bien ce répertoire et fait 113 ko
    - Le répertoire C:\\Temp\\pdfRempli existe bien également. Mais maintenant mon chemin de destination c'est la racine du disque C: pour être bien certain.
    Donc maintenantc'est "C:\\pdf_rempli.pdf".
    - Adobe Reader n'est pas ouvert.

    Donc j'ai bien vérifié les io et apparemment cela ne viendrait pas de là. Merci de votre aide.

  6. #6
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 18
    Points : 20
    Points
    20
    Par défaut
    Toujours pas d'exception? Je ne crois pas. La simple création de "new FileOutputStream" origine un fichier, vide mais un fichier, et ça c'est avant la création de PdfStamper.

    Paulo

  7. #7
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    Par défaut
    La simple création de "new FileOutputStream" origine un fichier, vide mais un fichier, et ça c'est avant la création de PdfStamper.
    comment cela. Je ne comprends pas très bien .

  8. #8
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 18
    Points : 20
    Points
    20
    Par défaut
    Qu'est ce que tu obtiens avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new FileOutputStream("C:\\pdf_rempli.pdf");
    ?

    Ça origine un fichier en vide. Si tu n'a pas ce fichier c'est parce que il y a eu une exception avant cette ligne. Je ne sais pas quoi dire de plus.

    paulo

  9. #9
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    Par défaut
    Effectivement rien qu'en mettant cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    new FileOutputStream("C:\\pdf_rempli.pdf");
    le fichier vide ne se créé pas. Je ne sais pas trop pourquoi. Il me semblait avoir respecté la syntaxe.

    Encore merci pour votre aide.

  10. #10
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    Par défaut
    Re,

    sa y est j'ai trouvé. J'ai rajouté :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    public class Test {
     
    public static void filling() {
     
    String FormFilled = "C:\\Temp\\pdfRempli\\pdf_rempli.pdf";
    String FormEmpty = "C:\\Temp\\pdfVide\\pdf_vierge.pdf";
     
    try {	
    PdfReader reader = new PdfReader(FormEmpty);
     
    PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(FormFilled));			
     
    PdfContentByte content = stamper.getUnderContent(1);
     
     
    		    	content.endText();
    		    	stamper.close();			
     
    			}catch (IOException ioe) {
    				ioe.printStackTrace();
    			}catch (DocumentException doce) {
    				doce.printStackTrace();
    			}
    		}
    et j'ai remplacé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public static void main(String[] args  ) {		  							
    new Test();
     
    	                                       }
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public static void main(String[] args  ) {		  							
    Test.filling();
     
    	                                       }
    Voilà. Sa fonctionne nikel. Maintenant j'aurais une autre question. Puis-je récupérer des labels d'une classe et les positionner dans mon pdf? Par exemple j'ai créé le label suivant et je voudrais l'afficher dans mon pdf. Pourriez vous me dire ce que je dois rajouter en plus du code précédant permettant de créer le pdf?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    test = new Label(sShell, SWT.NONE);
    		test.setBounds(new Rectangle(100, 10, 43, 18));
    		test.setText("Mama");
    Merci d'avance.

  11. #11
    Membre VIP

    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 74
    Points : 104
    Points
    104
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par kifouillou
    Voilà. Sa fonctionne nikel.
    OMG, ceci n'avait rien à voir avec iText...
    Citation Envoyé par kifouillou
    Puis-je récupérer des labels d'une classe et les positionner dans mon pdf? Par exemple j'ai créé le label suivant et je voudrais l'afficher dans mon pdf. Pourriez vous me dire ce que je dois rajouter en plus du code précédant permettant de créer le pdf?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    test = new Label(sShell, SWT.NONE);
    test.setBounds(new Rectangle(100, 10, 43, 18));
    test.setText("Mama");
    Label est un object SWT; iText supporte seulement des object AWT.

  12. #12
    Membre éclairé
    Avatar de sironimo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 669
    Points : 756
    Points
    756
    Par défaut
    Encore un mauvais point pour SWT
    "Le calendrier, c'est la bureaucratie du temps." Quino

  13. #13
    Membre VIP

    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 74
    Points : 104
    Points
    104
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par sironimo
    Encore un mauvais point pour SWT
    Je n'ai pas d'opinion sur SWT vs. AWT, c'est juste qu'une équipe de developpeurs a jugé qu'il serait utile de pouvoir écrire tout ce qui peut être écrit sur un canvas Graphics2D vers une page en PDF. Cette équipe a contribué la source, et nous avons continué à supporter cette code.

  14. #14
    Membre éclairé
    Avatar de sironimo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 669
    Points : 756
    Points
    756
    Par défaut
    D'accord, merci des précisions.

    ps : encore bravo pour votre travail sur iText que j'utilise beaucoup
    "Le calendrier, c'est la bureaucratie du temps." Quino

  15. #15
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    Par défaut
    Bonjour à tous,

    merci à tous pour vos réponses. Effectivement mon erreur n'avait aucun rapport avec itext.

    Label est un object SWT; iText supporte seulement des object AWT.

    Aie c'est dommage. Bon ben c'est pas très grave c'était pour faire un test. Et il possible par contre de rajouter du texte à mon pdf existant et de le positionner dans le document? Que devrais-je rajouter à mon code existant, un pdfwriter?

    Encore merci à M. Blowagie et à M. Soares. C'est vrai qu'ils font un boulot d'enfer.Bravo.

  16. #16
    Membre VIP

    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 74
    Points : 104
    Points
    104
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par kifouillou
    Et il possible par contre de rajouter du texte à mon pdf existant et de le positionner dans le document?
    Bien sur! C'est ce qu'on fait avec PdfStamper.
    Citation Envoyé par kifouillou
    Que devrais-je rajouter à mon code existant, un pdfwriter?
    Bien sur que non!
    Où as-tu trouvé ton code existant? Je suis sur qu'il y a des examples qui expliquent comment ajouter du texte près de la page où tu l'as trouvé. Sinon il y a toujours Google comme sironimo a déjà dit.

  17. #17
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    Par défaut
    bonjour,

    en fait ce code je l'ai récupéré d'une application existante. On m'a demandé de le réutiliser. Voici le code d'origine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    public static void filling(String formEmpty, String formFilled, Map map) {
     
    try {	
    PdfReader reader = new PdfReader(formEmpty);
     
    PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(formFilled));			
     
    PdfContentByte content = stamper.getUnderContent(1);
    content.beginText();
     
    String key;
    DataFormBean uB;
     
    Iterator iter = map.keySet().iterator();
    while (iter.hasNext()) {
        key = (String) iter.next();
        uB  = (DataFormBean) map.get(key);
     
     
    	BaseFont bf = BaseFont.createFont(uB.getPolice(), 
    									BaseFont.CP1252, 
    									BaseFont.EMBEDDED);			
    	            content.setFontAndSize(bf, uB.getSize());
    	            content.showTextAligned(PdfContentByte.ALIGN_LEFT, 
    	            		uB.getValue(), 
    	            		uB.getPosX(), 
    	            		uB.getPosY(), 
    						0);
    			}
     
    	    	content.endText();
    	    	stamper.close();			
     
    		}catch (IOException ioe) {
    			ioe.printStackTrace();
    		}catch (DocumentException doce) {
    			doce.printStackTrace();
    		}
    	}
    Mais moi pour le moment j'essaie juste de rajouter un petit texte pour bien comprendre comment cela fonctionne. Car apès mes données seront dans une base Hibernate mais je préfère faire étape par étape.

  18. #18
    Membre VIP

    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 74
    Points : 104
    Points
    104
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par kifouillou
    mais je préfère faire étape par étape.
    C'est une bonne idée, mais sur la liste itext-questions@lists.sourceforge.net des questions comme ceci recoivent toujours la réponse: iText is free software, iText is NOT free consultancy.
    Il y a vraiment beaucoup d'exemples qui expliquent ce que tu veux faire en ligne. Il y a aussi le livre. Si tu l'achète chez Manning, tu reçois le eBook gratuit (comme ça tu peux déjà commencer à lire pendant que vous attendez le livre).
    Mais si tu veux être accompagné individuellement, tu vas devoir chercher un enseignant. Pour le moment, je ne donne pas des cours gratuits

  19. #19
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    Par défaut
    Bonsoir,

    je suis allé sur le site :http://www.lowagie.com/iText/tutorial/

    C'est une mine d'or ce site. Bravo aux créateurs. C'est en anglais mais ce n'est vraiment pas difficile à comprendre. Les tutoriaux sont simples. Et pour mon problème de rajouter du texte dans mon pdf et bien je suis allé dans la section pour ajouter du text et j'ai suivi :
    Example: java com.lowagie.examples.directcontent.text.Text

    Un vrai bonheur. C'est tout simple en plus. Encore bravo aux créateurs de cette API.

  20. #20
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    Par défaut
    Bonjour,

    J'ai je pense bien suivi l'exemple sur le site que j'ai cité dans mon précédent post mais le problème c'est que chaine ne s'ajoute pas à mon PDF.
    Voici le code à tout hasard :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    public static void remplissagePDF(String FormVide, String FormRempli){
     
    FormRempli = ("C:\\Temp\\pdfRempli\\pdf_rempli.pdf");
     
     FormVide = ("C:\\Temp\\pdfVide\\pdf_vierge.pdf");
     
    	try {	
     
    PdfReader reader = new PdfReader(FormVide);
     
    PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(FormRempli));			
     
    PdfContentByte content = stamper.getUnderContent(1);
     content.beginText();
     
    BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA,							             BaseFont.CP1252, 
    					           BaseFont.EMBEDDED);			
    content.setFontAndSize(bf, 12);
    		            String text = "Livinfo";
    		            content.showTextAligned(PdfContentByte.ALIGN_CENTER,  text , 250, 600, 0);							
    content.endText();
    stamper.close();

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [CS5] Problème d'ouverture de doc pdf à partir de cd
    Par tatutatu2009 dans le forum ActionScript 1 & ActionScript 2
    Réponses: 0
    Dernier message: 16/04/2011, 00h50
  2. [XL-2003] Ouverture et sauvegarde pdf
    Par Chipss dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 19/08/2010, 11h13
  3. [iText] Problème mise en forme, HTML -> PDF
    Par RamyBoulet dans le forum Documents
    Réponses: 0
    Dernier message: 22/09/2009, 12h54
  4. WSS 3.0 Problème Ouverture de fichier PDF
    Par Infern0 dans le forum SharePoint
    Réponses: 2
    Dernier message: 18/06/2008, 10h30
  5. Problème Weblogic et génération fichier PDF (Itext)
    Par hicham300 dans le forum Weblogic
    Réponses: 1
    Dernier message: 15/01/2007, 18h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo