Python利用Spire.Doc for Python高效實(shí)現(xiàn)Word轉(zhuǎn)PDF
在工作中,經(jīng)常會(huì)遇到需要把 Word 文檔轉(zhuǎn)換成 PDF 的情況。比如生成報(bào)表、分發(fā)文檔、或者做歸檔保存,PDF 格式在排版和跨平臺(tái)顯示上更穩(wěn)定。
傳統(tǒng)的做法往往依賴(lài) Microsoft Office 或 LibreOffice 等軟件來(lái)完成轉(zhuǎn)換,但在自動(dòng)化環(huán)境(如服務(wù)器、Docker 容器、Linux 系統(tǒng))中,這類(lèi)方式會(huì)遇到一些限制:需要額外安裝軟件、依賴(lài)復(fù)雜,甚至存在兼容性問(wèn)題。
因此,很多開(kāi)發(fā)者更希望使用無(wú)依賴(lài)的 Python 庫(kù)來(lái)完成轉(zhuǎn)換。本文將介紹如何借助 Spire.Doc for Python庫(kù),在不依賴(lài) Office 的情況下,實(shí)現(xiàn) doc 轉(zhuǎn) pdf、docx 轉(zhuǎn) pdf,并支持批量轉(zhuǎn)換與多種轉(zhuǎn)換設(shè)置。
一、安裝 Spire.Doc for Python
在使用之前,需要先安裝庫(kù)??梢灾苯邮褂靡韵?pip 命令來(lái)安裝:
pip install spire-doc
安裝完成后,就可以在 Python 代碼中使用 from spire.doc import * 導(dǎo)入該庫(kù)的模塊來(lái)處理和轉(zhuǎn)換 Word 文檔。
二、Python Word 轉(zhuǎn) PDF 基本示例
下面是 Word 轉(zhuǎn) PDF 一個(gè)最基礎(chǔ)的示例。只需要兩步:加載文件、保存為 PDF。
from spire.doc import *
# 創(chuàng)建文檔對(duì)象
doc = Document()
# 加載 Word 文件
doc.LoadFromFile("input.docx")
# 轉(zhuǎn)換并保存為 PDF
doc.SaveToFile("output.pdf", FileFormat.PDF)
# 關(guān)閉文檔,釋放資源
doc.Close()
代碼說(shuō)明:
Document():創(chuàng)建一個(gè) Word 文檔對(duì)象。LoadFromFile("input.docx"):加載指定路徑的 Word 文件。SaveToFile("output.pdf", FileFormat.PDF):將文檔保存為 PDF 格式。Close():關(guān)閉文檔,釋放資源。
三、批量轉(zhuǎn)換 Word 文檔為 PDF
如果有大量 Word 文件需要轉(zhuǎn)換,可以將它們放在一個(gè)目錄下,然后遍歷目錄并批量轉(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()
代碼說(shuō)明:
os.listdir(input_dir):遍歷文件夾中的所有文件。file.endswith(".doc") or file.endswith(".docx"):只處理 Word (.doc 或 .docx)文件。os.makedirs(output_dir, exist_ok=True):如果目標(biāo)文件夾不存在,則自動(dòng)創(chuàng)建。- 每次處理完一個(gè)文檔后調(diào)用
Close(),避免內(nèi)存占用過(guò)多。
四、轉(zhuǎn)換設(shè)置與優(yōu)化
在不同的應(yīng)用場(chǎng)景下,生成的 PDF 可能需要不同的屬性,例如文件體積更小、排版更精細(xì)、符合歸檔標(biāo)準(zhǔn)等。Spire.Doc for Python 提供了可調(diào)節(jié)的參數(shù)來(lái)滿(mǎn)足這些需求。
1. 圖片優(yōu)化(減小 PDF 大小)
# 將圖像壓縮到原始質(zhì)量的40% document.JPEGQuality = 40 # 保留原始圖像質(zhì)量 # document.JPEGQuality = 100
這樣可以有效減小 PDF 文件大小,適合包含大量圖片的 Word 文檔。
2. 字體嵌入處理(避免亂碼)
# 創(chuàng)建 ToPdfParameterList 類(lèi)的對(duì)象
parameter = ToPdfParameterList()
# 將字體嵌入到生成的PDF中
parameter.IsEmbeddedAllFonts = True
# 將文檔保存為PDF
document.SaveToFile("output.pdf", parameter)
避免目標(biāo)設(shè)備缺少字體時(shí),導(dǎo)致 PDF 顯示異常。
3. PDF/A 合規(guī)標(biāo)準(zhǔn)
# 創(chuàng)建 ToPdfParameterList 類(lèi)的對(duì)象
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 類(lèi)的對(duì)象
parameter = ToPdfParameterList()
# 設(shè)置打開(kāi)密碼和權(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è)置打開(kāi)密碼,并限制打印、復(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}, 錯(cuò)誤信息: {str(e)}")
finally:
if 'doc' in locals():
doc.Close()
代碼說(shuō)明:
try ... except ... finally:保證即使出錯(cuò),程序也能繼續(xù)執(zhí)行。print(f"..."):方便輸出日志,便于排查問(wèn)題。finally確保即使出錯(cuò),也會(huì)關(guān)閉文檔,避免內(nèi)存泄漏。
六、適用場(chǎng)景
- 自動(dòng)化報(bào)表生成:將 Word 報(bào)表定時(shí)轉(zhuǎn)換為 PDF。
- 文檔歸檔:統(tǒng)一轉(zhuǎn)換為 PDF/A,方便長(zhǎng)期保存。
- 在線(xiàn)服務(wù):搭建“上傳 Word → 下載 PDF”的 Web 接口。
- 批量處理:快速將大量 Word 文件轉(zhuǎn)換為 PDF,提升工作效率。
七、總結(jié)
本文介紹了在 Python 中使用 Spire.Doc 實(shí)現(xiàn) Word 文檔到 PDF 的轉(zhuǎn)換方法。通過(guò)實(shí)例演示了:
- 單文件和批量文件的轉(zhuǎn)換流程;
- 轉(zhuǎn)換過(guò)程中可配置的參數(shù),如圖像壓縮、字體嵌入、PDF/A 合規(guī)性和加密設(shè)置;
- 異常處理與資源釋放的注意事項(xiàng),確保在批量或自動(dòng)化場(chǎng)景下程序穩(wěn)定運(yùn)行。
總體來(lái)看,利用 Spire.Doc 可以在不依賴(lài) Office 的環(huán)境中完成高效、穩(wěn)定的 Word 到 PDF 轉(zhuǎn)換,并且轉(zhuǎn)換選項(xiàng)靈活,可根據(jù)具體需求調(diào)整。上述方法適合在報(bào)表生成、文檔歸檔或在線(xiàn)文檔處理等場(chǎng)景中應(yīng)用。
到此這篇關(guān)于Python利用Spire.Doc for Python高效實(shí)現(xiàn)Word轉(zhuǎn)PDF的文章就介紹到這了,更多相關(guān)Python Word轉(zhuǎn)PDF內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 使用Python批量將Word轉(zhuǎn)PDF的實(shí)現(xiàn)技巧
- Python實(shí)現(xiàn)Word批量轉(zhuǎn)PDF的小工具
- Python中PDF轉(zhuǎn)Word的多種實(shí)現(xiàn)方法
- Python將Word文檔轉(zhuǎn)為PDF的兩種方法
- 使用Python實(shí)現(xiàn)Office文檔(Word/Excel/PowerPoint)批量轉(zhuǎn)換為PDF
- Python將Office文檔(Word、Excel、PDF、PPT)轉(zhuǎn)為OFD格式的實(shí)現(xiàn)方法
- Python實(shí)現(xiàn)批量將word轉(zhuǎn)換成pdf
相關(guān)文章
Python Django 頁(yè)面上展示固定的頁(yè)碼數(shù)實(shí)現(xiàn)代碼
這篇文章主要介紹了Python Django 頁(yè)面上展示固定的頁(yè)碼數(shù)實(shí)現(xiàn)代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08
Python中requirements.txt簡(jiǎn)介(推薦)
Python項(xiàng)目中必須包含一個(gè)?requirements.txt?文件,用于記錄所有依賴(lài)包及其精確的版本號(hào),以便新環(huán)境部署,這篇文章主要介紹了Python中requirements.txt簡(jiǎn)介,需要的朋友可以參考下2022-11-11
python3中http協(xié)議提供文件服務(wù)器功能詳解
http協(xié)議是互聯(lián)網(wǎng)的通用基礎(chǔ)協(xié)議,也可以利用其來(lái)開(kāi)發(fā)文件服務(wù)器,給客戶(hù)提供文件瀏覽,查看,下載,上傳等功能,這篇文章主要介紹了python3中http協(xié)議提供文件服務(wù)器功能,需要的朋友可以參考下2023-06-06
django orm 通過(guò)related_name反向查詢(xún)的方法
今天小編就為大家分享一篇django orm 通過(guò)related_name反向查詢(xún)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12
python數(shù)據(jù)處理67個(gè)pandas函數(shù)總結(jié)看完就用
這篇文章主要介紹了python數(shù)據(jù)處理67個(gè)pandas函數(shù)的梳理總結(jié),看完就可以去用了,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-11-11
Python(wordcloud)如何根據(jù)文本數(shù)據(jù)(.txt文件)繪制詞云圖
這篇文章主要給大家介紹了關(guān)于Python(wordcloud)如何根據(jù)文本數(shù)據(jù)(.txt文件)繪制詞云圖的相關(guān)資料,詞云Wordcloud是文本數(shù)據(jù)的一種可視化表示方式,它通過(guò)設(shè)置不同的字體大小或顏色來(lái)表現(xiàn)每個(gè)術(shù)語(yǔ)的重要性,需要的朋友可以參考下2024-05-05
pandas把dataframe轉(zhuǎn)成Series,改變列中值的類(lèi)型方法
下面小編就為大家分享一篇pandas把dataframe轉(zhuǎn)成Series,改變列中值的類(lèi)型方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-04-04
解決Django中修改js css文件但瀏覽器無(wú)法及時(shí)與之改變的問(wèn)題
今天小編就為大家分享一篇解決Django中修改js css文件但瀏覽器無(wú)法及時(shí)與之改變的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08

