国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python批量實現Word文件轉換為PDF文件

2020-01-04 15:37:54
字體:
來源:轉載
供稿:網友

本文為大家分享了python批量轉換Word文件為PDF文件的具體方法,供大家參考,具體內容如下

1、目的

通過萬能的Python把一個目錄下的所有Word文件轉換為PDF文件。

python,Word,PDF

2、遍歷目錄

作者總結了三種遍歷目錄的方法,分別如下。

2.1.調用glob

遍歷指定目錄下的所有文件和文件夾,不遞歸遍歷,需要手動完成遞歸遍歷功能。

import glob as gbpath = gb.glob('d://2//*')for path in path: print path

2.2.調用os.walk

遍歷指定目錄下的所有文件和文件夾,遞歸遍歷,功能強大,推薦使用。

import osfor 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:utf8import os, sysreload(sys)sys.setdefaultencoding('utf8')from win32com.client import Dispatch, constants, gencacheinput = 'D://2//test//11.docx'output = 'D://2//test//22.pdf'print 'input file', inputprint '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 extensionimport glob as gbimport sysreload(sys)sys.setdefaultencoding('utf8')'''參考:http://blog.csdn.net/rumswell/article/details/7434302'''import sys, osfrom win32com.client import Dispatch, constants, gencache# from config import REPORT_DOC_PATH,REPORT_PDF_PATHREPORT_DOC_PATH = 'D:/2/doc/'REPORT_PDF_PATH = 'D:/2/doc/'# Word轉換為PDFdef 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 -1if __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'))

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到python教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 肥东县| 乐清市| 庆阳市| 农安县| 绩溪县| 怀集县| 泽库县| 册亨县| 溆浦县| 卫辉市| 海丰县| 宜川县| 重庆市| 手游| 卓资县| 城固县| 柳林县| 漳平市| 汶川县| 陆良县| 遂平县| 南岸区| 黔西| 崇仁县| 始兴县| 静海县| 普格县| 无锡市| 赣州市| 金湖县| 濮阳县| 溆浦县| 靖边县| 井研县| 察雅县| 乌拉特中旗| 池州市| 色达县| 韶关市| 聊城市| 清河县|