使用Python實(shí)現(xiàn)Office文檔(Word/Excel/PowerPoint)批量轉(zhuǎn)換為PDF
在處理不同格式的Office文檔(如Word、Excel和PowerPoint)時(shí),將其轉(zhuǎn)換為PDF格式是常見(jiàn)的需求。這種轉(zhuǎn)換不僅確保了文件在不同設(shè)備和操作系統(tǒng)間的一致性顯示,而且有助于保護(hù)原始內(nèi)容不被輕易修改,非常適合于正式報(bào)告、提案或資料歸檔等場(chǎng)景。通過(guò)使用Python,開(kāi)發(fā)者可以編寫(xiě)簡(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文檔
我們可以通過(guò)判斷文檔的文件后綴名,然后將對(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)文章
深入解析Python設(shè)計(jì)模式編程中建造者模式的使用
這篇文章主要介紹了深入解析Python設(shè)計(jì)模式編程中建造者模式的使用,建造者模式的程序通常將所有細(xì)節(jié)都交由子類實(shí)現(xiàn),需要的朋友可以參考下2016-03-03TensorFlow 輸出checkpoint 中的變量名與變量值方式
今天小編就為大家分享一篇TensorFlow 輸出checkpoint 中的變量名與變量值方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02Django對(duì)models里的objects的使用詳解
今天小編就為大家分享一篇Django對(duì)models里的objects的使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08Pyqt+matplotlib 實(shí)現(xiàn)實(shí)時(shí)畫(huà)圖案例
這篇文章主要介紹了Pyqt+matplotlib 實(shí)現(xiàn)實(shí)時(shí)畫(huà)圖案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03python3.6.3轉(zhuǎn)化為win-exe文件發(fā)布的方法
今天小編就為大家分享一篇python3.6.3轉(zhuǎn)化為win-exe文件發(fā)布的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10python獲取android設(shè)備的GPS信息腳本分享
這篇文章主要介紹了python獲取android設(shè)備的GPS信息腳本分享,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-03-03python lambda表達(dá)式(匿名函數(shù))寫(xiě)法解析
這篇文章主要介紹了python lambda表達(dá)式(匿名函數(shù))寫(xiě)法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09Keras之自定義損失(loss)函數(shù)用法說(shuō)明
這篇文章主要介紹了Keras之自定義損失(loss)函數(shù)用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06