2012-10-09 6 views
3

누구나 Java를 사용하는 UNO API를 사용하여 공개 문서 작가 문서에서 문자열을 검색하는 방법을 지원할 수 있다면 매우 유용 할 것입니다. 문자열을 검색하고 문자열을 찾으면 커서를 해당 문자열로 이동시킬 수 있습니다.Open Office Writer 검색 및 문자열 찾기 및 커서 이동

다음 getPageNumber 메서드를 사용하여 페이지 번호를 반환하고 해당 페이지를 제목이있는 용지에 인쇄 할 수 있습니다.

어떤 도움이 많이 나는 아마도 아래

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

또는 XTextRange의 조합을 사용하여 수행 할 수 있습니다 알고

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

감사.

감사합니다.

답변

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