2012-10-09 2 views
3

Si quelqu'un peut vous aider avec une méthode qui recherche une chaîne dans un document de bureau Open Office en utilisant l'API UNO avec Java, ce serait très utile. Une fois qu'il cherche la chaîne et trouve la chaîne peut-il alors (même caché) déplacer le curseur à cette chaîne.Open Office Writer Recherche et recherche de chaînes et de curseurs de déplacement

Je peux ensuite utiliser la méthode getPageNumber ci-dessous pour retourner le numéro de page et imprimer cette page sur du papier à en-tête.

Toute aide appréciée

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(); 
} 

Je sais que cela peut être fait en utilisant une combinaison de peut-être le dessous

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

ou XTextRange.

Merci

Répondre

4

Incase n'importe qui a besoin de réponse. Je l'ai élaboré et posté ci-dessous.

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(); 
} 
Questions connexes