python批量将pdf转成word_用Python如何把任意文件夹下的Word文档批量转换为PDF

日常工作中经常需要进行文件类型的转换,有时还要批量操作,如要把近百个 Word 文档需要转为 PDF, 怎么办?

难道要一个一个的导出吗?

确实,Office2010 以后版本的 Word 可以直接导出 PDF,是时候让 Python 来替我们干这个重复性的活了!

直接上代码:from win32com.client import Dispatch,constants,gencache

import time

import os

path = os.getcwd()

start_time = time.time()

files = os.listdir(path)

gencache.EnsureModule('{00020905-0000-0000-C000-000000000046}',0,8,4)

wd = Dispatch('Word.Application')

for file in files:

if file.split('.')[-1] in ['docx','doc']:

word_path = path + '\\'+ file

file_list = (file.split('.')[-2::-1])[::-1]

pdf_file = "".join(file_list)

pdf_path = path + '\\'+ pdf_file + '.pdf'

print('正在转换:')

print('《{}》'.format(file))

doc = wd.Documents.Open(word_path,ReadOnly=1)

doc.ExportAsFixedFormat(pdf_path,constants.wdExportFormatPDF,Item=constants.wdExportDocumentWithMarkup,CreateBookmarks=constants.wdExportCreateHeadingBookmarks)

print('上述文件转换完成!')

print('')

wd.Quit(constants.wdDoNotSaveChanges)

end_time = time.time()

print("该文件夹下的Word文件已转为PDF,用时:{:.2f}秒!".format(z,end_time-start_time))

time.sleep(5)

代码解释

这个程序可以操作任意文件夹,不受文件夹所在位置的影响。

只需要将它丢在需要转换的 Word 文件文件夹里,它就可以读取出所在文件夹下所有的 Word 文件,并进行转换。

主要用到了下面几个方法:

1、获取任意文件夹下文件名称import os

path = os.getcwd()

files = os.listdir(path)os.getcwd() :获取程序所在文件的路径,结果存入 path 中;

os.listdir():获取 path 路径下的所有文件名称,结果存入 files 中。

2、筛选出 Word 文件for file in files:

if file.split('.')[-1] in ['docx','doc']:

使用字符串的split函数,用.号将文件名称分割。

file.split('.')[-1]:将 Word 文件的名称以.号分割,形成一个列表,取出这个列表的最后一项(即 Word 文件后缀名称),判断其是不是docx或doc,如果是,则说明是 Word 文件,则生成两个路径:

3、计算出 Word、PDF 的路径word_path = path + '\\'+ file

file_list = (file.split('.')[-2::-1])[::-1]

pdf_file = "".join(file_list)

pdf_path = path + '\\'+ pdf_file + '.pdf'word_path:Word 文件路径,用来告诉程序打开哪一个 Word 文件;

pdf_path:PDF 文件路径,用来告诉程序,转换后的 PDF 文件名称和存储路径。

在计算 PDF 文件路径时,需要先去掉 Word 文件的后缀:docx或doc,再加上.pdf。

有时候,Word 文件的名称中可能含有多个.号,因为我们是通过.号将 Word 文件名称分割的,这样可能会导致计算的 PDF 文件名称和 Word 文件名称不同。

因此,为了避免出现这种样的错误,我们进行以下操作:(file.split('.')[-2::-1]):按照逆序,取出除了后缀名称外的内容。

(file.split('.')[-2::-1])[::-1]:转为正序,即正常的文件名称。

pdf_file = "".join(file_list):将列表拼接成一个字符串。

pdf_path = path + '\\'+ pdf_file + '.pdf':最后给文件名称加上.pdf的后缀。

这样就完成了 Word、PDF 的路径计算。

4、调用 Word 功能

下面这些代码的功能是调用 Word 程序:gencache.EnsureModule('{00020905-0000-0000-C000-000000000046}',0,8,4)

# 这是指向注册表的键,我们要调用它。

wd = Dispatch('Word.Application')

#启用 Word

doc = wd.Documents.Open(word_path,ReadOnly=1)

# 只读方式打开 Word 文档

wd.Quit(constants.wdDoNotSaveChanges)

# 关闭 Word

关键操作就是下面这行代码,它定义了按特定格式导出的参数,模拟人工操作。doc.ExportAsFixedFormat(pdf_path,constants.wdExportFormatPDF,Item=constants.wdExportDocumentWithMarkup,CreateBookmarks=constants.wdExportCreateHeadingBookmarks)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值