在中文环境中,金山公司WPS文字日渐蓬勃,大有取代传统Office WORD的势态,利用Python编写代码,对wps文档进行编辑,是减少重复工作的一个很好的办法。在大量实践中,本人研究并解决了一些问题,分享如下:
1、插入图片在不同页
网上可以查到大量代码演示AddPicture(),该方法始终将图片放置在第一页,无法控制图片在不同的页。本人通过大量研究,提出解决方案,就是:
先用InlineShapes.AddPicture
插入行嵌入图片,然后ConvertToShape()
转成浮动图片。
代码如下:
def add_pic(t_range, post_left: float, post_top: float):
"""
在WPS文档中加入图片
:param t_range: 添加位置,一个Range
:param post_left:左侧位移,相对于Range的位置,可能有负数
:param post_top:顶端位移,相对于Range所在行的位置,可能有负数
:return:
"""
t_shape = wps_doc.InlineShapes.AddPicture(app_path + "\\temp.png", False, False, t_range)
t_shape = t_shape.ConvertToShape()
t_shape.LayoutInCell = 1
t_shape.RelativeHorizontalPosition = 3 # 水平位置右侧跟随字符
t_shape.RelativeVerticalPosition = 3 # 竖直位置跟随行
t_shape.Left = wps_app.CentimetersToPoints(post_left) # 左侧 位移
t_shape.Top = wps_app.CentimetersToPoints(post_top) # 顶端 位移
其中t_range
是图片置于文本中的位置。如果该区域未折叠,那么图片将覆盖此区域,否则插入图片。如果省略此参数,则自动放置图片。
t_range
参数很重要,如果t_range
位于第三页,那么插入的图片就在第三页,t_range
控制了图片的基本位置。精确调整,需要调整Left
、 Top
等参数。