2012-07-03 3 views
0

저는 자바를 사용하여 텍스트로 채우는 데 템플릿으로 사용하는 다양한 텍스트 문서 (.odt, .doc) 등이 있습니다. 달성하기 위해서는 내가 텍스트를 삽입하고 TextFields 집합을 열거하고 그들에게 값을 할당하고 싶습니다 모든 위치에있는 문서에 TextFields를 추가했습니다. 그러나이 문서는 인쇄용으로 사용하기 때문에 실제로하고 싶은 것은 TextFields 대신 북마크를 사용할 수있게하는 것입니다 (채워지지 않을 때 emtpy가 있고 재미있게 보입니다). 그러나 아무리 내가 문서의 XBookmarksSupplier 내가XBookmarksSupplier를 텍스트 문서에서 가져올 수 없습니다.

XBookmarksSupplier bookmarksSupplier = (XBookmarksSupplier) UnoRuntime.queryInterface (XBookmarksSupplier.class, 문서, 즉 null 값을 얻을 검색하려고 할 때마다 내가 문서 템플릿을 손으로 삽입 얼마나 많은 북마크);

이 null입니다.

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

글쎄, 마지막으로 내가 그것을 알아 냈 : 매개 변수 document 내가 다음과 같은 방법으로 템플릿으로 사용할 문서의 메모리 복사에를 작성하여 얻을 XComponent입니다. Eclipse 자동 제안을 사용하여 올바른 클래스 인 com.sun.star.text.XBookmarksSupplier 대신 실수로 com.sun.star.sdb.XBookmarksSupplier을 가져 왔습니다. 여러 가지 복사 - 붙여 넣기 때문에 모든 잘못된 테스트를 사용합니다.

관련 문제