0

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

XBookmarksSupplier bookmarksSupplier = (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);
4

1 回答 1

1

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

于 2012-07-04T08:57:43.303 回答