本文为大家分享了python批量转换Word文件为PDF文件的具体方法,供大家参考,具体内容如下
1、目的
通过万能的Python把一个目录下的所有Word文件转换为PDF文件。
2、遍历目录
作者总结了三种遍历目录的方法,分别如下。
2.1.调用glob
遍历指定目录下的所有文件和文件夹,不递归遍历,需要手动完成递归遍历功能。
import glob as gb path = gb.glob('d:\\2\\*') for path in path: print path
2.2.调用os.walk
遍历指定目录下的所有文件和文件夹,递归遍历,功能强大,推荐使用。
import os for dirpath, dirnames, filenames in os.walk('d:\\2\\'): for file in filenames: fullpath = os.path.join(dirpath, file) print fullpath, file
2.3.自己DIY
遍历指定目录下的所有文件和文件夹,递归遍历,自主编写,扩展性强,可以学习练手。
import os; files = list(); def DirAll(pathName): if os.path.exists(pathName): fileList = os.listdir(pathName); for f in fileList: if f=="$RECYCLE.BIN" or f=="System Volume Information": continue; f=os.path.join(pathName,f); if os.path.isdir(f): DirAll(f); else: dirName=os.path.dirname(f); baseName=os.path.basename(f); if dirName.endswith(os.sep): files.append(dirName+baseName); else: files.append(dirName+os.sep+baseName); DirAll("D:\\2\\"); for f in files: print f # print f.decode('gbk').encode('utf-8');
2.4.备注
注意,如果遍历过程中,出现文件名称或文件路径乱码问题,可以查看本文的参考资料来解决。
3、转换Word文件为PDF
通过Windows Com组件(win32com),调用Word服务(Word.Application),实现Word到PDF文件的转换。因此,要求该Python程序需要在有Word服务(可能至少要求2007版本)的Windows机器上运行。
#coding:utf8 import os, sys reload(sys) sys.setdefaultencoding('utf8') from win32com.client import Dispatch, constants, gencache input = 'D:\\2\\test\\11.docx' output = 'D:\\2\\test\\22.pdf' print 'input file', input print 'output file', output # enable python COM support for Word 2007 # this is generated by: makepy.py -i "Microsoft Word 12.0 Object Library" 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(output): print 'translate success' else: print 'translate fail'
4、批量转换
要实现批量准换,将第2步和第3步的功能组合在一起即可,直接上代码。
# -*- coding:utf-8 -*- # doc2pdf.py: python script to convert doc to pdf with bookmarks! # Requires Office 2007 SP2 # Requires python for win32 extension import glob as gb import sys reload(sys) sys.setdefaultencoding('utf8') ''' 参考:http://blog.csdn.net/rumswell/article/details/7434302 ''' import sys, os from win32com.client import Dispatch, constants, gencache # from config import REPORT_DOC_PATH,REPORT_PDF_PATH REPORT_DOC_PATH = 'D:/2/doc/' REPORT_PDF_PATH = 'D:/2/doc/' # Word转换为PDF def word2pdf(filename): input = filename + '.docx' output = filename + '.pdf' pdf_name = output # 判断文件是否存在 os.chdir(REPORT_DOC_PATH) if not os.path.isfile(input): print u'%s not exist' % input return False # 文档路径需要为绝对路径,因为Word启动后当前路径不是调用脚本时的当前路径。 if (not os.path.isabs(input)): # 判断是否为绝对路径 # os.chdir(REPORT_DOC_PATH) input = os.path.abspath(input) # 返回绝对路径 else: print u'%s not absolute path' % input return False if (not os.path.isabs(output)): os.chdir(REPORT_PDF_PATH) output = os.path.abspath(output) else: print u'%s not absolute path' % output return False try: print input, output # enable python COM support for Word 2007 # this is generated by: makepy.py -i "Microsoft Word 12.0 Object Library" 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__': # img_path = gb.glob(REPORT_DOC_PATH + "*") # for path in img_path: # print path # rc = word2pdf(path) # rc = word2pdf('1') # print rc, # if rc: # sys.exit(rc) # sys.exit(0) import os for dirpath, dirnames, filenames in os.walk(REPORT_DOC_PATH): for file in filenames: fullpath = os.path.join(dirpath, file) print fullpath, file rc = word2pdf(file.rstrip('.docx'))
5、参考资料
利用Python将word 2007的文档转为pdf文件
遍历某目录下的所有文件夹与文件的路径、输出中文乱码问题
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
python,Word,PDF
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新动态
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]