Python利用Spire.Doc for Python高效實現(xiàn)Word轉(zhuǎn)PDF
在工作中,經(jīng)常會遇到需要把 Word 文檔轉(zhuǎn)換成 PDF 的情況。比如生成報表、分發(fā)文檔、或者做歸檔保存,PDF 格式在排版和跨平臺顯示上更穩(wěn)定。
傳統(tǒng)的做法往往依賴 Microsoft Office 或 LibreOffice 等軟件來完成轉(zhuǎn)換,但在自動化環(huán)境(如服務(wù)器、Docker 容器、Linux 系統(tǒng))中,這類方式會遇到一些限制:需要額外安裝軟件、依賴復(fù)雜,甚至存在兼容性問題。
因此,很多開發(fā)者更希望使用無依賴的 Python 庫來完成轉(zhuǎn)換。本文將介紹如何借助 Spire.Doc for Python庫,在不依賴 Office 的情況下,實現(xiàn) doc 轉(zhuǎn) pdf、docx 轉(zhuǎn) pdf,并支持批量轉(zhuǎn)換與多種轉(zhuǎn)換設(shè)置。
一、安裝 Spire.Doc for Python
在使用之前,需要先安裝庫。可以直接使用以下 pip 命令來安裝:
pip install spire-doc
安裝完成后,就可以在 Python 代碼中使用 from spire.doc import * 導(dǎo)入該庫的模塊來處理和轉(zhuǎn)換 Word 文檔。
二、Python Word 轉(zhuǎn) PDF 基本示例
下面是 Word 轉(zhuǎn) PDF 一個最基礎(chǔ)的示例。只需要兩步:加載文件、保存為 PDF。
from spire.doc import *
# 創(chuàng)建文檔對象
doc = Document()
# 加載 Word 文件
doc.LoadFromFile("input.docx")
# 轉(zhuǎn)換并保存為 PDF
doc.SaveToFile("output.pdf", FileFormat.PDF)
# 關(guān)閉文檔,釋放資源
doc.Close()
代碼說明:
Document():創(chuàng)建一個 Word 文檔對象。LoadFromFile("input.docx"):加載指定路徑的 Word 文件。SaveToFile("output.pdf", FileFormat.PDF):將文檔保存為 PDF 格式。Close():關(guān)閉文檔,釋放資源。
三、批量轉(zhuǎn)換 Word 文檔為 PDF
如果有大量 Word 文件需要轉(zhuǎn)換,可以將它們放在一個目錄下,然后遍歷目錄并批量轉(zhuǎn)換。以下是具體的代碼示例:
import os
from spire.doc import *
input_dir = "word_files"
output_dir = "pdf_files"
os.makedirs(output_dir, exist_ok=True)
for file in os.listdir(input_dir):
if file.endswith(".doc") or file.endswith(".docx"):
doc = Document()
doc.LoadFromFile(os.path.join(input_dir, file))
pdf_path = os.path.join(output_dir, file.rsplit(".", 1)[0] + ".pdf")
doc.SaveToFile(pdf_path, FileFormat.PDF)
doc.Close()
代碼說明:
os.listdir(input_dir):遍歷文件夾中的所有文件。file.endswith(".doc") or file.endswith(".docx"):只處理 Word (.doc 或 .docx)文件。os.makedirs(output_dir, exist_ok=True):如果目標(biāo)文件夾不存在,則自動創(chuàng)建。- 每次處理完一個文檔后調(diào)用
Close(),避免內(nèi)存占用過多。
四、轉(zhuǎn)換設(shè)置與優(yōu)化
在不同的應(yīng)用場景下,生成的 PDF 可能需要不同的屬性,例如文件體積更小、排版更精細(xì)、符合歸檔標(biāo)準(zhǔn)等。Spire.Doc for Python 提供了可調(diào)節(jié)的參數(shù)來滿足這些需求。
1. 圖片優(yōu)化(減小 PDF 大小)
# 將圖像壓縮到原始質(zhì)量的40% document.JPEGQuality = 40 # 保留原始圖像質(zhì)量 # document.JPEGQuality = 100
這樣可以有效減小 PDF 文件大小,適合包含大量圖片的 Word 文檔。
2. 字體嵌入處理(避免亂碼)
# 創(chuàng)建 ToPdfParameterList 類的對象
parameter = ToPdfParameterList()
# 將字體嵌入到生成的PDF中
parameter.IsEmbeddedAllFonts = True
# 將文檔保存為PDF
document.SaveToFile("output.pdf", parameter)
避免目標(biāo)設(shè)備缺少字體時,導(dǎo)致 PDF 顯示異常。
3. PDF/A 合規(guī)標(biāo)準(zhǔn)
# 創(chuàng)建 ToPdfParameterList 類的對象
parameters = ToPdfParameterList()
# 設(shè)置 PDF/A 合規(guī)標(biāo)準(zhǔn)
parameters.PdfConformanceLevel = PdfConformanceLevel.Pdf_A1A
# 將文檔保存為 PDF/A-1a 文件
document.SaveToFile("output.pdf", parameters)
用于生成符合 PDF/A 標(biāo)準(zhǔn)的文件,常用于檔案歸檔。
4. 加密與權(quán)限控制
# 創(chuàng)建 ToPdfParameterList 類的對象
parameter = ToPdfParameterList()
# 設(shè)置打開密碼和權(quán)限密碼,并用其保護(hù)生成的 PDF 文件
openPsd = "abc123"
permissionPsd = "E-iceblue"
parameter.PdfSecurity.Encrypt(openPsd, permissionPsd, PdfPermissionsFlags.Default, PdfEncryptionKeySize.Key128Bit)
# 將文檔保存為加密的PDF
document.SaveToFile("output.pdf", parameter)
可以為 PDF 設(shè)置打開密碼,并限制打印、復(fù)制等操作。
五、異常處理
import os
from spire.doc import *
input_dir = "word_files"
output_dir = "pdf_files"
os.makedirs(output_dir, exist_ok=True)
for file in os.listdir(input_dir):
if file.endswith(".doc") or file.endswith(".docx"):
try:
doc = Document()
doc.LoadFromFile(os.path.join(input_dir, file))
pdf_path = os.path.join(output_dir, file.rsplit(".", 1)[0] + ".pdf")
doc.SaveToFile(pdf_path, FileFormat.PDF)
print(f"成功轉(zhuǎn)換: {file} → {pdf_path}")
except Exception as e:
print(f"轉(zhuǎn)換失敗: {file}, 錯誤信息: {str(e)}")
finally:
if 'doc' in locals():
doc.Close()
代碼說明:
try ... except ... finally:保證即使出錯,程序也能繼續(xù)執(zhí)行。print(f"..."):方便輸出日志,便于排查問題。finally確保即使出錯,也會關(guān)閉文檔,避免內(nèi)存泄漏。
六、適用場景
- 自動化報表生成:將 Word 報表定時轉(zhuǎn)換為 PDF。
- 文檔歸檔:統(tǒng)一轉(zhuǎn)換為 PDF/A,方便長期保存。
- 在線服務(wù):搭建“上傳 Word → 下載 PDF”的 Web 接口。
- 批量處理:快速將大量 Word 文件轉(zhuǎn)換為 PDF,提升工作效率。
七、總結(jié)
本文介紹了在 Python 中使用 Spire.Doc 實現(xiàn) Word 文檔到 PDF 的轉(zhuǎn)換方法。通過實例演示了:
- 單文件和批量文件的轉(zhuǎn)換流程;
- 轉(zhuǎn)換過程中可配置的參數(shù),如圖像壓縮、字體嵌入、PDF/A 合規(guī)性和加密設(shè)置;
- 異常處理與資源釋放的注意事項,確保在批量或自動化場景下程序穩(wěn)定運(yùn)行。
總體來看,利用 Spire.Doc 可以在不依賴 Office 的環(huán)境中完成高效、穩(wěn)定的 Word 到 PDF 轉(zhuǎn)換,并且轉(zhuǎn)換選項靈活,可根據(jù)具體需求調(diào)整。上述方法適合在報表生成、文檔歸檔或在線文檔處理等場景中應(yīng)用。
到此這篇關(guān)于Python利用Spire.Doc for Python高效實現(xiàn)Word轉(zhuǎn)PDF的文章就介紹到這了,更多相關(guān)Python Word轉(zhuǎn)PDF內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python 反轉(zhuǎn)字符串(reverse)的方法小結(jié)
這篇文章主要介紹了Python 反轉(zhuǎn)字符串(reverse)的方法小結(jié),需要的朋友可以參考下2018-02-02
Python?hashlib模塊與哈希算法保護(hù)數(shù)據(jù)完整性教程
hashlib模塊為Python提供了一種簡便的方式來使用各種哈希算法,如MD5、SHA-1、SHA-256等,哈希函數(shù)廣泛用于密碼學(xué)、數(shù)據(jù)完整性驗證和安全存儲等領(lǐng)域2024-01-01
Python使用Scrapling進(jìn)行網(wǎng)頁采集的用法詳解
Scrapling是一個Python Web Scraping框架,支持靜態(tài)網(wǎng)頁、動態(tài) 網(wǎng)頁抓取及多頁面爬蟲,它結(jié)合了requests、BeautifulSoup、Scrapy、Playwright的優(yōu)點,API簡潔統(tǒng)一,適用于快速原型、簡單的網(wǎng)頁抓取,本文給大家介紹了Scrapling的使用指南,需要的朋友可以參考下2026-05-05

