于文档处理范畴内, 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或完成转换并设置文档属性。多个批量处理在两个方向都被支持, 掌握这些方法后, 繁琐的格式转换工作能被交给脚本自动完成。