办公问答网

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 87|回复: 0

win32com操作word API精讲 第十三集 图片操作 ...

[复制链接]

1

主题

4

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2023-3-23 18:46:16 | 显示全部楼层 |阅读模式
第十三集终于姗姗来迟,本文章主要讲通过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等;
仅靠第一点来判断是不够的,因为用户交过来的文档中的题主,也许根本没有题注格式,只有正文格式的题注。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|办公问答网

GMT+8, 2025-7-5 14:52 , Processed in 0.082680 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc. Templated By 【未来科技 www.veikei.com】设计

快速回复 返回顶部 返回列表