python批量实现Word文件转换为PDF文件


Posted in Python onMarch 15, 2018

本文为大家分享了python批量转换Word文件为PDF文件的具体方法,供大家参考,具体内容如下

1、目的

通过万能的Python把一个目录下的所有Word文件转换为PDF文件。

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 相关文章推荐
python实现随机密码字典生成器示例
Apr 09 Python
python脚本实现xls(xlsx)转成csv
Apr 10 Python
在cmd中运行.py文件: python的操作步骤
May 12 Python
TensorFlow 模型载入方法汇总(小结)
Jun 19 Python
python使用Matplotlib画条形图
Mar 25 Python
Python变量作用域LEGB用法解析
Feb 04 Python
python中selenium库的基本使用详解
Jul 31 Python
利用Python实现朋友圈中的九宫格图片效果
Sep 03 Python
Django使用echarts进行可视化展示的实践
Jun 10 Python
Python答题卡识别并给出分数的实现代码
Jun 22 Python
Matplotlib绘制条形图的方法你知道吗
Mar 21 Python
浅析Python OpenCV三种滤镜效果
Apr 11 Python
python实现求解列表中元素的排列和组合问题
Mar 15 #Python
Python遍历某目录下的所有文件夹与文件路径
Mar 15 #Python
Python cookbook(数据结构与算法)找出序列中出现次数最多的元素算法示例
Mar 15 #Python
ubuntu安装sublime3并配置python3环境的方法
Mar 15 #Python
Centos7 Python3下安装scrapy的详细步骤
Mar 15 #Python
python实现word 2007文档转换为pdf文件
Mar 15 #Python
python中使用PIL制作并验证图片验证码
Mar 15 #Python
You might like
phpmyadmin的#1251问题
2006/11/25 PHP
Zend Studio (eclipse)使用速度优化方法
2011/03/23 PHP
php对二维数组进行相关操作(排序、转换、去空白等)
2015/11/04 PHP
PHP笛卡尔积实现原理及代码实例
2020/12/09 PHP
jQuery .tmpl() 用法示例介绍
2014/08/21 Javascript
jQuery的remove()方法使用详解
2015/08/11 Javascript
switch语句的妙用(必看篇)
2016/10/03 Javascript
bootstrap实现的自适应页面简单应用示例
2017/03/09 Javascript
JS利用cookies设置每隔24小时弹出框
2017/04/20 Javascript
详解AngularJS跨页面传值(ui-router)
2017/08/23 Javascript
利用node.js如何创建子进程详解
2017/12/09 Javascript
简易Vue评论框架的实现(父组件的实现)
2018/01/08 Javascript
Vue的土著指令和自定义指令实例详解
2018/02/04 Javascript
使用淘宝镜像cnpm安装Vue.js的图文教程
2018/05/17 Javascript
js监听html页面的上下滚动事件方法
2018/09/11 Javascript
详解多页应用 Webpack4 配置优化与踩坑记录
2018/10/16 Javascript
Vue项目中最新用到的一些实用小技巧
2018/11/06 Javascript
js字符串处理之绝妙的代码
2019/04/05 Javascript
vue 实现模糊检索并根据其他字符的首字母顺序排列
2019/09/19 Javascript
微信小程序实现自定义动画弹框/提示框的方法实例
2020/11/06 Javascript
[01:18:35]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS BO3 第一场 1月29日
2021/03/11 DOTA
pygame游戏之旅 添加游戏界面按键图形
2018/11/20 Python
利用selenium爬虫抓取数据的基础教程
2019/06/10 Python
VPS CENTOS 上配置python,mysql,nginx,uwsgi,django的方法详解
2019/07/01 Python
Django框架基础模板标签与filter使用方法详解
2019/07/23 Python
巧用CSS3 border实现图片遮罩效果代码
2012/04/09 HTML / CSS
基于CSS3实现图片模糊过滤效果
2015/11/19 HTML / CSS
Funko官方商店:源自美国,畅销全球搪胶收藏玩偶
2018/09/15 全球购物
应届生的求职推荐信范文
2013/11/30 职场文书
商场中秋节广播稿
2014/01/17 职场文书
自荐信的格式
2014/03/10 职场文书
企业宣传口号
2014/06/12 职场文书
应聘教师求职信
2014/07/19 职场文书
2014年财务工作总结与计划
2014/12/08 职场文书
新闻稿件写作范文
2015/07/18 职场文书
2020年个人安全保证书参考模板
2020/01/08 职场文书