3

Apache HWPFをダウンロードしました。これを使用して doc ファイルを読み取り、そのテキストをプレーン テキスト ファイルに書き込みたいと考えています。HWPFはよくわかりません。

私の非常に単純なプログラムは次のとおりです。

私は今3つの問題を抱えています:

  1. 一部のパッケージにエラーがあります (apache hdf が見つかりません)。どうすれば修正できますか?

  2. HWDF のメソッドを使用して画像を見つけて抽出するにはどうすればよいですか?

  3. プログラムの一部が不完全で間違っています。だから、それを完成させるのを手伝ってください。

このプログラムを 2 日で完了しなければなりません。

もう一度繰り返します。これを完了するのを手伝ってください。

みんな、助けてくれてありがとう!!!

これは私の基本的なコードです:

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() ;
    }
}
4

4 に答える 4

1

Apache Tikaがこれを行います。POI との通信を処理して HWPF を処理し、ファイルの内容として XHTML またはプレーン テキストを表示します。再帰パーサーを登録すると、埋め込まれた画像もすべて取得できます。

于 2011-05-02T10:50:09.887 に答える
1
    //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());
        }
    }
于 2014-11-07T01:56:55.470 に答える
0

私はこれをずっと後から知っていますが、GoogleコードでTextMiningがより正確で非常に使いやすいことを発見しました。ただし、ほとんど放棄されたコードです。

于 2011-05-01T05:47:17.900 に答える
0

これを行いたいだけで、コーディングを気にしない場合は、Antiwordを使用できます。

$ antiword file.doc > out.txt

于 2009-03-12T05:08:32.427 に答える