Extraire pdf d'une pièce jointe [Résolu]

Signaler
Messages postés
4
Date d'inscription
mardi 4 novembre 2003
Statut
Membre
Dernière intervention
5 septembre 2007
-
Messages postés
4
Date d'inscription
mardi 4 novembre 2003
Statut
Membre
Dernière intervention
5 septembre 2007
-
Bonjour à tous,

je suis en train de développer un client mail avec l'API javaMail qui va chercher les mails sur une boite POP.
Mon appli doit extraire la pièce jointe du mail, qui en l'occurrence est un fichier pdf.
Malheureusement lorsque que je crée le pdf sur la machine j'obtiens que des pages blanches.
voilà mon code :

                for ( int i=0 ; i<n ; i++) {
                    Part part = ((Multipart) content).getBodyPart(i);
                    String disposition = part.getDisposition();
                   
                    if ((disposition != null)&&((disposition.equals(Part.ATTACHMENT)||(disposition.equals(Part.INLINE))))
                            && (!part.getContentType().startsWith("text/plain") || !part.getContentType().startsWith("text/html"))) {
           
                        // extraction du pdf et enregistrement dans le répertoire correspondant
                        String fileName = createFileName(dirFile,part.getFileName());
                        save = new File( dirFile + fileName);
                        FileOutputStream ecriture = new FileOutputStream(save);
                       
                        InputStreamReader lecture = new InputStreamReader(part.getInputStream());
                        int flux;
                        while ((flux = lecture.read())!=-1) {
                            ecriture.write(flux);
                        }
                        lecture.close();
                        ecriture.close();

                    }
                }

merci d'avance

5 réponses

Messages postés
5351
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
17 août 2020
97
Salut,

autant pour moi j'ai zappé le ! ^^

essai de faire d'utiliser les charset exemple :
String encoding = "8859_1"; //ou UTF-8 à voir
InputStreamReader lecture = new InputStreamReader(part.getInputStream(), encoding);
BufferedWriter ecriture = new BufferedWriter(new OutputStreamWriter(
                    new FileOutputStream(filename), encoding));

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
Messages postés
5351
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
17 août 2020
97
Salut,

avant toute chose le mime-type d'un pdf n'est pas de type "text/plain" et encore moins "text/html" mais de type "application/pdf" donc ton if n'est pas valide

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
Messages postés
4
Date d'inscription
mardi 4 novembre 2003
Statut
Membre
Dernière intervention
5 septembre 2007

Salut,

mon if est correct.
si tu regarde bien, il y a un "!" devant mes tests avec "text/plain" et "text/html" donc le traitement de mon pdf est correct.
Le problème c'est lors de la création du fichier et de l'écriture dans celui-ci. Il doit y avoir un souci d'encodage lors de l'écriture dans le pdf.
J'ai comparé mon pdf original et celui créé par l'appli avec un comparateur, et le texte des 2 documents ne diffère pas beaucoup. Apparrement des "?" remplace des caractères dans le nouveau document.

Je ne sais pas quoi faire.
Messages postés
4
Date d'inscription
mardi 4 novembre 2003
Statut
Membre
Dernière intervention
5 septembre 2007

Trop fort
ça marche avec l'encoding 8859_1
par contre avec UTF-8, ça ne marche pas

Merci beaucoup pour ton aide
Messages postés
4
Date d'inscription
mardi 4 novembre 2003
Statut
Membre
Dernière intervention
5 septembre 2007

Encore merci
tu m'as enlevé une grosse épine du pied !