c 调用openoffice word转pdf_批量 Word 转 PDF 方法

be86b9c0fa42f48ef316a06cc7ce2fcc.pngSTART -手上有近百个 Word 文档需要转为 PDF, 怎么办?难道要一个一个的导出吗?确实,Office2010 以后版本的 Word 可以直接导出 PDF,是时候让 Python 来替我们干这个重复性的活了!直接上代码:
from win32com.client import Dispatch,constants,gencacheimport timeimport 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 文件后缀名称),判断其是不是docxdoc,如果是,则说明是 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 文件的后缀:docxdoc,再加上.pdf。有时候,Word 文件的名称中可能含有多个.号,因为我们是通过.号将 Word 文件名称分割的,这样可能会导致计算的 PDF 文件名称和 Word 文件名称不同。因此,为了避免出现这种样的错误,我们进行以下操作:
  1. (file.split('.')[-2::-1]):按照逆序,取出除了后缀名称外的内容。
  2. (file.split('.')[-2::-1])[::-1]:转为正序,即正常的文件名称。
  3. pdf_file = "".join(file_list):将列表拼接成一个字符串。
  4. 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)
- END -
「  创造真正有价值的内容  今天也是分享知识快乐的一天评论区等你!点个「三连=留言+在看+点赞」23de3216ced034191c30ad46926f5a62.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/381468.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

COM原理及应用之可连接对象

1、COM的高级特性 COM规范中有一些高级特性,如可连接对象、永久存储、一致的数据传输等,使COM规范具有更强的生命力,它们也是OLE的基础,但它们的应用又不仅仅局限于OLE,这些高级特性已经广泛应用于Windows操作系统上。…

hadoop put命令的格式_HDFS常用命令

一.HDFS命令行Hadoop help命令的使用1.hadoop -help查询所有Hadoop Shell支持的命令2.distcp这是Hadoop下的一个分布式复制程序,可以在不t同的HDFS集群间复制数据,也可以在本地文件间复制数据。hadoop distcp将/test/test.txt文件复制到/test/cp下面&…

python的opencv模块_OpenCV Python - 没有名为cv2的模块(再次)

我刚刚在Ubuntu 14.04上安装了OpenCV 3.0。它的工作原理。 根据官方教程,安装OpenCV。#!/bin/bashd #https://help.ubuntu.com/community/OpenCV version"$(wget -q -O - http://sourceforge.net/projects/opencvlibrary/files/opencv-unix | egrep -m1 -o \&q…

081212 晴

我把今天晚上这边的中国人忘年会取消了 但是应该是需要加班的 争取今天早点回家转载于:https://www.cnblogs.com/loverain/archive/2008/12/12/1353413.html

freemarker html 引入script_HTML编码规范

一、前言HTML作为描述网页结构的超文本标记语言,在百度一直有着广泛的应用。本文档的目标是使HTML代码风格保持一致,容易被理解和被维护。二、代码风格2.1. 缩进与换行​[强制] 使用 4个空格做为一个缩进层级,不允许使用 2个空格 或 tab字符。…

python制作词典_我的词典我做主!python3.5生成自己的词性词典

由于朋友需要做文本分析,前提是要将文本中的名词和动词剔除掉,但没有现成的名词和动词的txt格式的词典。于是找来了一个英汉词典,根据每一行出现的adj、adv、n、prep等,使用正则表达式匹配需要的词性,并将其追加写入到…

微软的几个职位简介

说起来比较惭愧,自己混微软圈子也不短了,但是今天还是第一次认真思考微软的这几个比较常用的职位,SDE、SDET、PM,仅供参考下,网上查的,如果有不对或者不全面的地方,欢迎指教 Dev:正式…

写入null_ArrayList并发写出现Null值

ArrayList并非线程安全的容器,这一点大家可能都非常清楚,但是在并发写入的情况下,不安全的情况具体有哪些,大家是否很清楚呢?本篇文章重点聊一下出现null的情况,然后对于其他并发写的安全做一个简单的叙述我…

c语言函数调用数组_第七讲:C语言基础之函数,第二节,实现汉诺塔

