批量Word转PDF方法
数据管道
共 2721字,需浏览 6分钟
· 2020-08-08
手上有近百个 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)
以上就是这期分享的全部内容了
评论
什么样的冷却方法适合数据中心运营?
冷却数据中心的最简单方法是安装空气交换器,通过服务器室生成冷空气。但是,如果想要节省资金,至少从长远来看,更好的方法可能是在每个机架上安装空气交换器,并使用它们为单个机架的服务器降温。"后机架冷却",与数据中心中更为传统的空气冷却系统相比,特别是在能源效率方面,其具有一些优势。冷却数据中心的最简单
数据中心运维管理
0
超赞!这个ChatGPT提问教程,PDF免费下载
你好,我是郭震AI来袭,我们该如何学习?今天先分享给大家一份超好的GPT提问指南。教程的详细介绍参考下面视频:这个PDF资料旨在教我们更好的给GPT发送指令,让GPT更准确的回答我们的提问。一共有30页,内容包括7个小章节,按照逻辑展开。分别介绍文本回答,代码辅助,结构化结果输出,非结构化结构输出,
Python与算法社区
3
.NET 开源工具库,集成超过1000个扩展方法
前言推荐一个.NET 开源项目,集成了超过1000个扩展方法。项目简介Z.ExtensionMethods是由zzzprojects公司开发并维护的一款开源库,为.NET开发人员提供一系列实用的扩展方法,可以减少重复劳动、提高开发效率,支持.NET Framework 和 .NET Core。该项目
dotNET全栈开发
10
神作《凤凰架构:构建可靠的大型分布式系统》PDF来了
今天给大家带来了一本大作:周志明老师的 《凤凰架构:构建可靠的大型分布式系统》PDF版来了,文末直接获取周志明是谁?这可是真大佬,或许有些朋友没有听过,但是你们一定听过:《深入理解 Java 虚拟机》这本神书,没错就是这本书的作者,出过多本书,豆瓣评分如下,全是高分,尤其是《深入理解Java虚拟机》
路人甲Java
0
图解操作系统、网络、计算机组成PDF下载!
我去年去面试的时候发现字节跳动、腾讯这类大厂非常非常重视计算机基础,像计算机网络、操作系统都是它们的重点。我当时因为计算机基础知识准备的还可以才拿到了这些大厂的 Offer!今天就给大家分享一下我之前面试经常看的一些关于计算机基础的 PDF 资料!图解计算机系统《图解系统》主要是操作系统的内容比较多
java1234
0
性能爆表:SpringBoot利用ThreadPoolTaskExecutor批量插入百万级数据实测!
关注我们,设为星标,每天7:40不见不散,架构路上与您共享回复架构师获取资源大家好,我是你们的朋友架构君,一个会写代码吟诗的架构师。来源:azdebug.blog.csdn.net/article/details/103697108前言具体实现细节测试结果总结前言开发目的: 提高百万级数据
Java架构师社区
0
单片机转Linux,看这份学习清单!
关注、星标公众号,直达精彩内容来源 | 网络俗话说万事开头难,刚开始的时候,你是否根本就不知如何开始,上网查资料被一堆堆新名词搞的找不到北,去图书馆看书也是找不到方向?又是arm,又是linux,又是uboot头都大了,不知道自己究竟从哪里开始?下面就跟着我学习设计嵌入式
李肖遥
0
《拆掉思维里的墙》:让你彻底走出恐惧的两张方法
梭罗在《瓦尔登湖》中说道:“无论你的生活多么艰难,请正视它,好好地活下去;别逃避它,也别咒骂它。它并没有你那么糟糕。”很多我们恐惧的事情,一旦我们真正去正视它的时候,其实它并没有那么可怕。恐惧其实就是一个欺软怕硬的货色,遇强它就弱,遇弱它就强。遇到问题,自己强势一点,相信一定可以解决它,那么心中那股
胖琪的升级之路
23