我正在尝试向现有文档中添加一些自定义属性:
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。在将所有新属性设置为文档摘要后,这些地方就会丢失。
我看不到我想念的东西...
最佳答案
entry.getKey() = null
或
entry.getKey()
对于地图中的所有CustomProperty具有公共值。因此,CustomProperties映射中只有一个元素。
您需要在此处设置非null值
singleProp.setName(entry.getKey());
CustomProperty类表示文档摘要信息流中的自定义属性。与常规属性的区别在于自定义属性具有可选名称。如果名称不为null,它将保留在该节的字典中。