如何使用 PyUNO 和 OpenOffice 编写器获取文本坐标

Posted

技术标签:

【中文标题】如何使用 PyUNO 和 OpenOffice 编写器获取文本坐标【英文标题】:How to get Text coordinates using PyUNO with OpenOffice writer 【发布时间】:2014-07-17 12:02:39 【问题描述】:

我有一个 python 脚本,它使用 PyUNO 成功地在 OpenOffice Writer 文档中进行搜索和替换。请问如何获取找到的文本的坐标?

import string
search = document.createSearchDescriptor()
search.SearchString = unicode('find')
#search.SearchCaseSensitive = True
#search.SearchWords = True
found = document.findFirst(search)
if found:
    #log.debug('Found %s' % find)
    ## any code here help to get the coordinate of found text?
    pass

【问题讨论】:

“坐标”是什么意思?文档中文本的位置取决于页面/字符大小和其他事实(屏幕/打印分辨率)。你想用这些值做什么? 目的问题是我想在odt文件中添加“指定”文本,并检测该文本的位置以调整页面大小。 【参考方案1】:

这是一些 StarBASIC 代码,用于在 Writer 文档中查找搜索表达式的页码:

SUB find_page_number()

oDoc = ThisComponent
oViewCursor = oDoc.getCurrentController().getViewCursor()
oSearchFor = "My Search example"

oSearch = oDoc.createSearchDescriptor()
With oSearch
   .SearchRegularExpression = False
   .SearchBackwards = False
   .setSearchString(oSearchFor)
End With

oFirstFind = oDoc.findFirst(oSearch)


If NOT isNull(oFirstFind) Then
    oViewCursor.gotoRange(oFirstFind, False)
    MsgBox oViewCursor.getPage()
Else
   msgbox "not found: " & oSearchFor
End If

希望对你有帮助

【讨论】:

以上是关于如何使用 PyUNO 和 OpenOffice 编写器获取文本坐标的主要内容,如果未能解决你的问题,请参考以下文章

Openoffice3.1 pyuno混淆错误

在 Windows 和 CentOS 上使用 PyUNO

使用 python 启动 openoffice 进程以使用子进程与 pyuno 一起使用

使用 pyUno 将文本写入 Libre/OpenOffice Writer

如何在 Libre/Open Office 中使用 pyUNO 库检查段落调整?

在 MacOS 上使用 pyuno 进行文件转换