1

我想从 .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());
}

相关文章:

4

1 回答 1

1

您使用的是哪个版本的 Apache POI?

这似乎是Bug 46220 - Regression: Some embedded images being lost

请升级到最新版本的 POI (3.8) 并重试。

希望有帮助。

于 2012-11-13T10:47:49.640 回答