news 2026/10/29 1:50:16

使用 Python 转换 Word 和 PDF 文件:DOCX 与 PDF 格式互转方法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
使用 Python 转换 Word 和 PDF 文件:DOCX 与 PDF 格式互转方法

于文档处理范畴内, Word与PDF归为两种极为常见的格式, 然而其用途大相径庭, Word利于编写排版, 呈编辑排版之便, PDF适宜分发以及打印, 具分发打印之适。于日常工作期间常常会需要在这两者间开展转换工作, 即将合同、报告由Word导出成为PDF进而发送给客户们, 又或者是将所接收到的PDF转换回归到Word以便能够进行二次修改。若手动逐个来予以处理会颇为耗时时长, 尤其当面对几十乃至上百份文件之时而言的标点符号。

能进行批量完成这类转换, 一回脚本就能处理整个文件夹。本文拿Spire.Doc for和Spire.PDF for当作例子, 讲述Word转PDF、PDF转Word这两个方向的基本流程, 以及转换过程里的一些常用参数。

环境准备

按照需求去安装与之对应的库, 进行 Word 转 PDF 操作的时候, 仅仅安装 Spire.Doc。

pip install Spire.Doc

只做 PDF 转 Word 时安装 Spire.PDF:

pip install Spire.PDF

两个方向都要做,就同时安装:

pip install Spire.Doc Spire.PDF

于脚本里, 分别去引入各自的模块, Word那个端口运用 对象, PDF那个端口运用 对象。

将 Word 文档转换为 PDF

把可编辑的文稿固化成不可篡改的最终版, 这是Word转PDF这种极为常见的需求当中的其中一个, 而Spire.Doc实施的做法颇具直接性, 具体是先加载Word文档, 之后再将其保存为PDF格式。

from spire.doc import * from spire.doc.common import * # 加载 Word 文档 document = Document() document.LoadFromFile("年度报告.docx") # 保存为 PDF document.SaveToFile("年度报告.pdf", FileFormat.PDF) document.Close()

作为第一个参数存在的那个, 竟然是输出文件路径, 而第二个参数所起到的作用, 则是用于指定输出格式。在此时传进去的乃是PDF格式, 如此一来库可就会着手去完成从Word格式到PDF格式的转换事宜, 这里面涵盖了诸如分页, 还有字体以及图片等方面布局相关信息的还原操作。

要是源文件是属于旧版的那种.doc格式, 在加载这个源文件的时候, 显式地去指定格式, 如此这般会更加稳妥一些:

document.LoadFromFile("旧版文档.doc", FileFormat.Doc)

使用参数控制转换效果

在一般情况下, 直接进行保存, 往往能够收获较为不错的结果, 然而, 在某些特定的场景当中, 则是需要针对输出实施精细的调控。在这种特定的时刻, 就能借助参数对象。

在 PDF 中保留书签

将长文档转化为PDF之后, 要是期望阅读者能够如同查看目录那般迅速进行跳转, 那么能够依据文档标题自动生成书签:

from spire.doc import * from spire.doc.common import * document = Document() document.LoadFromFile("操作手册.docx") # 创建转换参数 params = ToPdfParameterList() # 基于文档标题生成书签 params.CreateWordBookmarks = True params.CreateWordBookmarksUsingHeadings = True document.SaveToFile("操作手册.pdf", params) document.Close()

当处于为 True 的情况时, 书签会依据文档里的标题样式自动去生成, 要是设其为 False 这个时候那就只会运用文档里显式存在的 Word 书签。

嵌入字体,保证显示一致

目标机器若未安装文档所用字体,那么在其他机器上打开转换后的 PDF 时, 文字就有可能会被替换, 进而致使排版错乱。而把字体嵌入到 PDF 当中, 便能够避免出现这一问题:

document = Document() document.LoadFromFile("宣传单.docx") params = ToPdfParameterList() # 将所有字体嵌入 PDF params.IsEmbeddedAllFonts = True document.SaveToFile("宣传单.pdf", params) document.Close()

代价是文件体积会变大,适合对排版一致性要求较高的正式文档。

给生成的 PDF 设置密码

如果 PDF 只允许指定人员查看,可以在转换时直接加密:

from spire.doc.common import * document = Document() document.LoadFromFile("商业计划书.docx") params = ToPdfParameterList() params.PdfSecurity.Encrypt( "owner123", "user123", PdfPermissionsFlags.Default, PdfEncryptionKeySize.Key128Bit ) document.SaveToFile("商业计划书.pdf", params) document.Close()

关于(), 其前两个参数, 一个是所有者密码, 另一个是用户密码, 所有者密码具备最高权限, 也就是能够更改权限, 而用户密码则是打开文件所需要的密码。

