2012-09-08 4 views
2

previous answer 덕분에 암호로 보호 된 Word 2010 문서를 읽을 수있게되었습니다. (. 나는 그들에게 그들은 1994 년으로 돌아가 .DOCX하는 .DOC에서 하나 하나 번역해야하지만 괜찮아요.) docx4j를 사용하여 Word 문서의 내용을 구문 분석

나는 간단한 자바 클래스를 시작하는 데 썼다 :

package model.docx4j; 

import model.JournalEntry; 
import model.JournalEntryFactory; 
import org.docx4j.openpackaging.exceptions.Docx4JException; 
import org.docx4j.openpackaging.packages.OpcPackage; 
import org.docx4j.openpackaging.parts.Parts; 

import java.io.IOException; 
import java.io.InputStream; 
import java.security.GeneralSecurityException; 
import java.util.LinkedList; 
import java.util.List; 

/** 
* JournalEntryFactoryImpl using docx4j 
* @author Michael 
* @link 
* @since 9/8/12 12:44 PM 
*/ 
public class JournalEntryFactoryImpl implements JournalEntryFactory { 
    @Override 
    public List<JournalEntry> getEntries(InputStream inputStream, String password) throws IOException, GeneralSecurityException { 
     List<JournalEntry> journalEntries = new LinkedList<JournalEntry>(); 
     if (inputStream != null) { 
      try { 
       OpcPackage opcPackage = OpcPackage.load(inputStream, password); 
       Parts parts = opcPackage.getParts(); 
      } catch (Docx4JException e) { 
       LOGGER.error("Could not load document into docx4j", e); 
       throw new IOException(e); 
      } 
     } 
     return journalEntries; 
    } 
} 

그리고를 JUnit 테스트는 드라이브하기 :

package model.docx4j; 

import model.JournalEntry; 
import model.JournalEntryFactory; 
import org.docx4j.openpackaging.exceptions.Docx4JException; 
import org.docx4j.openpackaging.packages.OpcPackage; 
import org.docx4j.openpackaging.parts.Parts; 

import java.io.IOException; 
import java.io.InputStream; 
import java.security.GeneralSecurityException; 
import java.util.LinkedList; 
import java.util.List; 

/** 
* JournalEntryFactoryImpl using docx4j 
* @author Michael 
* @link 
* @since 9/8/12 12:44 PM 
*/ 
public class JournalEntryFactoryImpl implements JournalEntryFactory { 
    @Override 
    public List<JournalEntry> getEntries(InputStream inputStream, String password) throws IOException, GeneralSecurityException { 
     List<JournalEntry> journalEntries = new LinkedList<JournalEntry>(); 
     if (inputStream != null) { 
      try { 
       OpcPackage opcPackage = OpcPackage.load(inputStream, password); 
       Parts parts = opcPackage.getParts(); 
      } catch (Docx4JException e) { 
       LOGGER.error("Could not load document into docx4j", e); 
       throw new IOException(e); 
      } 
     } 
     return journalEntries; 
    } 
} 

나는 내 문서를 읽고 나면 무엇을하고 있었는지 docx4j 확인하기 위해 테스트에 중단 점을 넣어. 나는 8 개 부분의 목록을 보았지만 그 내용을 찾지 않고 나무를 걸어 갔다.

각 문서는 날짜와 내용이있는 페이지로 구성되어 있지만 페이지를 찾을 수 없습니다. 그들은 어디에서 살고 있습니까?

답변

3

주 문서 내용은 "주 문서 부분"에 있으며 "/word/document.xml"이라는 이름이 있습니다.

WordprocessingMLPackage wordMLPackage = (WordprocessingMLPackage)opcPackage; 
MainDocumentPart documentPart = wordMLPackage.getMainDocumentPart(); 

하지만 당신은 당신의 접근 방식은 잘 작동하는 기대 :

docx4j 그것을 얻을 수있는 일반적인 방법이다.

+0

마침내! 내 텍스트 항목이있는 문서 인스턴스 목록을 참조하십시오. 정말 고맙습니다. 나는 도서관과 당신의 대답에 감사드립니다. – duffymo