Python從Word文檔中提取圖片并生成PPT的操作代碼
引言
在日常辦公場景中,我們經(jīng)常需要從 Word 文檔中提取圖片,并將這些圖片整理到 PowerPoint 幻燈片中。手動完成這一任務(wù)既耗時又容易出錯。本文將介紹如何使用 Python 編程語言和相關(guān)庫(如 python-docx 和 python-pptx)實(shí)現(xiàn)自動化處理,快速從多個 Word 文件中提取圖片并生成對應(yīng)的 PPT 文件。
背景與需求
假設(shè)你有一個文件夾,里面包含多個 .docx 格式的 Word 文檔,每個文檔中嵌入了若干圖片。你的目標(biāo)是:
- 提取圖片:從每個 Word 文檔中提取所有嵌入的圖片。
- 生成 PPT:為每張圖片創(chuàng)建一個獨(dú)立的幻燈片,并將其插入到 PowerPoint 文件中。
- 批量處理:能夠一次性處理文件夾中的所有 Word 文檔。
通過 Python 的強(qiáng)大功能,我們可以輕松實(shí)現(xiàn)這一流程。
解決方案概述
我們將使用以下 Python 庫來完成任務(wù):
python-docx:用于讀取 Word 文檔內(nèi)容。python-pptx:用于創(chuàng)建 PowerPoint 幻燈片。Pillow:用于處理圖片尺寸和格式。io:用于處理內(nèi)存中的二進(jìn)制數(shù)據(jù)流。
整個流程分為以下幾個步驟:
- 遍歷指定文件夾中的所有 Word 文件。
- 使用
python-docx提取 Word 文檔中的圖片。 - 將提取的圖片插入到 PowerPoint 幻燈片中。
- 保存生成的 PPT 文件。
代碼解析
以下是完整的 Python 代碼及其詳細(xì)說明:
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"? 無法讀取文件 {filename}: {e}")
continue # 跳過當(dāng)前文件,處理下一個
# 創(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)
# 打開圖片
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("所有文件處理完成!??")
代碼核心邏輯說明
遍歷文件夾:
- 使用
os.listdir()遍歷指定文件夾中的所有文件,并篩選出.docx格式的文件。
讀取 Word 文件:
- 使用
python-docx的Document類加載 Word 文檔。 - 如果文件損壞或無法讀取,捕獲異常并跳過該文件。
提取圖片:
- 遍歷 Word 文檔中的段落 (
paragraphs) 和運(yùn)行塊 (runs)。 - 使用 XML 命名空間查找嵌入的圖片資源 (
blip),并通過embed_id獲取圖片的二進(jìn)制數(shù)據(jù)。
創(chuàng)建 PPT 幻燈片:
- 使用
python-pptx創(chuàng)建一個新的 PowerPoint 演示文稿。 - 為每張圖片創(chuàng)建一個空白幻燈片,并調(diào)整幻燈片尺寸以適應(yīng)圖片。
保存 PPT 文件:
- 將生成的 PPT 文件保存到指定路徑,并打印成功信息。
總結(jié)
通過本文的代碼示例,你可以輕松實(shí)現(xiàn)從 Word 文檔中提取圖片并生成 PPT 的自動化流程。這種解決方案不僅提高了工作效率,還減少了人為操作的錯誤率。無論是日常辦公還是批量處理任務(wù),這段代碼都能為你節(jié)省大量時間。
以上就是Python從Word文檔中提取圖片并生成PPT的操作代碼的詳細(xì)內(nèi)容,更多關(guān)于Python提取Word圖片生成PTT的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python中操作MySQL數(shù)據(jù)庫時如何處理數(shù)據(jù)類型轉(zhuǎn)換問題
日常工作中,我們難免會遇到要直連數(shù)據(jù)庫來進(jìn)行數(shù)據(jù)的讀取與處理,然而會有幾種比較有特點(diǎn)的數(shù)據(jù)需要進(jìn)行轉(zhuǎn)換,這篇文章主要介紹了Python中操作MySQL數(shù)據(jù)庫時如何處理數(shù)據(jù)類型轉(zhuǎn)換問題的相關(guān)資料,需要的朋友可以參考下2026-01-01
Python讀取圖片屬性信息的實(shí)現(xiàn)方法
這篇文章介紹了利用Python讀取圖片屬性信息的方法,讀取的內(nèi)容包括GPS 信息、圖片分辨率、圖片像素、設(shè)備商、拍攝設(shè)備等,有需要的朋友們可以參考借鑒。2016-09-09
Python中實(shí)現(xiàn)3D模型動態(tài)加載的4種方法
本文討論了Python中實(shí)現(xiàn)3D模型動態(tài)加載的方法,包括PyOpenGL、Panda3D和ModernGL等,詳細(xì)介紹了基于PyOpenGL的渲染管線和模型加載;利用VPython的場景構(gòu)建和對象管理;基于ModernGL的高效GPU加速方案;四種方法綜合對比與未來優(yōu)化方向等場景,需要的朋友可以參考下2026-04-04
python從list列表中選出一個數(shù)和其對應(yīng)的坐標(biāo)方法
今天小編就為大家分享一篇python從list列表中選出一個數(shù)和其對應(yīng)的坐標(biāo)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07
python 實(shí)現(xiàn)12bit灰度圖像映射到8bit顯示的方法
這篇文章主要介紹了python 實(shí)現(xiàn)12bit灰度圖像映射到8bit顯示的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07

