无法从文本文档中检索XBookmarksSupplier

时间:2012-07-03 10:43:22

标签: java openoffice-writer uno

我有各种文本文档(.odt,.doc)等我用作模板,用Java填充文本。为了实现这一点,我已经将TextFields添加到我想要插入文本的每个位置的文档中,并且我枚举TextFields集并为它们赋值。然而,我真正想要做的是,因为这些文档仅用于打印,所以能够使用书签而不是TextFields(当没有填充时仍然存在emtpy并且看起来很有趣)。然而,无论我在尝试检索文档XBookmarksSupplier时手动插入文档模板多少书签,我都会得到一个空值,即

  

XBookmarksSupplier书签供应商=(XBookmarksSupplier)   UnoRuntime.queryInterface(XBookmarksSupplier.class,document);

为空。参数document是我通过以下方式创建用作模板的文档的内存副本来获得的XComponent:

XComponentLoader loader = (XComponentLoader) UnoRuntime.queryInterface(XComponentLoader.class, desktop); 

List<PropertyValue> props = new ArrayList<PropertyValue>(); 
PropertyValue p = null; 

p = new PropertyValue(); 
p.Name = "AsTemplate"; 
p.Value = new Boolean (true); 
props.add(p); 

p = new PropertyValue(); 
p.Name = "DocumentTitle"; 
p.Value = "New doc"; 
props.add(p); 

p = new PropertyValue(); 
p.Name = "Hidden"; 
p.Value = new Boolean(true); 
props.add(p);

PropertyValue[] properties = new PropertyValue[props.size()]; 
props.toArray(properties); 

XComponent document = null;

String templateFileURL = filePathToURL(templateFile); 
document = loader.loadComponentFromURL(templateFileURL, "_blank", 0, properties);

1 个答案:

答案 0 :(得分:1)

好吧,最后我明白了。通过使用Eclipse自动建议我错误地导入com.sun.star.sdb.XBookmarksSupplier而不是com.sun.star.text.XBookmarksSupplier这是正确的类。由于各种复制粘贴所有我使用相同错误类的测试。