环境:python 3.6
平台:windows
打包了exe
下载下来,扔到放word文件的文件夹里,双击打开,会自动创建一个pdf文件夹,转换的pdf都在pdf文件夹里,速度不是很快,如果有word文档打开最好先关了,毕竟只是个简单的脚本,没那么智能
度云链接
链接:https://pan.baidu.com/s/199fOeUTT5kIFmuBVCHGBSw
提取码:26rj
复制这段内容后打开百度网盘手机App,操作更方便哦
change.py
# -*- coding:utf-8 -*-
'''
author:lanceadd
e-mail:1196661499@qq.com
'''
import os
from win32com.client import Dispatch, constants, gencache
basedir = os.path.abspath(os.path.dirname(__file__))
pdf_path = basedir + '/pdf'
# Word转换为PDF
def wordtopdf(filename):
input = filename + '.docx'
output = filename + '.pdf'
pdf_name = output
# 判断文件是否存在
os.chdir(basedir)
if not os.path.isfile(input):
print(u'%s not exist' % input)
return False
# 文档路径需要为绝对路径,因为Word启动后当前路径不是调用脚本时的当前路径。
if (not os.path.isabs(input)): # 判断是否为绝对路径
input = os.path.abspath(input) # 返回绝对路径
else:
print(u'%s not absolute path' % input)
return False
if (not os.path.isabs(output)):
os.chdir(pdf_path)
output = os.path.abspath(output)
else:
print(u'%s not absolute path' % output)
return False
try:
print(input, output)
gencache.EnsureModule('{00020905-0000-0000-C000-000000000046}', 0, 8, 4)
# 开始转换
w = Dispatch("Word.Application")
try:
doc = w.Documents.Open(input, ReadOnly=1)
doc.ExportAsFixedFormat(output, constants.wdExportFormatPDF, \
Item=constants.wdExportDocumentWithMarkup,
CreateBookmarks=constants.wdExportCreateHeadingBookmarks)
except:
print(' exception')
finally:
w.Quit(constants.wdDoNotSaveChanges)
if os.path.isfile(pdf_name):
print('translate success')
return True
else:
print('translate fail')
return False
except:
print(' exception')
return -1
if __name__ == '__main__':
if not os.path.exists(pdf_path):
os.makedirs(pdf_path)
else:
pass
for dirpath, dirnames, filenames in os.walk(basedir):
for file in filenames:
fullpath = os.path.join(dirpath, file)
print(fullpath, file)
rc = wordtopdf(file.rstrip('.docx'))
我也尝试了改成多线程,但是报错不晓得为啥,等我解决了再发多线程加速版
网友评论