如何使用 Python 将 Word 文档转为 PDF
在日常工作中,Word 文档和 PDF 是两种最常用的文件格式。Word 适合编辑和修改,PDF 则具有跨平台、版式固定、不易篡改的特点,常用于文档分发、归档和打印。因此,将 Word 转换为 PDF 是许多办公自动化场景中的常见需求。
本文介绍如何使用 Python 实现 Word 到 PDF 的转换,包括基础转换、批量处理以及一些常用设置选项。
使用的库
本文代码基于 Spire.Doc for Python 实现。这是一个用于处理 Word 文档的 Python 库,支持创建、读取、编辑和转换 Word 文档,不依赖 Microsoft Office 环境,可以在 Windows、Linux 等平台上运行。
该库提供免费版本。需要说明的是,免费版在转换 Word 到 PDF 时,仅能输出前 3 页内容。
安装
使用 pip 命令完成安装:
pip install Spire.Doc
安装完成后,在代码中导入所需模块:
from spire.doc import * from spire.doc.common import *
加载 Word 文档
Spire.Doc for Python 提供了 Document 类用于加载 Word 文档。支持 .doc 和 .docx 两种格式。
from spire.doc import *
from spire.doc.common import *
# 创建 Document 对象
document = Document()
# 加载 Word 文档
document.LoadFromFile("工作汇报.docx")
转换为 PDF 并保存
加载文档后,调用 SaveToFile 方法并指定 FileFormat.PDF 即可完成转换。
# 保存为 PDF 格式
document.SaveToFile("工作汇报.pdf", FileFormat.PDF)
# 关闭文档,释放资源
document.Close()
from spire.doc import *
from spire.doc.common import *
document = Document()
document.LoadFromFile("工作汇报.docx")
document.SaveToFile("工作汇报.pdf", FileFormat.PDF)
document.Close()
批量转换
如果需要将多个 Word 文档批量转换为 PDF,可以结合 os 模块遍历文件夹。
import os
from spire.doc import *
from spire.doc.common 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_name = file.rsplit(".", 1)[0] + ".pdf"
doc.SaveToFile(os.path.join(output_dir, pdf_name), FileFormat.PDF)
doc.Close()
print(f"转换完成: {file}")
import os
from spire.doc import *
from spire.doc.common 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", ".docx")):
try:
doc = Document()
doc.LoadFromFile(os.path.join(input_dir, file))
pdf_name = file.rsplit(".", 1)[0] + ".pdf"
doc.SaveToFile(os.path.join(output_dir, pdf_name), FileFormat.PDF)
doc.Close()
print(f"转换成功: {file}")
except Exception as e:
print(f"转换失败: {file}, 错误: {e}")
转换时嵌入字体
在不同设备上打开 PDF 时,若缺少文档中使用的字体,可能出现显示异常。可通过参数启用字体嵌入。
from spire.doc import *
from spire.doc.common import *
document = Document()
document.LoadFromFile("工作汇报.docx")
parameter = ToPdfParameterList()
parameter.IsEmbeddedAllFonts = True
document.SaveToFile("嵌入字体.pdf", parameter)
document.Close()
设置图像质量
Word 文档中的图片会影响生成 PDF 的文件大小。通过 JPEGQuality 属性可以控制图片压缩程度。
from spire.doc import *
from spire.doc.common import *
document = Document()
document.LoadFromFile("工作汇报.docx")
document.JPEGQuality = 40
document.SaveToFile("压缩图片.pdf", FileFormat.PDF)
document.Close()
JPEGQuality 的取值范围是 0 到 100,数值越小压缩率越高,生成的文件体积越小,但图像质量也会相应下降。
生成带密码保护的 PDF
可为生成的 PDF 设置打开密码和权限密码。
from spire.doc import *
from spire.doc.common import *
document = Document()
document.LoadFromFile("工作汇报.docx")
parameter = ToPdfParameterList()
parameter.PdfSecurity.Encrypt("user123", "admin456",
PdfPermissionsFlags.Default,
PdfEncryptionKeySize.Key128Bit)
document.SaveToFile("加密文档.pdf", parameter)
document.Close()
PdfPermissionsFlags 可用于限制打印、复制等操作权限。
根据标题生成书签
对于较长的文档,可根据 Word 中的标题样式自动生成 PDF 书签。
from spire.doc import *
from spire.doc.common import *
document = Document()
document.LoadFromFile("工作汇报.docx")
params = ToPdfParameterList()
params.CreateWordBookmarksUsingHeadings = True
document.SaveToFile("带书签.pdf", params)
document.Close()
注意事项
- 免费版的页数限制:免费版转换 Word 到 PDF 时,仅能输出前 3 页。若需转换完整文档,需使用商业版或其他方案。
- 资源释放:每次操作完成后,建议调用
Close()释放文档对象占用的内存,批量处理时尤其重要。 - 文件格式支持:该库支持
.doc(Word 97-2003)和.docx(Word 2007 及以上)格式。 - 运行环境:该库不依赖 Microsoft Office,可在无 Office 环境的服务器上运行。
小结
本文介绍了使用 Python 将 Word 文档转换为 PDF 的常用方法,包括基础转换、批量处理、字体嵌入、图像压缩、加密保护和书签生成。根据实际需求,可以灵活组合这些选项,构建适合自己项目的文档转换流程。
该方案不依赖 Office 环境,适合部署在服务器端进行自动化处理。需要注意的是免费版本存在页数限制,处理较长文档时需根据业务情况评估是否满足需求。
以上关于如何使用 Python 将 Word 文档转为 PDF的文章就介绍到这了,更多相关内容请搜索码云笔记以前的文章或继续浏览下面的相关文章,希望大家以后多多支持码云笔记。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » 如何使用 Python 将 Word 文档转为 PDF
微信
支付宝