gpt4 book ai didi

java - 打开 Office Writer 搜索和查找字符串并移动光标

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:20:41 25 4
gpt4 key购买 nike

如果有人可以协助使用带有 Java 的 UNO API 在开放式办公室编写器文档中搜索字符串的方法,那将非常有帮助。一旦它搜索字符串并找到字符串,它就可以(甚至隐藏)将光标移动到该字符串。

然后我可以使用下面的 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。

谢谢

最佳答案

万一有人需要答案。我解决了问题并在下面发布。

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

关于java - 打开 Office Writer 搜索和查找字符串并移动光标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12803344/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com