|
第十三集终于姗姗来迟,本文章主要讲通过InlineShapes接口操作图片资源,为:
InlineShapes接口封装在Document、Range、Selection下,具体使用哪个对象来调用InlineShapes视具体情况而定,本文章将通过Document对象发起调用。
InlineShape(s)
InlineShapes是InlineShape对象的集合,与Documents、Paragraphs一样,通过InlineShapes.Item(index)或者InlineShapes(index)即可获取到某个InlineShape对象。要想操作某张图片,必须先获得该图片对象。
InlineShapes包含哪些资源
该接口文档中被翻译为内嵌形状,包含图片、OLE对象(在文档中插入的文档、音频等)和ActiveX 控件。
重要属性和方法
一、插入图片
from win32com.client import Dispatch
client = Dispatch('kwps.Application')
client.Visible = 1
doc = client.Documents.Open(r'D:\demo.doc')
p5 = doc.Paragraphs(6).Range
# AddPicture有返回值,为新插入的图片InlineShape对象
doc.InlineShapes.AddPicture(
r'D:\课程\course\121.jpg', # 本地图片资源
False,
False,
p5 # 在该Range对象的前面插入图片
)
二、获取某张图片设置图片尺寸
鉴于InlineShapes包含各种对象,并非只有图片,使用inlineShapes.Count来统计一共有几张图片是不可靠的,要操作某张图片,还需要使用Type属性来判断当前对象是否为图片(Type为3时),伪代码演示。
for s in doc.InlineShapes:
if s.Type == 3:
print(f'{s}为图片')假设后面的所有操作,都建立在InlineShapes都是图片的基础上。
from win32com.client import Dispatch
client = Dispatch('kwps.Application')
client.Visible = 1
doc = client.Documents.Open(r'D:\demo.doc')
# 获取第一张图片,即获取一个InlineShape对象
pic1 = doc.InlineShapes(1)
# 所以图片纵横比,防止图片变形
pic1.LockAspectRatio = True
# 设置宽高 单位为磅
pic1.Width = 200
pic1.Height = 200
# 按比例缩放 90等于缩放为原尺寸的90%
pic1.ScaleHeight = 90
pic1.ScaleWidth = 90
三、图片对齐 InlineShape有Range对象,在设置对齐前,需要使用Range属性来返回一个Range对象。
from win32com.client import Dispatch
client = Dispatch('kwps.Application')
client.Visible = 1
doc = client.Documents.Open(r'D:\demo.doc')
# 获取第一张图片,即获取一个InlineShape对象
pic1 = doc.InlineShapes(1)
# 先转成Range对象,然后再设置对齐:居中对齐
pic1.Range.ParagraphFormat.Alignment = 1
四、设置图片题注
题注的形式如下,题注可以在图片上方也可以在下方,实际上在word中,图片、图表等资源都会有题注,在毕业论文中,题注是必要的格式,在文档中,题注是这么设置的(理想状态下是这样,但往往用户不会通过这种方式来设置题注)。
设置题注的方法InsertCaption()封装在Range和Selection中,在此使用Range进行演示。
"""沿用上一步的代码"""
pic1.Range.InsertCaption(
Label=-1, # 当前操作的对象为图片
Title='撸猫延年益寿', # 题注中的标题
TitleAutoText='', # 暂未清楚
Position=1, # 在图片的下方插入题注,0为上方
)
操作后的效果:
图片题注在实操中的运用
当我们要检测文档中题注是否合规时,有几种思路可供选择:
1、图片上方或下方的文本的Style是否为题注类型,下篇文章将单独讲解Style接口;
2、图片上方或下方的文本是否符合图+数字的,如图 1、图 2等;
仅靠第一点来判断是不够的,因为用户交过来的文档中的题主,也许根本没有题注格式,只有正文格式的题注。 |
|