2009-03-12 3 views
2

Apache HWPF을 다운로드했습니다. 나는 이것을 사용하여 doc 파일을 읽고 그 텍스트를 일반 텍스트 파일에 씁니다. 나는 HWPF를 그렇게 잘 모른다.Apache HWPF를 사용하여 DOC 파일에서 텍스트와 이미지를 추출하는 방법

내 아주 간단한 프로그램은 여기에 있습니다 :

지금 3 문제가 :

  1. 패키지 중 일부는 (그들은 아파치 HDF 찾을 수 없습니다) 오류가 있습니다. 어떻게 해결할 수 있을까요?

  2. HWDF의 방법을 사용하여 이미지를 찾아 추출하는 방법은 무엇입니까?

  3. 일부 프로그램이 불완전하고 잘못되었습니다. 제발 도와주세요.

이 프로그램을 2 일 이내에 완료해야합니다.

다시 한번 반복하십시오. 제발 도와주세요. 완료 해주세요.

도움을 주신 여러분 께 감사드립니다 !!!

이 내 초등학교 코드입니다 : 당신은 그냥이 작업을 수행하려면, 당신은 당신은 Antiword을 사용할 수 있습니다, 코딩에 대해 걱정하지 않는 경우

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

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

답변

0

.

0

out.txt

$ antiword file.doc를가> 나는 긴 사실 후이를 알고 있지만 좀 더 정확하고 사용이 매우 편리 구글 코드에 TextMining을 발견했습니다. 그러나 이것은 거의 포기 된 코드입니다.

1

Apache Tika이 작업을 수행합니다. POI와의 대화를 통해 HWPF 작업을 처리하고 XHTML 또는 일반 텍스트로 파일 내용을 표시합니다. 재귀 파서를 등록하면 모든 포함 된 이미지도 얻을 수 있습니다.

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