使用Python批量修改PPT字体和提取全部文字到word

目录

    • 一、修改PPT中每一页的字体
    • 二、将文本框中的字都放到word里

将一份PPT的每一页字体、大小、是否加粗都统一,是一个常见需求。特别是字体统一是高频、热点需求。在python操控PPT常用库python-pptx中有一个bug,对字体的修改只能修改数字和英文字母,无法修改汉字。即 run.font.namet属性只能修改英文和数字,并且 run.font.name识别的也是英文和数字的名称。如文本框中英文和数字是’Arial’汉字是宋体,则会返回’Arial’。因为这个包,没有针对汉字的API,而且这个包很久没更新了,开发者提供了解决思路是修改office文件的底层xml来实现,修改xml中的a:ea的typeface属性,网上已经有人用 pptx_ea_font 这个包实现了该功能。

首先安装对应的包
pptx和docx的包为,注意不是pptx和docx

pip install python-pptx
pip install python-docx

pptx_ea_font 安装方法为

pip install pptx_ea_font 

导入相应模块

from pptx import Presentation
import pptx_ea_font
from docx import Document
from pptx.util import Cm, Pt

一、修改PPT中每一页的字体

1、可以修改字体、大小、是否加粗
2、图形、图表、表格的汉字还不能修改,需要下一步增加该功能

函数如下:

#修改字体类型和大小
def change_ppt_font(ppt_file, new_font,new_size=None,bold=None):# 打开PPT文件presentation = Presentation(ppt_file)# 循环遍历每个slidefor slide in presentation.slides:# 循环遍历slide中的每个shapefor shape in slide.shapes:# 检查shape类型是否为文本框if shape.has_text_frame:# 获取文本框中的文字text_frame = shape.text_framefor paragraph in text_frame.paragraphs:for run in paragraph.runs:# 修改字体pptx_ea_font.set_font(run,new_font)#以下方法只能修改数字和英文#run.font.name = new_fontif new_size :run.font.size = Pt(new_size)if bold is not None:run.font.bold = bold# 保存修改后的PPT文件new_ppt_file = ppt_file.replace(".pptx", "_new.pptx")presentation.save(new_ppt_file)print("字体修改完毕!")

以上代码只能修改文本框,如果要修改图形中的字体需要用VBA。alt+F11 插入模块,复制以下代码 按F5
代码来自 TomasZh
注意:以下代码依然不能修改 图表 chart中的文本

