如何更新DOC中的关键字元数据

时间:2014-09-19 03:15:23

标签: java apache-poi doc

我正在尝试更新DOC文件元数据中的keyword。我已经能够使用下面的代码更新category元数据,但我没有看到任何更改keywords的方法

我正在使用poi:3.10-FINAL

void updateProperties(String filepath) {
        POIFSFileSystem poifs = new POIFSFileSystem(new FileInputStream(filepath));
        DirectoryEntry dir = poifs.getRoot();
        DocumentSummaryInformation dsi;
        try
        {
            DocumentEntry dsiEntry = (DocumentEntry) dir.getEntry(DocumentSummaryInformation.DEFAULT_STREAM_NAME);
            DocumentInputStream dis = new DocumentInputStream(dsiEntry);
            PropertySet ps = new PropertySet(dis);
            dis.close();
            dsi = new DocumentSummaryInformation(ps);
        }
        catch (FileNotFoundException ex)
        {
            dsi = PropertySetFactory.newDocumentSummaryInformation();
        }
        dsi.setCategory("New Category set");


        dsi.write(dir, DocumentSummaryInformation.DEFAULT_STREAM_NAME);
        OutputStream out = new FileOutputStream(filepath);
        poifs.writeFilesystem(out);
        out.close();
    }

1 个答案:

答案 0 :(得分:1)

关键字未存储在DocumentSummaryInformation上,而是存储在其他属性流SummaryInformation

如果你看一下SummaryInformation的JavaDocs,你会发现它有你搜索的方法setKeywords(String)