2012-10-09 27 views
3

如果任何人都可以使用使用UNO API和Java在open office writer文档中搜索字符串的方法,那将会非常有帮助。一旦它搜索字符串并找到字符串可以然后(甚至隐藏)将光标移动到该字符串。Open Office Writer搜索并查找字符串并移动光标

然后,我可以使用下面的getPageNumber方法来返回页码,并在头部纸上打印该页。

任何帮助非常赞赏

public int getNumberOfPages() 
{ 
    XController xController = OODocument.getCurrentDocument().getXFrame().getController(); 

    XTextViewCursorSupplier supTextViewCursor = 
       (XTextViewCursorSupplier) UnoRuntime.queryInterface(
        XTextViewCursorSupplier.class, xController); 

    XTextViewCursor curTextView = supTextViewCursor.getViewCursor(); 
    XPageCursor curPage = 
       (XPageCursor) UnoRuntime.queryInterface(
        XPageCursor.class, curTextView); 
    curPage.jumpToLastPage(); 
    System.out.println("pages = " + curPage.getPage()); 
    return curPage.getPage(); 
} 

public int getPageNumber() 
{ 
    XController xController = OODocument.getCurrentDocument().getXFrame().getController(); 

    XTextViewCursorSupplier supTextViewCursor = 
       (XTextViewCursorSupplier) UnoRuntime.queryInterface(
        XTextViewCursorSupplier.class, xController); 

    XTextViewCursor curTextView = supTextViewCursor.getViewCursor(); 

    XPageCursor curPage = 
       (XPageCursor) UnoRuntime.queryInterface(
        XPageCursor.class, curTextView); 

    System.out.println("current page = " + curPage.getPage()); 
    return curPage.getPage(); 
} 

我知道它可以使用的可能是下面

curTextView.setString("zzzzz"); 
    curTextView.getText(); 
    curTextView.gotoRange(arg0, arg1) 

或XTextRange的组合来完成。

谢谢

回答

4

任何人都需要回答。我解决了它,并在下面发布。

public int searchPageNumber() 
{ 
    XController xController = OODocument.getCurrentDocument().getXFrame().getController(); 

    XTextViewCursorSupplier supTextViewCursor = 
       (XTextViewCursorSupplier) UnoRuntime.queryInterface(
        XTextViewCursorSupplier.class, xController); 

    XTextViewCursor curTextView = supTextViewCursor.getViewCursor(); 

    // gets the page cursor and assigns the text view cursor to the page 
    XPageCursor curPage = 
       (XPageCursor) UnoRuntime.queryInterface(
        XPageCursor.class, curTextView); 
    System.out.println("The current page number is " + curPage.getPage()); 

    // gets the model 
    XModel model = xController.getModel(); 
    // assigns model to the document 
    XTextDocument xTextDocument = (XTextDocument) UnoRuntime.queryInterface(XTextDocument.class, model); 
    // Xsearchable so we can search the text 
    XSearchable xSearchable = (XSearchable) UnoRuntime.queryInterface(XSearchable.class, xTextDocument); 
    XSearchDescriptor xsd = (XSearchDescriptor) xSearchable.createSearchDescriptor(); 

    xsd.setSearchString("zzzzz"); 

    XInterface xfi = (XInterface) xSearchable.findFirst(xsd); 
    if (xfi != null) { 
     XTextRange xStart = (com.sun.star.text.XTextRange) UnoRuntime.queryInterface( 
       com.sun.star.text.XTextRange.class, xfi); 

     curTextView.gotoRange(xStart, false); 
    } 

    System.out.println("current page = " + curPage.getPage()); 
    return curPage.getPage(); 
}