解决python-docx设置字体为宋体无效

环境:python3.12 python-docx 1.1.2
最初使用的设置字体的代码:

    from docx import Documentfrom docx.oxml.ns import qndoc = Document()style = doc.styles['Title']style.font.name = 'Times New Roman' # 设置西文字体style._element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')  # 设置中文字体title = doc.add_paragraph('论文标题 Hello', style='Title')doc.save('文档1.docx')

如上分别设置了西文字体和中文字体,然而打开word后显示的字体和设置的并不一致:
在这里插入图片描述
显示中文是MS Gothic(中文标题),而英文字体是Calibri

探究原因

新建一个空白的Word文档,设置字体为宋体,英文字体TimesNewRoman,保存,将后缀从docx改为zip,解压缩,打开xml:word/document.xml如下
在这里插入图片描述
如上,这一段应用了段落样式a4,没有单独设置文字的样式,所以再打开xml:word/styles.xml,搜索a4找到定义:
在这里插入图片描述
如上分别有段落样式a4和文字样式a5;a4和a5是关联的;
同样的方法,查看代码生成的word/styles.xml如下:
在这里插入图片描述

代码生成的xml中,相比手动编辑的文档xml,多了很多其他属性,怀疑是这些属性导致的设置字体未生效。

解决

在代码中设置字体前,先清空所有属性

    from docx import Documentfrom docx.oxml.ns import qndoc = Document()style = doc.styles['Title']style._element.rPr.rFonts.clear()  # 加入这行style.font.name = 'Times New Roman' # 设置西文字体style._element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')  # 设置中文字体title = doc.add_paragraph('论文标题 Hello', style='Title')doc.save('文档1.docx')

再次运行,打开word查看,生效:
在这里插入图片描述

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

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

相关文章

828华为云征文|Flexus云服务器X实例快速部署在线测评平台,适用各种信息学教学

文章目录 如何选配Flexus云服务器X实例服务器HydroOJHOJ 服务器资源的选取基础配置实例规格镜像、存储、网络弹性公网IP云服务器名称 部署HydroOJ1.设置安全组、开放端口2.部署HydroOJ回到控制中心,远程登录 部署HOJ安装docker# 安装docker-compose部署HOJ 本篇幅为…

Kafka API操作

文章目录 1、 Kafka 基础API1_Topic基本操作 DML管理2_生产者3_消费者 sub/assign4_自定义分区策略5_序列化6_拦截器 2、Kafka API高级特性1_Offset自动控制2_Acks & Retries3_幂等性4_事务控制1、生产者事务Only2、消费者&生产者事务3、测试需要的三个消费者案例属性 …

常用环境部署(二十)——docker部署OpenProject

一、安装Docker及Docker-compose https://blog.csdn.net/wd520521/article/details/112609796 二、docker拉取OpenProject镜像 1、拉取镜像 docker pull openproject/openproject:14 注意: 拉取镜像的时候会有超时的现象出现,大家重新拉取几次就行…

JavaWeb开发中为什么Controller里面的方法是@RequestMapping?

在Java Web开发中,尤其是在使用Spring MVC框架时,RequestMapping注解被广泛应用于Controller层的方法上,这是因为RequestMapping是Spring MVC提供的一个核心注解,用于将HTTP请求映射到相应的处理器类或处理器方法上。通过这种方式…

AWTK HTML View 控件更新

AWTK HTML View 控件基于 Lite HTML 实现,从最初的版本开始,3 年多过去了,Lite HTML 做了大量的更新,最近抽空将 AWTK HTML View 控件适配到最新版本的 Lite HTML,欢迎大家使用。 AWTK HTML View 控件。HTML View 控件…

【数据结构(初阶)】——二叉树

【数据结构】——二叉树 文章目录 【数据结构】——二叉树前言1. 树的概念及结构1.1 树的概念1.2 树的结构 2. 二叉树的概念及结构2.1 二叉树的概念2.2 二叉树的结构2.3 二叉树的性质 3. 二叉树顺序结构及概念3.1 二叉树的顺序结构3.2 堆的概念及结构3.3 堆的实现3.3.1 堆的基本…

OpenAI 的 o1 大模型在数学和编码方面有了几乎 10 倍的能力提升!

你有没有想过,有一天人工智能可以在数学和编程这两个领域里,真正成为人类的“得力助手”,甚至是超越我们?最近,OpenAI 发布的 o1大模型在这方面取得了几乎 10 倍的能力提升。10 倍!你没有看错。这样的进步让人不禁怀疑:AI 真的能做到“秒懂”数学和编程吗?今天,我们就…

远程访问NAS速度慢??那是因为你没用对。。。

