Created
July 24, 2013 11:22
-
-
Save marcoleong/6069744 to your computer and use it in GitHub Desktop.
Openoffice odt import Snippnet Read further: http://api.libreoffice.org/examples/DevelopersGuide/Text/TextDocuments.java
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** Sample for use of templates | |
* This sample uses the file TextTemplateWithUserFields.odt from the Samples | |
* folder. The file contains a number of User text fields (Variables - User) | |
* and a bookmark which we use to fill in various values | |
*/ | |
protected void templateExample() throws java.lang.Exception { | |
// create a small hashtable that simulates a rowset | |
Hashtable recipient = new Hashtable(); | |
recipient.put("Company", "Manatee Books"); | |
recipient.put("Contact", "Rod Martin"); | |
recipient.put("ZIP", "34567"); | |
recipient.put("City", "Fort Lauderdale"); | |
recipient.put("State", "Florida"); | |
// load template with User fields and bookmark | |
java.io.File sourceFile = new java.io.File("TextTemplateWithUserFields.odt"); | |
StringBuffer sTemplateFileUrl = new StringBuffer("file:///"); | |
sTemplateFileUrl.append(sourceFile.getCanonicalPath().replace('\\', '/')); | |
XComponent xTemplateComponent = | |
newDocComponentFromTemplate( sTemplateFileUrl.toString() ); | |
// get XTextFieldsSupplier, XBookmarksSupplier interfaces | |
XTextFieldsSupplier xTextFieldsSupplier = (XTextFieldsSupplier) | |
UnoRuntime.queryInterface(XTextFieldsSupplier.class, | |
xTemplateComponent); | |
XBookmarksSupplier xBookmarksSupplier = (XBookmarksSupplier) | |
UnoRuntime.queryInterface(XBookmarksSupplier.class, xTemplateComponent); | |
// access the TextFields and the TextFieldMasters collections | |
XNameAccess xNamedFieldMasters = xTextFieldsSupplier.getTextFieldMasters(); | |
XEnumerationAccess xEnumeratedFields = xTextFieldsSupplier.getTextFields(); | |
// iterate over hashtable and insert values into field masters | |
java.util.Enumeration keys = recipient.keys(); | |
while(keys.hasMoreElements()) { | |
// get column name | |
String key = (String)keys.nextElement(); | |
// access corresponding field master | |
Object fieldMaster = xNamedFieldMasters.getByName( | |
"com.sun.star.text.fieldmaster.User." + key); | |
// query the XPropertySet interface, we need to set the Content property | |
XPropertySet xPropertySet = (XPropertySet)UnoRuntime.queryInterface( | |
XPropertySet.class, fieldMaster); | |
// insert the column value into field master | |
xPropertySet.setPropertyValue("Content", recipient.get(key)); | |
} | |
// afterwards we must refresh the textfields collection | |
XRefreshable xRefreshable = (XRefreshable)UnoRuntime.queryInterface( | |
XRefreshable.class, xEnumeratedFields); | |
xRefreshable.refresh(); | |
// accessing the Bookmarks collection of the document | |
XNameAccess xNamedBookmarks = xBookmarksSupplier.getBookmarks(); | |
// find the bookmark named "Subscription" | |
Object bookmark = xNamedBookmarks.getByName("Subscription"); | |
// we need its XTextRange which is available from getAnchor(), | |
// so query for XTextContent | |
XTextContent xBookmarkContent = (XTextContent)UnoRuntime.queryInterface( | |
XTextContent.class, bookmark); | |
// get the anchor of the bookmark (its XTextRange) | |
XTextRange xBookmarkRange = xBookmarkContent.getAnchor(); | |
// set string at the bookmark position | |
xBookmarkRange.setString("subscription for the Manatee Journal"); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment