温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

使用python怎么批量将Word文件转换为PDF文件

发布时间:2021-02-23 15:52:09 来源:亿速云 阅读:374 作者:戴恩恩 栏目:开发技术

这篇文章主要介绍了使用python怎么批量将Word文件转换为PDF文件,亿速云小编觉得不错,现在分享给大家,也给大家做个参考,一起跟随亿速云小编来看看吧!

python可以做什么

Python是一种编程语言,内置了许多有效的工具,Python几乎无所不能,该语言通俗易懂、容易入门、功能强大,在许多领域中都有广泛的应用,例如最热门的大数据分析,人工智能,Web开发等。

调用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'))

以上就是亿速云小编为大家收集整理的使用python怎么批量将Word文件转换为PDF文件,如何觉得亿速云网站的内容还不错,欢迎将亿速云网站推荐给身边好友。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI