如何使用 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 编写器获取文本坐标的主要内容,如果未能解决你的问题,请参考以下文章
使用 python 启动 openoffice 进程以使用子进程与 pyuno 一起使用
使用 pyUno 将文本写入 Libre/OpenOffice Writer