2014-04-08 2 views
1

docx 파일을 Apache POI으로 처리하려고합니다. 단순히 파일을 읽고 쓰는 것만으로 (지금 당장). 다음은 간단한 코드입니다.Apache POI - 헤더에 이미지가있는 docx를 읽으십시오.

FileInputStream fileInputStream = new FileInputStream(inputFile); 
XWPFDocument document = new XWPFDocument(OPCPackage.open(fileInputStream)); 
FileOutputStream fileOutputStream = new FileOutputStream(outputFile); 
document.write(fileOutputStream); 
fileOutputStream.flush(); 
fileOutputStream.close(); 
fileInputStream.close(); 

입력 파일의 헤더에 작은 이미지가 있습니다. 그 때문에 Microsoft Word의 POI 개방 출력 파일과 입력 파일을 처리 한 후 나는 손상된 파일 오류가 발생합니다 :

Microsoft Office cannot open this file because some parts are missing or invalid. 
Location: Part: /word/settings.xml, Line: 2, Column: 0 

모든 사무실에서 OO 작가 작품,하지만.

질문은 무엇이 잘못 되었습니까? 아파치는 헤더에 이미지가있는 파일을 처리하지 않습니까? 문제를 해결할 수있는 방법을 알고 있습니까?

NEEDApache POI을 사용하려면 다른 도구는 고려하지 않습니다. 또한 POI를 사용합니다. 3.8

+0

첫째, 실제로 문제의 원인이되는 헤더인지 확인하고 싶습니다. 머리글에 상상 만 포함하고 다른 것은 포함하지 않는 테스트 문서를 만듭니다. 그게 실패하니? 그렇다면 POI 처리 전과 후의 XML의 차이점은 무엇입니까? – ninesided

+0

실제로 헤더가 문제의 원인이 아니 었습니다. 헤더 파일에있는 이미지가있는 다른 파일은 오류없이 처리되었습니다. diff를 실행하면'wc : Ignorable = "w14"매개 변수가'w : settings' 태그에서 제거 된 것을 보았습니다 ... –

+0

Apache POI의 최신 버전으로 업그레이드하면 어떻게됩니까? (현재 3.10) – Gagravarr

답변

0

문제는 이미지 헤더가 아니라 Apache POI jar 버전입니다. 최신 항아리를 사용하십시오.

poi-3.10-FINAL.jar 
poi-ooxml-3.10-FINAL.jar 
poi-ooxml-schemas-3.10-FINAL.jar 
ooxml-schemas-1.1.jar 

위의 항아리를 가지고 나를 위해 문제가 해결되었습니다.