使用Python實(shí)現(xiàn)Office文檔(Word/Excel/PowerPoint)批量轉(zhuǎn)換為PDF
在處理不同格式的Office文檔(如Word、Excel和PowerPoint)時(shí),將其轉(zhuǎn)換為PDF格式是常見的需求。這種轉(zhuǎn)換不僅確保了文件在不同設(shè)備和操作系統(tǒng)間的一致性顯示,而且有助于保護(hù)原始內(nèi)容不被輕易修改,非常適合于正式報(bào)告、提案或資料歸檔等場(chǎng)景。通過使用Python,開發(fā)者可以編寫簡(jiǎn)潔高效的腳本來(lái)自動(dòng)完成這些任務(wù),滿足企業(yè)或個(gè)人對(duì)于文檔管理的需求。本文將介紹如何使用Python代碼實(shí)現(xiàn)Word、Excel和PowerPoint文檔到PDF文件的批量轉(zhuǎn)換,同時(shí)提供用Python將Office文檔合并轉(zhuǎn)換為PDF的方法。
本文所使用的方法需要用到Spire.Office for Python,PyPI:pip install spire.office。
將Word、Excel和PowerPoint文檔批量分別轉(zhuǎn)換為PDF文檔
我們可以通過判斷文檔的文件后綴名,然后將對(duì)應(yīng)的文檔分別用Document類(Word)、Workbook類(Excel)和Presentation類(PowerPoint)的LoadFromFile方法載入,再分別使用SaveToFile(string: fileName, FileFormat.PDF)方法轉(zhuǎn)換并保存為PDF文檔,從而實(shí)現(xiàn)Office文檔到PDF文件的批量轉(zhuǎn)換。以下是詳細(xì)操作步驟:
- 導(dǎo)入所需模塊。
- 定義要處理的文件夾路徑,獲取指定類型的文件并排序。
- 創(chuàng)建一個(gè)PdfDocument對(duì)象。
- 遍歷文件列表的文件,根據(jù)后綴名判斷文件類型。
- 根據(jù)文件類型創(chuàng)建Document、Workbook或Presentation對(duì)象。
- 使用LoadFromFile方法載入文檔。
- 使用SaveToFile方法將文檔轉(zhuǎn)換為PDF并保存。
- 釋放資源。
代碼示例
from spire.pdf import PdfDocument
from spire.doc import Document
from spire.xls import Workbook
from spire.presentation import Presentation
from spire.doc import FileFormat as wFileFormat
from spire.xls import FileFormat as eFileFormat
from spire.presentation import FileFormat as pFileFormat
import os
# 定義要處理的文件夾路徑
folderPath = "Documents/"
# 獲取所有指定類型的文件并排序
extensions = [".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx"]
files = sorted([os.path.join(folderPath, f) for f in os.listdir(folderPath) if f.lower().endswith(tuple(extensions))])
# 創(chuàng)建一個(gè)PdfDocument對(duì)象
pdf = PdfDocument()
# 遍歷文件列表
for file in files:
extension = os.path.splitext(file)[1].lower()
if extension in [".doc", ".docx"]:
# 創(chuàng)建Document對(duì)象
doc = Document()
# 載入Word文檔
doc.LoadFromFile(file)
# 將Word文檔轉(zhuǎn)換為PDF
doc.SaveToFile(f"output/Documents/{os.path.basename(file)}.pdf", wFileFormat.PDF)
doc.Close()
if extension in [".xls", ".xlsx"]:
# 創(chuàng)建Workbook對(duì)象
workbook = Workbook()
# 載入Excel文件
workbook.LoadFromFile(file)
# 將Excel文件轉(zhuǎn)換為PDF
workbook.SaveToFile(f"output/Documents/{os.path.basename(file)}.pdf", eFileFormat.PDF)
workbook.Dispose()
if extension in [".ppt", ".pptx"]:
# 創(chuàng)建Presentation對(duì)象
presentation = Presentation()
# 載入PowerPoint文件
presentation.LoadFromFile(file)
# 將PowerPoint文件轉(zhuǎn)換為PDF
presentation.SaveToFile(f"output/Documents/{os.path.basename(file)}.pdf", pFileFormat.PDF)
presentation.Dispose()
# 關(guān)閉PdfDocument對(duì)象
pdf.Close()
結(jié)果

