0

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);
4

1 に答える 1

1

さて、ついに私はそれを理解しました。Eclipse auto-suggest を使用することで、正しいクラスではcom.sun.star.sdb.XBookmarksSupplierなく誤ってインポートしてしまいました。com.sun.star.text.XBookmarksSupplier同じ間違ったクラスを使用しているすべてのテストをさまざまにコピーして貼り付けているためです。

于 2012-07-04T08:57:43.303 に答える