2009-03-12 10 views
2

J'ai téléchargé le Apache HWPF. Je veux l'utiliser pour lire un fichier doc et écrire son texte dans un fichier texte brut. Je ne connais pas très bien le HWPF.Comment utiliser Apache HWPF pour extraire du texte et des images d'un fichier DOC

Mon programme très simple, est ici:

J'ai 3 problèmes maintenant:

  1. Certains paquets ont des erreurs (ils ne peuvent pas trouver apache hdf). Comment je peux les réparer? Comment puis-je utiliser les méthodes de HWDF pour trouver et extraire les images?

  2. Une partie de mon programme est incomplète et incorrecte. Alors s'il vous plaît aidez-moi à le compléter.

Je dois terminer ce programme en 2 jours.

encore une fois je le répète s'il vous plaît S'il vous plaît aidez-moi à compléter ce.

Merci beaucoup de votre aide !!!

Ceci est mon code élémentaire:

public class test { 
    public void m1(){ 
    String filesname = "Hello.doc"; 
    POIFSFileSystem fs = null; 
    fs = new POIFSFileSystem(new FileInputStream(filesname); 
    HWPFDocument doc = new HWPFDocument(fs); 
    WordExtractor we = new WordExtractor(doc); 
    String str = we.getText() ; 
    String[] paragraphs = we.getParagraphText(); 
    Picture pic = new Picture(. . .) ; 
    pic.writeImageContent(. . .) ; 
    PicturesTable picTable = new PicturesTable(. . .) ; 
    if (picTable.hasPicture(. . .)){ 
     picTable.extractPicture(..., ...); 
     picTable.getAllPictures() ; 
    } 
} 
+0

connexes: http://stackoverflow.com/questions/1870328/how-to-programmaticaly-extract-and-manipulate-images-from-an-office-file – Thilo

Répondre

0

Si vous voulez juste faire cela, et vous ne se soucient pas du codage, vous pouvez simplement utiliser Antiword.

$ file.doc antiword> out.txt

0

Je sais que ce longtemps après le fait, mais je l'ai trouvé sur le code Google fouille de textes, plus précis et très facile à utiliser. Il est cependant, à peu près abandonné le code.

1

Apache Tika le fera pour vous. Il gère la discussion avec les POI pour effectuer les tâches HWPF et vous présente XHTML ou Plain Text pour le contenu du fichier. Si vous enregistrez un analyseur récursif, vous obtiendrez également toutes les images incorporées.

0
//you can use the org.apache.poi.hwpf.extractor.WordExtractor to get the text 
    String fileName = "example.doc"; 
    HWPFDocument wordDoc = new HWPFDocument(new FileInputStream(fileName)); 
    WordExtractor extractor = new WordExtractor(wordDoc); 
    String[] text = extractor.getParagraphText(); 
    int lineCounter = text.length; 
    String articleStr = ""; // This string object use to store text from the word document. 
    for(int index = 0;index < lineCounter;++ index){ 
     String paragraphStr = text[index].replaceAll("\r\n","").replaceAll("\n","").trim(); 
     int paragraphLength = paragraphStr.length(); 
     if(paragraphLength != 0){ 
      articleStr.concat(paragraphStr); 
     } 
    } 
    //you can use the org.apache.poi.hwpf.usermodel.Picture to get the image 
    List<Picture> picturesList = wordDoc.getPicturesTable().getAllPictures(); 
    for(int i = 0;i < picturesList.size();++i){ 
     BufferedImage image = null; 
     Picture pic = picturesList.get(i); 
     image = ImageIO.read(new ByteArrayInputStream(pic.getContent())); 
     if(image != null){ 
      System.out.println("Image["+i+"]"+" ImageWidth:"+image.getWidth()+" ImageHeight:"+image.getHeight()+" Suggest Image Format:"+pic.suggestFileExtension()); 
     } 
    }