虽然局域网(内网)、公网(外网)经常被提到,但很多人依旧搞不懂分不清楚。。。 其实,简单的方法就是把局域网IP比喻成公司的内部通讯,公网IP看作公共通讯平台。 这样拥有公网IP能被直接远程访问&…

redis内存清理和linux系统清理缓存以及redis启动

1清空所有数据库 redis-cli FLUSHALL 2清空所有数据库redis-cli FLUSHDB 3. 删除指定的缓存键 redis-cli DEL <key>4. 设置键过期 redis-cli EXPIRE <key> <seconds>例如&#xff1a; redis-cli EXPIRE mykey 605.启动redis 这个启动命令要在/usr/loca…

【Canvas与密铺】90年代马赛克密铺效果 1920x1080

【成图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>20世纪90年代马赛克瓷砖效果1920x1080</title><style type&…

MySQL:bin log

redo log 它是物理日志&#xff0c;记录内容是“在某个数据页上做了什么修改”&#xff0c;属于 InnoDB 存储引擎。 而 binlog 是逻辑日志&#xff0c;记录内容是语句的原始逻辑&#xff0c;类似于“给 ID2 这一行的 c 字段加 1”&#xff0c;属于MySQL Server 层。 不管用什…

如何处理DDOS攻击问题

随着信息技术的飞速发展&#xff0c;网络已成为现代社会不可或缺的一部分&#xff0c;极大地便利了个人社交和商业活动。然而&#xff0c;网络空间在创造无限机遇的同时&#xff0c;也潜藏着诸多威胁&#xff0c;其中分布式拒绝服务攻击&#xff08;DDoS&#xff0c;Distribute…

全球工业经济系统极端降水暴露数据集(2010年、2016-2035年和2046-2065年)

全球工业经济系统极端降水暴露数据集 数据介绍 1. 数据的时间覆盖范围&#xff1a; 数据收集时期为2010年、2016-2035年和2046-2065年。 2. 空间覆盖和投影&#xff1a; 空间覆盖范围&#xff1a;全球 经度&#xff1a;-180 - 180 纬度&#xff1a;-90 - 90 投影&#x…

qemu和libvirt的配置对比

libvirt的很多配置选项其实是调用了qemu的接口&#xff0c;但也有增加和优化的地方&#xff0c;本文主要总结这些配置选项&#xff0c;当个手册来查询。 按照centos停服前最后一版centos-8.5.2111提供的rpm查看http://mirrors.aliyun.com/centos/8.5.2111/AppStream/aarch64/o…

【JUC】16-Java对象内存布局和对象头

1. 对象的内存布局 在HotSpot虚拟机里&#xff0c;对象在堆内存中的存储布局可以分为三个部分&#xff1a;对象头、实例数据和对齐填充。 对象头&#xff1a;由对象标记和类型指针。

[数据集][目标检测]烟叶病害检测数据集VOC+YOLO格式612张3类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;612 标注数量(xml文件个数)&#xff1a;612 标注数量(txt文件个数)&#xff1a;612 标注类别…

精心整理|算法备案大模型备案最新数据汇总

根据《互联网信息服务算法推荐管理规定》第二条 在中华人民共和国境内应用算法推荐技术提供互联网信息服务&#xff08;以下简称算法推荐服务&#xff09;&#xff0c;适用本规定。法律、行政法规另有规定的&#xff0c;依照其规定。前款所称应用算法推荐技术&#xff0c;是指利…

Excel数据转置|Excel数据旋转90°

Excel数据转置|Excel数据旋转90 将需要转置的数据复制在旁边空格处点击鼠标右键&#xff0c;选择图中转置按钮&#xff0c;即可完成数据的转置。&#xff01;&#xff01;&#xff01;&#xff01;非常有用啊啊啊&#xff01;&#xff01;&#xff01;

【数据结构-一维差分】力扣1854. 人口最多的年份

给你一个二维整数数组 logs &#xff0c;其中每个 logs[i] [birthi, deathi] 表示第 i 个人的出生和死亡年份。 年份 x 的 人口 定义为这一年期间活着的人的数目。第 i 个人被计入年份 x 的人口需要满足&#xff1a;x 在闭区间 [birthi, deathi - 1] 内。注意&#xff0c;人不…

【C++登堂入室】类和对象(中)——类的6个默认成员函数

目录 一、类的6个默认成员函数 ​编辑二、构造函数 2.1 概念 2.2 特性 三、析构函数 3.1 概念 3.2 特性 四、拷贝构造函数 4.1 概念 4.2 特征 五、赋值运算符重载 5.1 运算符重载 5.2 赋值运算符重载 5.3 前置和后置重载 六、日期类的实现 七、const成员 八、…