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 :

extraire texte powerpoint


Sujet :

Documents Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2006
    Messages : 41
    Points : 20
    Points
    20
    Par défaut extraire texte powerpoint
    Bonjour,
    J'aimerai extraire l'intégralité texte d'un fichier Powerpoint, j'ai déja essayé plusieurs méthodes peu satisfaisantes.
    J'aimerai utiliser cette classe
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
     
    import java.io.ByteArrayOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.InputStream;
    import org.apache.lucene.document.Document;
    import org.apache.lucene.document.Field;
     
    import org.apache.poi.poifs.eventfilesystem.POIFSReader;
    import org.apache.poi.poifs.eventfilesystem.POIFSReaderEvent;
    import org.apache.poi.poifs.eventfilesystem.POIFSReaderListener;
    import org.apache.poi.poifs.filesystem.DocumentInputStream;
    import org.apache.poi.util.LittleEndian;
     
    /**
     *
     * @author  Durot
     */
    public class MSPowerPointParser implements YourParserGeneral, POIFSReaderListener {
        private InputStream input;
        private String title;
        private ByteArrayOutputStream writer;
     
        /** Creates a new instance of OooWriter */
        public MSPowerPointParser() {
        }
     
        public Document parse(File file) throws Exception {
            input = new FileInputStream(file);
            title = file.getName().substring(0, file.getName().lastIndexOf("."));
            return parse();
        }
     
        public Document parse(InputStream in) throws Exception {
            this.input = in;
            title = "";
            return parse();
        }
     
        public Document parse(String fileName) throws Exception {
            input = new FileInputStream(fileName);
            title = fileName.substring(0, fileName.lastIndexOf("."));
            return parse();
        }
     
        private Document parse() throws Exception {
            try {
                Document doc = new Document();
     
                doc.add(Field.Text("title", this.title));
                doc.add(Field.Text("contents", this.getContents()));
     
                return doc;
            } catch (Exception ex) {
                throw ex;
            } finally {
                if (input != null) {
                    try {
                        input.close();
                    } catch (Exception ex) {
     
                    }
                }
            }
        }
     
        private String getContents() throws Exception {
            String contents = "";
            try {
                POIFSReader reader = new POIFSReader();
                writer = new ByteArrayOutputStream();
                reader.registerListener(this);
                reader.read(input);
                contents = writer.toString();
            } catch (Exception ex) {
                throw ex;
            }
     
            return contents;
        }
     
        public void processPOIFSReaderEvent(POIFSReaderEvent event) {
            try{
                if(!event.getName().equalsIgnoreCase("PowerPoint Document"))
                    return;
     
                DocumentInputStream input = event.getStream();
     
                byte[] buffer = new byte[input.available()];
                input.read(buffer, 0, input.available());
     
                for(int i=0; i<buffer.length-20; i++) {
                    long type = LittleEndian.getUShort(buffer,i+2);
                    long size = LittleEndian.getUInt(buffer,i+4);
     
                    if(type==4008) {
                        writer.write(buffer, i + 4 + 1, (int) size +3);
                        i = i + 4 + 1 + (int) size - 1;
     
                    }
                    try {
                        Thread.sleep(10);
                    } catch (Exception ex) {
                    }
                }
            } catch (Exception ex) { 
                ex.printStackTrace();
            }
        }
    }
    http://www.jguru.com/faq/view.jsp?EID=1211786

    Cependant mon objet Field ne dispose pas de la méthode .Text(String,String)
    Je suppose qu'elle devait être dans l'implémentation "YourParserGeneral", j'ai cherché une classe à importer pour disposer de cette fonction mais en vain

    Si quelqun aurait une solution ou un code EFFICACE pour extraire du texte d'un powerpoint ça me serait très utile

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2006
    Messages : 41
    Points : 20
    Points
    20
    Par défaut
    Finallement j'ai un peu relu tout le site et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     PowerPointExtractor truc = new PowerPointExtractor(nomtraitement);//nomtraitement est un filename 
     monparser.texteparse = truc.getText();
    Voila , c'est simple et j'ai pas eut de meilleur résultat avec tout ce que j'ai essayé , cependant j'ai toujours ce problème de petit carré quand je stocke mon résultat dans un fichier texte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    try{
                	if (monparser.texteparse.length() > 1){
                progressinfo.setString("sauvegarde des fichiers du résultat : "+a+" "+moteur);
                lien = new FileOutputStream(path+"/"+moteur+" ("+langagechoisi+")/"+"lien"+a+".txt");  //création du fichier stockant le contenu de l'url
                lien.write((url+"\r\n\r\n"+monparser.texteparse).getBytes());
                lien.close();
                	}
    Je ne m'y connais pas encore assez mais je pense que je perds des informations lors de mes conversions de gettext qui me renvoie un String , puis getBytes() qui reconverti en tableau de byte.

    Ya t'il une solution pour ne plus avoir ces petits carrés dans mon fichier texte, alors qu'ils représentent des retours chariots quand je les copie colle dans eclipse ?????

Discussions similaires

  1. Extraire texte d'un fichier pdf
    Par nicoaix dans le forum Langage
    Réponses: 7
    Dernier message: 03/02/2017, 16h30
  2. [PDF] Extraire texte d'un PDF
    Par ludwig59 dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 17/06/2009, 09h17
  3. [vb6]extraire text pour créer base de doneé
    Par bailamos dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 06/10/2007, 00h28
  4. Extraire Texte Word avec POIFS et non HWPF
    Par Sebou77 dans le forum Documents
    Réponses: 2
    Dernier message: 30/06/2007, 13h58
  5. extraire texte word
    Par cterra dans le forum Documents
    Réponses: 13
    Dernier message: 29/11/2006, 14h36

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