Python-docx 深入word源碼 自定義字符間距

代碼和實現效果

from docx import Document
from docx.oxml import OxmlElement
from docx.oxml.ns import qn
from docx.shared import Pt# 調整pt設置字間距
def SetParagraphCharSpaceByPt(run, pt=1):'''通過修改word源碼方式, 添加w:spacing標簽直接通過調整pt來設置字符間距'''# 獲取或創建<w:rPr>元素rPr = run._element.find(qn('w:rPr'))if rPr is None:rPr = OxmlElement('w:rPr')run._element.insert(0, rPr)# 創建<w:spacing>元素spaceChar = OxmlElement('w:spacing')spaceChar.set(qn('w:val'), str(pt * 20))# 添加<w:spacing>到<w:rPr>rPr.append(spaceChar)def AddParagraph(doc, text):p = doc.add_paragraph()run = p.add_run(text)return p, rundoc = Document()
p, run = AddParagraph(doc, text='這是一個段落')
SetParagraphCharSpaceByPt(run=run, pt=3)
doc.save('test.docx')

在這里插入圖片描述

原理和代碼思路

通過解壓的方式打開一個已經提前設置好字符間距的word文檔,在word/document.xml可以看到具體關于字符間距設置的XML標簽代碼

<w:p><w:r><w:rPr><w:rFonts w:ascii="黑體" w:hAnsi="黑體" w:eastAsia="黑體"/><w:b w:val="0"/><w:i w:val="0"/><w:sz w:val="32"/><w:spacing w:val="150.0"/></w:rPr><w:t>這是一個段落</w:t></w:r>
</w:p>
  1. <w:p>表示word:paragraph
  2. <w:r>表示word:run
  3. <w:t>表示word:text,定義段落的文本內容;
  4. <w:rPr>表示word:runProperty,而在<w:rPr>標簽下的是各類屬性標簽,其中<w:spacing>為字符間距,這是需要coding為我們自定義的標簽。而上述示例Python代碼也在對這個標簽進行創建并賦值;
  5. <w:spacing>標簽中的屬性w:val代表字符間距大小,其值等于pt(磅) * 20

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/213834.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/213834.shtml
英文地址,請注明出處:http://en.pswp.cn/news/213834.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Blender學習--制作帶骨骼動畫的機器人

1. 首先創建一個機器人模型 時間關系&#xff0c;這部分步驟有時間補充 2. 然后為機器人創建一副骨架 時間關系&#xff0c;這部分步驟有時間補充 3.骨骼綁定 切換到物體模式&#xff0c;選中機器人頭部&#xff0c;Shift選中骨骼&#xff0c;切換到姿態模式&#xff0c;&am…

SpringBoot集成系列--xxlJob

文章目錄 一、搭建調度中心xxl-job-admin1、下載項目2、調整項目參數3、執行初始化數據庫SQL4、啟動項目5、訪問 二、集成步驟1、添加xxl-job的依賴2、添加xxl-job的依賴3、配置執行器4、創建執行器5、開發任務1&#xff09;方式1&#xff1a;BEAN模式&#xff08;方法形式&…

RocketMQ源碼

RocketMQ的核心三流程 啟動流程 RocketMQ服務端由兩部分組成NameServer和Broker&#xff0c;NameServer是服務的注冊中心&#xff0c;Broker會把自己的地址注冊到NameServer&#xff0c;生產者和消費者啟動的時候會先從NameServer獲取Broker的地址&#xff0c;再去從Broker發…

【自動駕駛】2023年度盤點:智能汽車、自動駕駛、車聯網必讀書

2023年&#xff0c;智能駕駛和新能源汽車行業仍然有著肉眼可見的新進展。自動駕駛技術繼續嘗試從輔助駕駛向自動駕駛的過渡&#xff0c;更重要的是相關技術成本的下降。根據《全球電動汽車展望2023》等行業報告&#xff0c;預計2023年平均成本將降至100美元/千瓦時以下&#xf…

知識筆記(四十八)———mysql的優缺點

MySQL作為一個廣泛應用的關系型數據庫管理系統&#xff0c;具有以下優點和缺點&#xff1a; 優點&#xff1a; 開源和免費&#xff1a;MySQL是開源軟件&#xff0c;用戶可以免費獲取和使用它。這使得MySQL成為個人開發者和小型組織的理想選擇。 良好的性能&#xff1a;MySQL經…

成都工業學院Web技術基礎(WEB)實驗八:BOM、DOM基本操作

寫在前面 1、基于2022級計算機大類實驗指導書 2、代碼僅提供參考&#xff0c;前端變化比較大&#xff0c;按照要求&#xff0c;只能做到像&#xff0c;不能做到一模一樣 3、圖片和文字僅為示例&#xff0c;需要自行替換 4、如果代碼不滿足你的要求&#xff0c;請尋求其他的…

【開源】基于Vue.js的就醫保險管理系統

文末獲取源碼&#xff0c;項目編號&#xff1a; S 085 。 \color{red}{文末獲取源碼&#xff0c;項目編號&#xff1a;S085。} 文末獲取源碼&#xff0c;項目編號&#xff1a;S085。 目錄 一、摘要1.1 項目介紹1.2 項目錄屏 二、功能模塊2.1 科室檔案模塊2.2 醫生檔案模塊2.3 預…

