Java 无法从文本文档中检索XBookmarksSupplier

Java 无法从文本文档中检索XBookmarksSupplier,java,openoffice-writer,uno,Java,Openoffice Writer,Uno,我有各种文本文档(.odt、.doc)等,我使用它们作为模板,使用Java填充文本。为了实现这一点,我将文本字段添加到我希望插入文本的每个位置的文档中,并枚举文本字段集并为其赋值。然而,我真正想做的是,因为这些文档只用于打印,所以能够使用书签而不是文本字段(未填充文本字段时仍然存在emtpy,看起来很有趣)。然而,无论我在试图检索文档的XBookmarksSupplier时手动在文档模板上插入多少书签,我都会得到一个空值,即 XBookmarksSupplier bookmarksSupplie

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

XBookmarksSupplier bookmarksSupplier=(XBookmarksSupplier) UnoRuntime.queryInterface(XBookmarksSupplier.class,文档)

是空的。参数
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);
XComponentLoader加载程序=(XComponentLoader)unruntime.queryInterface(XComponentLoader.class,桌面);
List props=new ArrayList();
PropertyValue p=null;
p=新属性值();
p、 Name=“AsTemplate”;
p、 值=新布尔值(真);
增加(p);
p=新属性值();
p、 Name=“DocumentTitle”;
p、 Value=“新单据”;
增加(p);
p=新属性值();
p、 Name=“隐藏”;
p、 值=新布尔值(真);
增加(p);
PropertyValue[]properties=新的PropertyValue[props.size()];
道具(属性);
XComponent文档=空;
字符串templateFileURL=filePathToURL(templateFile);
document=loader.loadComponentFromURL(templateFileURL,“\u blank”,0,属性);

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