内容简介:这篇文章主要为大家详细介绍了python批量实现Word文件转换为PDF文件的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本文为大家分享了 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、参考资料
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Protocol Buffer使用转换工具将proto文件转换成Java文件流程及使用
- macOS 文件系统的大小写敏感转换
- 简单实体类和xml文件的相互转换方法
- 如何把Recordset转换成彩色的XML文件
- CentOS和Ubuntu上实用文件格式转换工具
- 使用docker来实现libreoffice并发转换docx文件为pdf
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Black Box Society
Frank Pasquale / Harvard University Press / 2015-1-5 / USD 35.00
Every day, corporations are connecting the dots about our personal behavior—silently scrutinizing clues left behind by our work habits and Internet use. The data compiled and portraits created are inc......一起来看看 《The Black Box Society》 这本书的介绍吧!