將Word、Excel、PowerPoint和PDF文檔合并轉(zhuǎn)換為單個(gè)PDF
除了批量分別轉(zhuǎn)換Office文檔外,我們還可以將各種類型的文檔合并轉(zhuǎn)換到同一個(gè)PDF文件中。以下是操作步驟:
- 導(dǎo)入所需模塊。
- 定義要處理的文件夾路徑,獲取指定類型的文件并排序。
- 創(chuàng)建一個(gè)PdfDocument對(duì)象pdf用于儲(chǔ)存最終PDF文檔。
- 創(chuàng)建一個(gè)新的PdfDocument對(duì)象temPdf和一個(gè)臨時(shí)PDF文檔地址用于轉(zhuǎn)換出的臨時(shí)PDF文檔。
- 遍歷文件列表的文件,根據(jù)后綴名判斷文件類型。
- 根據(jù)文件類型創(chuàng)建Document、Workbook或Presentation對(duì)象,并使用LoadFromFile方法載入文檔。
- 使用SaveToFile方法將文檔轉(zhuǎn)換為PDF并保存到臨時(shí)PDF路徑。
- 使用temPdf.LoadFromFile()方法載入臨時(shí)PDF,并使用pdf.AppendPage(temPdf)將其頁(yè)面插入到最終PDF中。
- 處理完成后,使用pdf.SaveToFile()方法保存最終PDF文檔。
- 清理臨時(shí)文件并釋放資源。
代碼示例
from spire.pdf import PdfDocument
from spire.doc import Document
from spire.xls import Workbook
from spire.presentation import Presentation
from spire.doc import FileFormat as wFileFormat
from spire.xls import FileFormat as eFileFormat
from spire.presentation import FileFormat as pFileFormat
import os
# 指定要處理的文件夾路徑
folderPath = 'Documents/'
# 獲取所有指定類型的文件并排序
extensions = ['.doc', '.docx', '.xls', '.xlsx', '.ppt', '.pptx']
files = sorted([os.path.join(folderPath, f) for f in os.listdir(folderPath) if f.lower().endswith(tuple(extensions))])
# 創(chuàng)建一個(gè)PdfDocument對(duì)象
pdf = PdfDocument()
# 創(chuàng)建一個(gè)臨時(shí)PDF和一個(gè)Stream對(duì)象
temPdf = PdfDocument()
temPdfPath = 'temp.pdf'
# 遍歷文件列表
for file in files:
extension = os.path.splitext(file)[1].lower()
if extension in ['.doc', '.docx']:
# 加載Word文檔
doc = Document()
doc.LoadFromFile(file)
# 保存為臨時(shí)PDF
doc.SaveToFile(temPdfPath, wFileFormat.PDF)
# 載入臨時(shí)PDF并將其頁(yè)面添加到最終PDF中
temPdf.LoadFromFile(temPdfPath)
pdf.AppendPage(temPdf)
doc.Close() # 顯式關(guān)閉文檔
elif extension in ['.xls', '.xlsx']:
# 加載Excel工作簿
workbook = Workbook()
workbook.LoadFromFile(file)
# 保存為臨時(shí)PDF
workbook.SaveToFile(temPdfPath, eFileFormat.PDF)
# 載入臨時(shí)PDF并將其頁(yè)面添加到最終PDF中
temPdf.LoadFromFile(temPdfPath)
pdf.AppendPage(temPdf)
workbook.Dispose() # 顯式關(guān)閉工作簿
elif extension in ['.ppt', '.pptx']:
# 加載PowerPoint演示文稿
presentation = Presentation()
presentation.LoadFromFile(file)
# 保存為臨時(shí)PDF
presentation.SaveToFile(temPdfPath, pFileFormat.PDF)
# 載入臨時(shí)PDF并將其頁(yè)面添加到最終PDF中
temPdf.LoadFromFile(temPdfPath)
pdf.AppendPage(temPdf)
presentation.Dispose() # 顯式關(guān)閉演示文稿
elif extension == '.pdf':
# 如果已經(jīng)是PDF,則直接載入并將其頁(yè)面添加到最終PDF中
temPdf.LoadFromFile(file)
pdf.AppendPage(temPdf)
# 保存最終PDF
outputPath = "output/CombinedPDF.pdf"
pdf.SaveToFile(outputPath)
# 清理臨時(shí)文件
if os.path.exists('temp.pdf'):
os.remove('temp.pdf')
# 釋放資源
pdf.Close()
temPdf.Close()
結(jié)果

本文演示了如何使用Python將Word、Excel和PowerPoint文檔批量分別轉(zhuǎn)換為PDF文檔,以及將它們合并轉(zhuǎn)換為單個(gè)PDF。Spire.Office for Python還支持進(jìn)行許多其他格式的轉(zhuǎn)換,請(qǐng)前往官網(wǎng)了解。
以上就是使用Python實(shí)現(xiàn)Office文檔(Word/Excel/PowerPoint)批量轉(zhuǎn)換為PDF的詳細(xì)內(nèi)容,更多關(guān)于Python Office轉(zhuǎn)PDF的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
對(duì)python xlrd讀取datetime類型數(shù)據(jù)的方法詳解
今天小編就為大家分享一篇對(duì)python xlrd讀取datetime類型數(shù)據(jù)的方法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2018-12-12
基于keras輸出中間層結(jié)果的2種實(shí)現(xiàn)方式
今天小編就為大家分享一篇基于keras輸出中間層結(jié)果的2種實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2020-01-01
pycharm 解除默認(rèn)unittest模式的方法
今天小編就為大家分享一篇pycharm 解除默認(rèn)unittest模式的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2018-11-11
python with statement 進(jìn)行文件操作指南
在Python中,with關(guān)鍵字是一個(gè)替你管理實(shí)現(xiàn)上下文協(xié)議對(duì)象的好東西。例如:file等。在file的結(jié)束,會(huì)自動(dòng)關(guān)閉該文件句柄。而這正是本文所需要的2014-08-08
python讀取mat文件生成h5文件的實(shí)現(xiàn)
這篇文章主要介紹了python讀取mat文件生成h5文件的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07
用OpenCV進(jìn)行年齡和性別檢測(cè)的實(shí)現(xiàn)示例
這篇文章主要介紹了用 OpenCV 進(jìn)行年齡和性別檢測(cè)的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
Python中PyExecJS(執(zhí)行JS代碼庫(kù))的具體使用
pyexecjs是一個(gè)用Python來(lái)執(zhí)行JavaScript代碼的工具庫(kù),本文主要介紹了Python中PyExecJS(執(zhí)行JS代碼庫(kù))的具體使用,具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02