本文约2200字,主要讲了C语言基础之函数,递归,数组作为函数参数以及案例、练习题等。带你进入C语言的世界,入门C语言,后边将持续更新。可以收藏学习。想了解C语言基础之函数,函数的基本概述,函数…

当代国人绝难做到的10件平常事

1、在饭厅中保持低声。无论是在家中,还是在大饭店吃饭,中国人总爱高声喧哗,如果是饮酒,还会扯酒皮,猜拳行令,完全不把旁人放在眼中。因而,在中国,也没有人觉得饭厅噪音得治一治。事实…

仍然报错_only_full_group_by配置,竟让所有应用报错?

推荐学习周一福利到!献上“独家全新”MySQL进阶套餐,简直就是血赚 全网独家的“MySQL高级知识”集合,骨灰级收藏,手慢则无 1. 踩坑经历一个很平常的下午,大家都在埋头认真写bug呢,突然企业微信群里炸锅了&a…

根据录入的计算公式计算_污水处理工程设计入门(10)—堰口计算

呓语:虽然现在很多人会推送很多的快速计算表格,但是我并不想授人以鱼。我希望每一个想学习想入门做污水处理工程设计的人先看懂如何设计,再去想如何快速计算,再去想怎么改进。再者,想想有一天你当领导审图了&#xff0…

DNN SEO专题 (收集)

SEO, 是Search Engine Optimization的缩写, 翻译过来是“搜索引擎优化", 直白说就是“针对搜索引擎所做的优化处理工作”。 是一种利用搜索引擎的搜索规则来提高目的网站在有关搜索引擎( Google, Baidu, Live Search 等) 内提名的方式。它可以给你的网站带来更多的客户访问…

发送请求_发送soap请求调用WSDL

");soap.Append("");soap.Append("");soap.Append("XX系统");soap.Append("");soap.Append(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));soap.Append("");soap.Append("{"LoginName":&qu…

递归函数python有什么特点_Python中的递归

在前面的讲解中,函数的调用通常发生在彼此不同的函数之间。其实,函数还有一种特殊的调用方式,那就是自己调用自己,这种方式称为函数递归调用。 递归,在程序设计中也是一个常用的技巧,甚至是一种思维方式&am…

XML基本知识(三)

XML语法(3)--属性、声明符号、字符数据、注释 属性&#xff1a;提供元素的附加信息。 属性是元素开始标签的一部分。eg: <para keywords"Napoleon,France,history">...</para>注意: 属性由“名”和“值”组成&#xff0c;中间有“”分隔。值由引号包括…

apache实验报告 linux_Linux实验报告

Linux实验报告-源代码编译安装Apache(Tarball文件安装)实验背景&#xff1a;通常GNU组织提供的程序包都是源代码格式&#xff0c;即将软件的所有源码文件先以tar打包&#xff0c;然后再使用gizp或是bzip2压缩&#xff0c;生成一个.tar.gz或是.tar.bz2结尾的软件包&#xff0c;也…

python合并两个文本文件内容_用Python 将两个文件的内容合并成一个新的文件.

一个文件的内容是: Introduction to Programming, Networking Fundamentals, Internetworking Technologies, Platform Technologies, Information Technology for Users, Computer Forensics, Enterprise Networks, Database Technologies 还有一个是: BN108, MN401, MN503, B…

设备场景函数——72个

说明&#xff1a;本类 API 函数&#xff0c;内容均摘自网络&#xff0c;版权归实际作者所有。 CombineRgn 将两个区域组合为一个新区域 CombineTransform 驱动世界转换。它相当于依顺序进行两次转换 CreateCompatibleDC 创建一个与特定设备场景一致的内存设备场景 CreateDC,Cre…

安卓手机突然很卡_你的安卓手机越来越卡?教你4招轻松解决问题!

原标题&#xff1a;你的安卓手机越来越卡&#xff1f;教你4招轻松解决问题&#xff01;现在我们对于手机的使用时间不会特别的长&#xff0c;所以这个更换的速度就比较快。其实是很多的用户换手机是因为比较喜欢用新的手机体验新的科技&#xff0c;不过也还是有很多的用户不是因…