Sub SetAllFontToYahei()
''' set all fonts to 微软雅黑Dim sld As SlideDim shp As Shape, chd As ShapeDim i&, j&For Each sld In ActivePresentation.Slidesi = i + 1Debug.Print "Slide " & iFor Each shp In sld.Shapesj = j + 1Debug.Print vbTab & "Shape " & jIf shp.Type = msoGroup ThenFor Each chd In shp.GroupItemsIf chd.HasTextFrame Thenchd.TextFrame.TextRange.Font.Name = "微软雅黑"chd.TextFrame.TextRange.Font.NameFarEast = "微软雅黑"End IfNextElseIf shp.HasTextFrame Thenshp.TextFrame.TextRange.Font.Name = "微软雅黑"shp.TextFrame.TextRange.Font.NameFarEast = "微软雅黑"End IfNextNextMsgBox "Task completed!"End Sub

二、将文本框中的字都放到word里

def extract_text_from_ppt(ppt_file, word_file):# 打开PPT文件presentation = Presentation(ppt_file)# 创建新的Word文档word_doc = Document()# 循环遍历每个slidefor slide in presentation.slides:# 循环遍历slide中的每个shapefor shape in slide.shapes:# 检查shape类型是否为文本框if shape.has_text_frame:# 获取文本框中的文字text_frame = shape.text_framefor paragraph in text_frame.paragraphs:# 提取文本到Word中word_doc.add_paragraph(paragraph.text)# 保存Word文档word_doc.save(word_file)print("文本提取完毕!")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/123813.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智慧公厕:提升城市卫生与舒适体验的未来之选

智慧公厕作为城市管理的一项重要创新,已经在环境监测调控、厕位监测引导、自动化清洁、自动灯光控制、远程控制等方面展现出先进而完善的功能。它不仅提升了市民对公共厕所卫生、舒适、安全等方面的使用体验,同时也为城市管理带来了颇具引领性的改革和升…

大数据Flink(一百零三):SQL 表值聚合函数(Table Aggregate Function)

文章目录 SQL 表值聚合函数(Table Aggregate Function) SQL 表值聚合函数(Table Aggregate Function) Python UDTAF,即 Python TableAggregateFunction。Python UDTAF 用来针对一组数据进行聚合运算,比如同一个 window 下的多条数据、或者同一个 key 下的多条数据等,与…

一文详解汽车电子LIN总线

0.摘要 汽车电子LIN总线不同于CAN总线。 LIN总线基本上是CAN总线的廉价补充,相比于CAN总线,它提供较低的可靠性和性能。同时LIN总线也是一个应用非常广泛的网络协议,并且越来越受欢迎。 再一次,我们准备了一个关于LIN总线的简要…

PHP | php入门知识(if、switch、数组、数组排序、超级全局变量)

文章目录 一、php条件语句(if、switch)1. if语句2. if...else语句3. if...elseif...else语句4. switch语句 二、数组1)数值数组1. 创建数值数组的两种方法:2. 获取数组的长度(count()函数)3. 遍历数值数组&…

JavaScript 中的负无穷大是什么?

在 JavaScript 中,负无穷大表示为 -Infinity。它是一个特殊的数值,用于表示比任何实数都要小的值。 负无穷大用于表示超出数值范围的情况,例如在进行数学计算时发生了溢出或出现了无法表示的结果。它可以通过将负无穷大赋值给变量或通过某些…

接触式静电压测量仪的用途和操作方法

接触式静电压测量仪是一种用于测量静电电荷的仪器,主要用于工业生产和科学研究领域。它可以测量静电电压、静电场强、静电电荷等参数,对于静电控制和环境监测等方面具有重要的作用。 接触式静电压测量仪的操作方法如下: 接通电源:…

系统架构设计师-第17章-通信系统架构设计理论与实践-软考学习笔记

通信系统〈也称为通信网络〉是利用各种通信线路将地理上分散的、具有独立功能的计算机系统和通信设备按不同的形式连接起来,依靠网络软件及通信协议实现资源共享和信息传递的系统。 通信系统概述 通信系统网络架构 通信网络从大的右面主要包括局域网、广域网、移…

libv4l2 交叉编译

错误1:‘SYS_open’未声明(在此函数内第一次使用) 修改 ../libv4lconvert/libv4lsyscall-priv.h 对使用 SYS_open进行判断 #ifdef SYS_openat #define SYS_OPEN(file, oflag, mode) \ syscall(SYS_openat, AT_FDCWD, (const char *)(file), (int)(oflag), (mod…

Pycharm使用阿里云SDK发送短信(超详细+避坑!!)

文章目录 1. 注册阿里云2. 创建签名3. 创建模板4. 创建AccessKey5. API发送测试6. 获取示例7. pycharm发送验证码7.1 安装sdk7.2 参数修改7.3 发送随机四位数字7.4 验证码信息返回7.5 简易版代码: 1. 注册阿里云 访问阿里云官网,进行注册 https://www.…

OpenCV—自动驾驶实时道路车道检测(完整代码)

自动驾驶汽车是人工智能领域最具颠覆性的创新之一。在深度学习算法的推动下,它们不断推动我们的社会向前发展,并在移动领域创造新的机遇。自动驾驶汽车可以去传统汽车可以去的任何地方,并且可以完成经验丰富的人类驾驶员所做的一切。但正确地训练它是非常重要的。自动驾驶汽…

【uniapp】富文本

1、富文本显示&#xff0c;只显示文字&#xff0c;其余html不显示 功能&#xff1a;红框处其实是一个富文本&#xff0c;有图片之类的。但是现在不想根据html显示&#xff0c;只显示文字。 直接上代码 //内容显示 <view>{{item.fhArticleVo.content}}</view> // …

10.30二叉树一些性质,找公共祖先(一般与搜索树),操作的复杂度,选择题细节

课上 一些结论&#xff0c;性质 n0,n1,n2指的是子结点的数量&#xff0c;n0没有子节点&#xff0c;叶子结点 n2*n2n11,若n1为奇数&#xff0c;则n为偶数&#xff0c;不然&#xff0c;则为奇数 满二叉树 没有度为1的结点&#xff0c;即每个结点要么没有孩子结点&#xff0c;要么…

js笔记(函数参数、面向对象、装饰器、高级函数、捕获异常)

JavaScript 笔记 函数参数 默认参数 在 JavaScript 中&#xff0c;我们可以为函数的参数设置默认值。如果调用函数时没有传递参数&#xff0c;那么参数将使用默认值。 function greet(name World) {console.log(Hello, ${name}!); }greet(); // 输出&#xff1a;Hello, Wo…

【CPP】类和对象

1- Classes and Objects Structures A struct in C is a type consisting of a sequence of data membersSome functions/Statements are needed to operate the data members of an object of a struct type 不不小心操作错误&#xff0c;不小心越界 Classes You should b…

C++设计模式_18_State 状态模式

State和Memento被归为“状态变化”模式。 文章目录 1. “状态变化”模式1.1 典型模式 2. 动机 (Motivation)3. 代码演示State 状态模式3.1 常规方式3.2 State 状态模式 4. 模式定义5. 结构( Structure )6. 要点总结7. 其他参考 1. “状态变化”模式 在组件构建过程中&#xf…

Ionic 7 版本发布 - 免费开源、超受欢迎的移动应用开发 UI 工具包,主题优雅且完美支持 Vue.js

Ionic 是一款优秀的移动 UI 框架&#xff0c;迭代也很快&#xff0c;现在也支持了 Vue&#xff0c;是时候向大家推荐用来开发 APP 了。 Ionic 全称是 Ionic Framework&#xff0c;是一个功能强大的开源 UI 工具库&#xff0c;用来帮助前端开发者构建跨平台的移动应用。 Ionic …

Go语言开发网站

引言 随着互联网的迅速发展&#xff0c;网站已经成为人们获取各种信息和服务的主要途径。而开发一个高性能、可扩展的网站是一项挑战。Go语言作为一门现代化的编程语言&#xff0c;具有强大的并发能力和高效的性能&#xff0c;逐渐成为网站开发的首选语言之一。本文将介绍如何…

rhcsa目录练习

要求 在根下创建一个叫做test的目录&#xff0c;在test的目录下创建三个普通文件file1 file2 file3&#xff0c;给file1创建一个软链接aa&#xff0c;给file2创建两个硬链接&#xff0c;在test目录下创建一个ceshi的目录&#xff0c;在ceshi的目录下创建a1-a8,b1-b8,ac1-ad8的…

【前端框架】本文带你了解nvue

前言 各位公主给&#x1f478;&#x1f3fb;&#xff0c;王子&#x1f934;&#x1f3fb;好&#xff0c;我是你们的Aic山鱼&#xff0c;专注于前端领域的垂直更新。我热衷于分享我的经验和知识&#xff0c;希望能够帮助更多的人在前端领域取得进步。作为一名前端开发人员&#…

Linux 系统调用IO口,利用光标偏移实现文件复制

用系统调用IO函数实现从一个文件读取最后2KB数据并复制到另一个文件中&#xff0c;源文件以只读方式打开&#xff0c;目标文件以只写的方式打开&#xff0c;若目标文件不存在&#xff0c;可以创建并设置初始值为0664&#xff0c;写出相应代码&#xff0c;要对出错情况有一定的处…