将 PDF 文档转换为 Word

内容需修改、引用或者经重新排版的PDF转Word之反向转换极为常见, 直接套用Spire.PDF的对象, 借助其加载PDF而后保存成Word格式为此乃最为便捷的方式。

from spire.pdf import * from spire.pdf.common import * # 加载 PDF 文档 pdf = PdfDocument() pdf.LoadFromFile("客户需求.pdf") # 保存为 .docx pdf.SaveToFile("客户需求.docx", FileFormat.DOCX) pdf.Close()

较新的Word格式对应的是.DOCX。要是接收方借助旧版Word的话, 那便能够转换为.DOC, 并以此输出.doc文件。

pdf.SaveToFile("客户需求.doc", FileFormat.DOC)

要加以说明的是, PDF自身并不存有段落、表格这类语义方面的信息, 在转回Word之后所得到的是一个能够进行编辑操作的文本排版样式, PDF里原本属于图片内容的部分, 经过转换之后依旧是图片, 不会自行变成可以用于编辑创作的文字的情况, 所以像这样的转换适用于那种“有编辑文本的需求”的场景, 而不适用于“有编辑图片内容的需求”的场景。

设置转换后 Word 文档的属性

被转出的Word文档, 会继承某些基础属性, 这些属性也能够经由提前予以指定, 像标题、作者、主题等此类文档属性。

from spire.pdf import * from spire.pdf.common import * # 创建转换器并指定输入 PDF converter = PdfToDocConverter("调研报告.pdf") # 设置输出文档的属性 converter.DocxOptions.Title = "调研报告" converter.DocxOptions.Authors = "市场部" converter.DocxOptions.Subject = "Q3 用户调研" # 转换为 .docx converter.SaveToDocx("调研报告.docx")

在其上能够设置标题, 还有作者, 以及主题, 另外还有类别等多个字段, 它适合于在进行批量导出这个操作的时候, 统一地对于文档去补全元数据。

实用提示总结

用在Word和PDF之间互相转换的完整流程被本文介绍了: Spire.Doc负责Word转PDF, 核心方法是以()配合.PDF, 并且可以借助来控制书签、字体嵌入和加密;Spire.PDF负责PDF转Word, 通过.DOCX或完成转换并设置文档属性。多个批量处理在两个方向都被支持, 掌握这些方法后, 繁琐的格式转换工作能被交给脚本自动完成。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/29 1:50:16

ROS2系列教程:Moveit2仿真与运动规划(基础)

本文是 ROS2 系列教程的第 36 篇本文是 ROS2 系列教程的第 36 篇:MoveIt2 仿真与运动规划(基础)。第 35 篇我们装好了 MoveIt2、写了一个两连杆机械臂的 URDF,并用 moveit_setup_assistant 生成了配置包。今天我们把机械臂"跑…

作者头像 李华
网站建设 2026/10/29 1:50:07

3DGS 模型保存与加载完整指南:PLY 格式扩展与断点续训实战

3DGS 模型保存与加载完整指南:PLY 格式扩展与断点续训实战 【免费下载链接】gaussian-splatting Original reference implementation of "3D Gaussian Splatting for Real-Time Radiance Field Rendering" 项目地址: https://gitcode.com/gh_mirrors/ga…

作者头像 李华
网站建设 2026/10/29 1:47:38

三年进化:AI编程工具从玩具到协作伙伴的跃迁

1. 三年时间,AI编程工具到底变了什么我记得三年前第一次用AI辅助写代码的时候,那种感觉就像拿到一个会说话的橡皮鸭子——它能跟你聊天,能给你一些提示,但真让它写点能跑的东西,十次里有八次得自己从头改到尾。那时候大…

作者头像 李华
网站建设 2026/10/29 1:46:37

Samba文件服务器安全(7)

完成 Samba 服务器的基础加固——关闭 NetBIOS、限制监听接口、配置防火墙、启用消息签名——并不意味着安全工作就此结束。配置写在文件里是一回事,实际运行效果是否达标则是另一回事。端口是否真的关闭了?SMB 协议版本是否符合预期?防火墙能否有效抵御 SSH 暴力破解?这些…

作者头像 李华
网站建设 2026/10/29 1:44:45

Crush AI 编码助手安装与上生产:一份实操手册

Crush AI 编码助手安装与上生产:一份实操手册 【免费下载链接】crush Glamourous agentic coding for all 💘 项目地址: https://gitcode.com/gh_mirrors/crush3/crush 这篇文章讲 Crush 部署的完整流程:从一行命令装好 AI 编码助手、…

作者头像 李华