Python從Word文檔中提取圖片并生成PPT的操作代碼
引言
在日常辦公場(chǎng)景中,我們經(jīng)常需要從 Word 文檔中提取圖片,并將這些圖片整理到 PowerPoint 幻燈片中。手動(dòng)完成這一任務(wù)既耗時(shí)又容易出錯(cuò)。本文將介紹如何使用 Python 編程語(yǔ)言和相關(guān)庫(kù)(如 python-docx 和 python-pptx)實(shí)現(xiàn)自動(dòng)化處理,快速?gòu)亩鄠€(gè) Word 文件中提取圖片并生成對(duì)應(yīng)的 PPT 文件。
背景與需求
假設(shè)你有一個(gè)文件夾,里面包含多個(gè) .docx 格式的 Word 文檔,每個(gè)文檔中嵌入了若干圖片。你的目標(biāo)是:
- 提取圖片:從每個(gè) Word 文檔中提取所有嵌入的圖片。
- 生成 PPT:為每張圖片創(chuàng)建一個(gè)獨(dú)立的幻燈片,并將其插入到 PowerPoint 文件中。
- 批量處理:能夠一次性處理文件夾中的所有 Word 文檔。
通過(guò) Python 的強(qiáng)大功能,我們可以輕松實(shí)現(xiàn)這一流程。
解決方案概述
我們將使用以下 Python 庫(kù)來(lái)完成任務(wù):
python-docx:用于讀取 Word 文檔內(nèi)容。python-pptx:用于創(chuàng)建 PowerPoint 幻燈片。Pillow:用于處理圖片尺寸和格式。io:用于處理內(nèi)存中的二進(jìn)制數(shù)據(jù)流。
整個(gè)流程分為以下幾個(gè)步驟:
- 遍歷指定文件夾中的所有 Word 文件。
- 使用
python-docx提取 Word 文檔中的圖片。 - 將提取的圖片插入到 PowerPoint 幻燈片中。
- 保存生成的 PPT 文件。
代碼解析
以下是完整的 Python 代碼及其詳細(xì)說(shuō)明:
from docx import Document
from pptx import Presentation
from pptx.util import Inches
from PIL import Image
import io
import os
# 指定包含 Word 文件的文件夾路徑
folder_path = r"C:\Users\Administrator\Desktop\tt" # 修改為你的文件夾路徑
# 遍歷文件夾中的所有 Word 文件
for filename in os.listdir(folder_path):
if filename.endswith(".docx"):
word_path = os.path.join(folder_path, filename)
ppt_name = os.path.splitext(filename)[0] + ".pptx"
ppt_path = os.path.join(folder_path, ppt_name)
print(f"正在處理:{filename}")
try:
# 嘗試讀取Word文件
doc = Document(word_path)
except Exception as e:
print(f"? 無(wú)法讀取文件 {filename}: {e}")
continue # 跳過(guò)當(dāng)前文件,處理下一個(gè)
# 創(chuàng)建PPT演示文稿
prs = Presentation()
# 提取圖片并插入PPT
for para in doc.paragraphs:
for run in para.runs:
blip = run._r.find('.//a:blip', namespaces={'a': 'http://schemas.openxmlformats.org/drawingml/2006/main'})
if blip is not None:
embed_id = blip.get('{http://schemas.openxmlformats.org/officeDocument/2006/relationships}embed')
if embed_id and embed_id in run.part.related_parts:
image_part = run.part.related_parts[embed_id]
img_stream = io.BytesIO(image_part.blob)
# 打開(kāi)圖片
img = Image.open(img_stream)
img_width, img_height = img.size
# 創(chuàng)建PPT幻燈片
slide = prs.slides.add_slide(prs.slide_layouts[6])
# 設(shè)置PPT大小與圖片尺寸一致
prs.slide_width = Inches(img_width / 100)
prs.slide_height = Inches(img_height / 100)
# 將圖片添加到幻燈片
slide.shapes.add_picture(img_stream, 0, 0, width=Inches(img_width / 100), height=Inches(img_height / 100))
# 保存PPT
prs.save(ppt_path)
print(f"? 生成PPT:{ppt_path}")
print("所有文件處理完成!??")
代碼核心邏輯說(shuō)明
遍歷文件夾:
- 使用
os.listdir()遍歷指定文件夾中的所有文件,并篩選出.docx格式的文件。
讀取 Word 文件:
- 使用
python-docx的Document類加載 Word 文檔。 - 如果文件損壞或無(wú)法讀取,捕獲異常并跳過(guò)該文件。
提取圖片:
- 遍歷 Word 文檔中的段落 (
paragraphs) 和運(yùn)行塊 (runs)。 - 使用 XML 命名空間查找嵌入的圖片資源 (
blip),并通過(guò)embed_id獲取圖片的二進(jìn)制數(shù)據(jù)。
創(chuàng)建 PPT 幻燈片:
- 使用
python-pptx創(chuàng)建一個(gè)新的 PowerPoint 演示文稿。 - 為每張圖片創(chuàng)建一個(gè)空白幻燈片,并調(diào)整幻燈片尺寸以適應(yīng)圖片。
保存 PPT 文件:
- 將生成的 PPT 文件保存到指定路徑,并打印成功信息。
總結(jié)
通過(guò)本文的代碼示例,你可以輕松實(shí)現(xiàn)從 Word 文檔中提取圖片并生成 PPT 的自動(dòng)化流程。這種解決方案不僅提高了工作效率,還減少了人為操作的錯(cuò)誤率。無(wú)論是日常辦公還是批量處理任務(wù),這段代碼都能為你節(jié)省大量時(shí)間。
以上就是Python從Word文檔中提取圖片并生成PPT的操作代碼的詳細(xì)內(nèi)容,更多關(guān)于Python提取Word圖片生成PTT的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python實(shí)現(xiàn)Flappy Bird源碼
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)Flappy Bird源碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-12-12
Pyinstaller+Pipenv打包Python文件的實(shí)現(xiàn)示例
相信大家都試過(guò)將Python文件進(jìn)行打包,本文主要介紹了Pyinstaller+Pipenv打包Python文件,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
Python實(shí)現(xiàn)線程池工作模式的案例詳解
這篇文章給大家介紹Python實(shí)現(xiàn)線程池工作模式的相關(guān)知識(shí),本文基于Socket通信方法,自定義數(shù)據(jù)交換協(xié)議,圍繞蘋(píng)果樹(shù)病蟲(chóng)害識(shí)別需求,迭代構(gòu)建了客戶機(jī)/服務(wù)器模式的智能桌面App,感興趣的朋友跟隨小編一起看看吧2022-06-06
python使用正則表達(dá)式檢測(cè)密碼強(qiáng)度源碼分享
客戶系統(tǒng)升級(jí),要求用戶密碼符合一定的規(guī)則,即:包含大小寫(xiě)字母、數(shù)字、符號(hào),長(zhǎng)度不小于8,于是先用python寫(xiě)了個(gè)簡(jiǎn)單的測(cè)試程序:2014-06-06
深入理解Python虛擬機(jī)中浮點(diǎn)數(shù)(float)的實(shí)現(xiàn)原理及源碼
在本篇文章當(dāng)中主要分析在 cpython 虛擬機(jī)當(dāng)中 float 類型的實(shí)現(xiàn)原理以及與他相關(guān)的一些源代碼,文中的示例代碼講解詳細(xì),感興趣的可以了解一下2023-03-03

