我正在尝试向现有文档添加一些自定义属性:
HWPFDocument document = new HWPFDocument(new FileInputStream(sourceFile));
DocumentSummaryInformation docSumInf = document.getDocumentSummaryInformation();
CustomProperties customProperties = docSumInf.getCustomProperties();
CustomProperty singleProp = null;
//...
singleProp = new CustomProperty();
singleProp.setName(entry.getKey());
singleProp.setType(Variant.VT_LPWSTR);
singleProp.setValue((String) entry.getValue());
//..
customProperties.put(entry.getKey(), singleProp);
docSumInf.setCustomProperties(customProperties);
return document;
但是,属性永远不会进入文件。我试着
document.getDocumentSummaryInformation().getCustomProperties().putAll(customProperties);
我也试过
document.getDocumentSummaryInformation().getCustomProperties().put(entry.getKey(), singleProp);
System.out.println(document.getDocumentSummaryInformation().getCustomProperties().size() + " Elemente in Map");
循环。印刷尺寸总是一个。
使用第一次尝试(docSumInf.setCustomProperties(customProperties);)我在将customProperties设置为docSumInf之前打印出它。我将所有新属性放在那里,只要我将它们设置为文档摘要。
我不知道自己错过了什么......
答案 0 :(得分:1)
entry.getKey() = null
或entry.getKey()
具有地图中所有CustomProperties的通用值。
因此你在CustomProperties的地图中只有一个元素。
您需要在此处设置非空值
singleProp.setName(entry.getKey());
CustomProperty类表示文档摘要信息流中的自定义属性。与普通属性的不同之处在于自定义属性具有可选名称。如果名称不为null,则将在该部分的字典中进行维护。