最好的貓罐頭品牌有哪些?精選的5款口碑好的貓罐頭推薦!

對于一個剛入門的養貓小白來說&#xff0c;面對市面上琳瑯滿目的貓罐頭選擇確實讓人頭大。我們總想選到營養價值高的罐頭&#xff0c;但又怕貓咪不喜歡吃&#xff0c;也擔心選到不安全的產品。 最好的貓罐頭品牌有哪些&#xff1f;根據我開寵物店7年的經驗&#xff0c;今天我將…

Java基礎——static關鍵字

對象只有在new的時候才會分配空間&#xff0c;有時候我們希望不管是否產生了對象或無論產生了多少對象的情況下&#xff0c;某些特定的數據在內存空間里只有一份&#xff0c;就可以static修飾成員&#xff0c;也稱靜態成員或類成員。 static可修飾屬性、方法、代碼塊、內部類。…

python一點通:參數列表里面有星號 * 什么意思?

在Python類或函數參數列表中&#xff0c;我們有時會看到星號*&#xff0c;它是什么意思呢&#xff1f; 什么是僅限關鍵字參數&#xff1f; Python 3中引入的僅限關鍵字參數是指必須通過其名稱來指定的函數或方法參數。它們避免了由于存在多個參數而引起的混淆&#xff0c;增強…

「哈士奇贈書活動 - 46期」-『技術人修煉之道:從程序員到百萬高管的72項技能(第2版)』

?? 贈書 - 《技術人修煉之道&#xff08;第2版&#xff09;》 ?? 內容簡介 本書旨在幫助計算機IT技術人員提升職場核心技能、架構思維、團隊管理能力、商業認知&#xff0c;讓每一位普通的技術從業者&#xff0c;修煉成為"技術職場超級個體”&#xff0c;通過全面升級…

IntelliJ IDEA無公網遠程連接Windows本地Mysql數據庫提高開發效率

&#x1f525;博客主頁&#xff1a; 小羊失眠啦. &#x1f3a5;系列專欄&#xff1a;《C語言》 《數據結構》 《Linux》《Cpolar》 ??感謝大家點贊&#x1f44d;收藏?評論?? 前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;…

windows啟動出現 zookeeper此處不應有java

可能是Java 路徑出了問題&#xff0c;這個programFiles直接有空格&#xff0c;沒錯就有空格&#xff0c;筆者一開始以為這么點算什么空格&#xff0c;需要把這個對應的Java文件到別的英文路徑下&#xff0c;并且修改環境變量。就可以啟動的。 還可以啟動方式有很多種&#xff0…

2.2 模型基礎

建模流程 作業 這次搞了10天左右終于把作業做完了。 先是去學習了下如何建模->然后將模型導入Substance Painter里繪制貼圖->最后導入到unity中&#xff08;雖然最后效果很差&#xff09;&#xff0c;但是回過頭來看整個過程學習到了次時代美術的工作流&#xff0c;思考…

658. 找到 K 個最接近的元素

658. 找到 K 個最接近的元素 Java代碼&#xff1a;滑窗 class Solution {public List<Integer> findClosestElements(int[] arr, int k, int x) {List<Integer> list new ArrayList<>();for (int i 0; i < arr.length; i) {arr[i] arr[i] - x;}for(i…

【打卡】牛客網:BM63 跳臺階

自己寫的 class Solution { public:/*** 代碼中的類名、方法名、參數名已經指定&#xff0c;請勿修改&#xff0c;直接返回方法規定的值即可** * param number int整型 * return int整型*/int jumpFloor(int number) {// write code hereif(number 1)return 1;if(number 2)r…

簡單實現Spring容器(二) 封裝BeanDefinition對象放入Map

階段2: // 1.編寫自己的Spring容器,實現掃描包,得到bean的class對象.2.掃描將 bean 信息封裝到 BeanDefinition對象,并放入到Map.思路: 1.將 bean 信息封裝到 BeanDefinition對象中,再將其放入到BeanDefinitionMap集合中,集合的結構大概是 key[beanName]–value[beanDefintion…

MySQL行鎖范圍分析(行鎖、間隙鎖、臨鍵鎖)

MySQL 中鎖的概念 排它鎖&#xff08;Exclusive Lock&#xff09; X 鎖&#xff0c;也稱為寫鎖&#xff0c;若事務T對對象A加上X鎖&#xff0c;則只允許T讀取和修改A&#xff0c;其他任何事物都不能再對A 加任何鎖&#xff0c;直到T釋放A上的鎖。 SELECT…FOR UPDATE 對讀取的…

風控之Android設備指紋技術

標識性參數——Android ID、IMEI、OAID非標識性參數 非標識性參數——手機運營商 1 設備指紋 簡單來講&#xff0c;設備指紋是指用于標識出該設備的設備特征。可以是單一設備特征&#xff0c;也可以是多種設備特征的組合&#xff0c;以方便風控系統對設備的唯一性進行識別。…

產品入門第一講:Axure的安裝以及基本使用

&#x1f4da;&#x1f4da; &#x1f3c5;我是默&#xff0c;一個在CSDN分享筆記的博主。&#x1f4da;&#x1f4da; ??? &#x1f31f;在這里&#xff0c;我要推薦給大家我的專欄《Axure》。&#x1f3af;&#x1f3af; &#x1f680;無論你是編程小白&#xff0c;還是有…