2012-07-03 2 views
0

У меня есть различные текстовые документы (.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); 

ответ

1

Ну, наконец-то я понял. Используя Eclipse auto-suggest, я импортировал ошибочно com.sun.star.sdb.XBookmarksSupplier вместо com.sun.star.text.XBookmarksSupplier, который является правильным классом. Из-за различного копирования всех моих тестов, где используется один и тот же неправильный класс.