吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 969|回复: 27
上一主题 下一主题
收起左侧

[Python 原创] docx文档中图片统一设置宽、高度——python-docx库

  [复制链接]
跳转到指定楼层
楼主
wapjsx 发表于 2024-11-11 16:38 回帖奖励
注:除正确安装Python外,还需要安装python-docx库
pip install python-docx



设置文档中所有图片的高、宽
[Python] 纯文本查看 复制代码
from docx import Document
from docx.shared import Cm

doc = Document(r'./mystudy/mydocx/myyuan/My练习1.docx')  # 需要处理图片的文档
print(len(doc.inline_shapes))   # 打印文档中图片的数量
h = Cm(5)           # 设置图片的高度为5厘米
w = Cm(5)           # 设置图片的宽度为5厘米
for i in doc.inline_shapes:   # 逐个图片设置
    i.width = w    # 设置图片的宽度
    i.height = h   # 按照图片高度
    
doc.save(r'./mystudy/mydocx/myyuan/My1.docx')   # 将设置好的图片的文档另存为My1.docx

设置文档中所有图片的高
[Python] 纯文本查看 复制代码
from docx import Document
from docx.shared import Cm

doc = Document(r'./mystudy/mydocx/myyuan/My练习1.docx')
print(len(doc.inline_shapes))
h = Cm(5)
for i in doc.inline_shapes:
    ha = i.height   # 图片的高度
    bili = h / ha   # 计算图片比例
    i.height = h    # 设置图片的高度
    i.width = int(i.width * bili) # 按照比例设置图片宽度
doc.save(r'./mystudy/mydocx/myyuan/My2.docx')

设置文档中所有图片的宽
[Python] 纯文本查看 复制代码
from docx import Document
from docx.shared import Cm

doc = Document(r'./mystudy/mydocx/myyuan/My练习1.docx')
print(len(doc.inline_shapes))
w = Cm(5)
for i in doc.inline_shapes:
    wa = i.width   # 图片的宽度
    bili = w / wa   # 计算图片比例
    i.width = w    # 设置图片的宽度
    i.height = int(i.height * bili) # 按照比例设置图片高度
doc.save(r'./mystudy/mydocx/myyuan/My3.docx')

免费评分

参与人数 7吾爱币 +5 热心值 +7 收起 理由
yoga2joker + 1 谢谢@Thanks!
wangdanq + 1 + 1 谢谢@Thanks!
lijun888 + 1 谢谢@Thanks!
naulcz + 1 + 1
yuyuanju + 1 + 1 我很赞同楼主的思路,对我很有帮助
ladengdeng + 1 + 1 学习了
laozhang4201 + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
sgwzq 发表于 2024-11-12 20:00
有没有什么写法,能统一把文档中图片设成单成一行,嵌入式,居中,表格统一用同一格式呀?感觉排版实验报告挺费劲的…
推荐
 楼主| wapjsx 发表于 2024-11-13 08:45 |楼主
本帖最后由 wapjsx 于 2024-11-13 09:09 编辑

sgwzq 发表于 2024-11-12 20:00
有没有什么写法,能统一把文档中图片设成单成一行,嵌入式,居中,表格统一用同一格式呀?感觉排版实验报告 ...

我感觉你的这个能用VBA即宏来实现;但具体如何实现,我也不太清楚。

至于python-docx,我引用一下官方文档的内容

At the time of writing, python-docx only supports inline pictures. Floating picturescan be added. If you have an active use case, submit a feature request on theissue tracker. The Document.add_picture() method adds a specified pictureto the end of the document in a paragraph of its own. However, by digginga little deeper into the API you can place text on either side of the picturein its paragraph, or both.
在撰写本文时,python-docx 只支持内嵌图片。可以添加浮动图片。如果您有活跃的用例,请在问题跟踪器上提交功能请求。Document.add_picture()方法会将指定的图片添加到文档末尾的段落中。不过,只要对 API 稍加深入研究,您就可以在以下两个段落中添加文本

注:我想着,python-docx应该也能实现层主需要的功能的,只是目前我还没有get到这个技能。

沙发
89684828 发表于 2024-11-11 17:29
3#
山上石 发表于 2024-11-11 17:46
厉害。有成品软件吗。。
4#
夏520 发表于 2024-11-11 17:56
感谢楼主分享
5#
wohaofanlou 发表于 2024-11-11 18:18
这思路不错...
6#
CFY001 发表于 2024-11-11 18:28
89684828 发表于 2024-11-11 17:29
感谢楼主分享,支持一下!

感谢楼主,学习学习
7#
yhpxzx 发表于 2024-11-11 20:26
支持一下 谢谢分享
8#
gxhc168 发表于 2024-11-11 22:09

感谢楼主的分享
9#
lijun888 发表于 2024-11-11 22:47
坐等成品软件
10#
wangdanq 发表于 2024-11-11 22:56
谢谢楼主分享  办公太方便了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 09:47

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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