在 LibreOffice 中使用宏脚本一次插入多个图像
Posted
技术标签:
【中文标题】在 LibreOffice 中使用宏脚本一次插入多个图像【英文标题】:Insert several images at once using macro scripting in LibreOffice 【发布时间】:2015-07-16 08:57:21 【问题描述】:我正在用 Python 为 LibreOffice Writer 编写一个宏。 我需要在一个文档中插入几张图片,一张一张地插入它们之间的最小空间。
以下代码将所有图像插入同一区域,并且所有图像都重叠。
每次插入新图像时,我都需要将光标移到插入的图像下方。 我已经尝试过 cursor.gotoEnd()、cursor.goDown() 和其他类似的方法,但似乎都不起作用。
我该如何进行这项工作?
def InsertAll():
desktop = XSCRIPTCONTEXT.getDesktop()
doc=desktop.loadComponentFromURL('private:factory/swriter','_blank',0,())
text = doc.getText()
cursor = text.createTextCursor()
file_list = glob.glob('/path/of/your/dir/*.png')
for f in file_list:
img = doc.createInstance('com.sun.star.text.TextGraphicObject')
img.GraphicURL = 'file://' + f
text.insertTextContent(cursor, img, False)
cursor.gotoEnd(False) <- doesnt advance the cursor downwards
return None
【问题讨论】:
只是手动插入图片,我的经验是你必须在图片后添加换行符才能让光标有位置。因此,可以尝试在图片插入之间向文档添加一两个换行符。 我也试过了。没用。 有一个 Andrew Pitonyak 的文档,可从他的 OpenOffice 站点http://www.pitonyak.org/oo.php 下载“英文宏文档”。在插入多个图像的示例中,代码查找文本字符并在字符的每个实例之后插入和图像。 (代码示例在 StarBasic 中,但 API 名称相同,因此将其应用于 Python 应该不会太糟糕。)也许您可以模仿这一点,在插入图像之前,插入 (file_list 的大小) 文本字符每个后跟一个换行符? 【参考方案1】:在每张图片后插入一个分节符:
from com.sun.star.text.ControlCharacter import PARAGRAPH_BREAK
text.insertTextContent(cursor, img, False)
text.insertControlCharacter(cursor, PARAGRAPH_BREAK, False)
cursor.gotoEnd(False)
这会将图像分开...用一个段落
Andrew 的书是解决许多 OpenOffice 脚本问题的基本资料:+1
【讨论】:
以上是关于在 LibreOffice 中使用宏脚本一次插入多个图像的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 LibreOffice 宏将 os.system() 命令写入 python 脚本并执行它?