我想从.doc文件中删除单词元数据。我的.docx
文件适用于XWPFDocument
,但以下用于删除元数据的代码对于大型(> 1MB)文件失败。例如,使用带有图像的6MB .doc文件,它会输出一个4.5MB的文件,其中一些图像被删除。
public static InputStream removeMetaData(InputStream inputStream) throws IOException {
POIFSFileSystem fss = new POIFSFileSystem(inputStream);
HWPFDocument doc = new HWPFDocument(fss);
// **it even fails on large files if you remove from here to 'until' below**
SummaryInformation si = doc.getSummaryInformation();
si.removeAuthor();
si.removeComments();
si.removeLastAuthor();
si.removeKeywords();
si.removeSubject();
si.removeTitle();
doc.getDocumentSummaryInformation().removeCategory();
doc.getDocumentSummaryInformation().removeCompany();
doc.getDocumentSummaryInformation().removeManager();
try {
doc.getDocumentSummaryInformation().removeCustomProperties();
} catch (Exception e) {
// can not remove above
}
// until
ByteArrayOutputStream os = new ByteArrayOutputStream();
doc.write(os);
os.flush();
os.close();
return new ByteArrayInputStream(os.toByteArray());
}
相关帖子:
答案 0 :(得分:1)
您使用的是哪个版本的Apache POI?
这似乎是Bug 46220 - Regression: Some embedded images being lost。
请升级至latest release of POI (3.8),然后重试。
希望有所帮助。