У меня есть различные текстовые документы (.odt, .doc) и т. Д., Которые я использую в качестве шаблонов для заполнения их текстом с использованием Java. Чтобы добиться этого, я добавил TextFields к документам в каждой позиции, которую я хотел бы вставить в текст, и я перечисляю SetFields и присваиваю им значения. Однако то, что я действительно хочу сделать, поскольку эти документы предназначены только для печати, - это возможность использовать закладки вместо TextFields (которые, когда они не заполнены, все еще существуют emtpy и выглядят забавно). Не Однако независимо от того, сколько закладок я вставлять вручную по шаблонам документов всякий раз, когда я пытаюсь получить документа XBookmarksSupplier
я получаю нулевое значение, т.е.Не удается получить XBookmarksSupplier из текстового документа
XBookmarksSupplier bookmarksSupplier = (XBookmarksSupplier) UnoRuntime.queryInterface (XBookmarksSupplier.class, документ);
есть null. Параметр 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);