Javaを使用してテキストを入力するためのテンプレートとして使用するさまざまなテキストドキュメント(.odt、.doc)などがあります。それを達成するために、テキストを挿入したいすべての位置のドキュメントに TextFields を追加し、TextFields セットを列挙してそれらに値を割り当てます。ただし、これらのドキュメントは印刷専用であるため、TextField の代わりにブックマークを使用できるようにすることが本当にやりたいことです (データが入力されていないときは、まだ空で変に見えます)。ただし、ドキュメントを取得しようとするたびに、ドキュメントテンプレートに手動で挿入したブックマークの数に関係なくXBookmarksSupplier
、null 値が取得されます。
XBookmarksSupplier ブックマークSupplier = (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);