python实现word 2007文档转换为pdf文件


Posted in Python onMarch 15, 2018

在开发过程中,会遇到在命令行下将DOC文档(或者是其他Office文档)转换为PDF的要求。比如在项目中如果手册是DOC格式的,在项目发布时希望将其转换为PDF格式,并且保留DOC中的书签,链接等。将该过程整合到构建过程中就要求命令行下进行转换。

Michael Suodenjoki展示了使用Office的COM接口进行命令行下的转换。但其导出的PDF文档没有书签。在Office 2007 SP2中,微软加入了该功能,对应的接口是ExportAsFixedFormat。该方法不仅适用于Word,而且也适用于Excel。

一个简单的Python脚本来展示如何转换DOC为PDF。该脚本需要Office 2007 SP2, Python 2.6与Python for win32(使Python能调用COM)。这里也可以使用其他支持COM的语言。ExportAsFixedFormat还有其他一些参数,具体参见MSDN相关文档。需要注意的是文档路径需要为绝对路径,因为Word启动后当前路径不是调用脚本时的当前路径。

#-*- coding:utf-8 -*- 
 
# doc2pdf.py: python script to convert doc to pdf with bookmarks! 
# Requires Office 2007 SP2 
# Requires python for win32 extension 
 
 
import sys, os 
from win32com.client import Dispatch, constants, gencache 
 
def doc2pdf(input, output): 
 w = Dispatch("Word.Application") 
 
 try: 
  doc = w.Documents.Open(input, ReadOnly = 1) 
  doc.ExportAsFixedFormat(output, constants.wdExportFormatPDF,  
   Item = constants.wdExportDocumentWithMarkup, CreateBookmarks = constants.wdExportCreateHeadingBookmarks) 
  return 0 
 except: 
  return 1 
 finally: 
  w.Quit(constants.wdDoNotSaveChanges) 
 
# Generate all the support we can. 
def GenerateSupport(): 
 # 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) 
 
def main(): 
 if (len(sys.argv) == 2): 
  input = sys.argv[1] 
  output = os.path.splitext(input)[0]+'.pdf' 
 elif (len(sys.argv) == 3): 
  input = sys.argv[1] 
  output = sys.argv[2] 
 else: 
  input = u'BA06007013.docx'#word文档的名称 
  output = u'BA06007013.pdf'#pdf文档的名称 
 if (not os.path.isabs(input)): 
  input = os.path.abspath(input) 
 if (not os.path.isabs(output)): 
  output = os.path.abspath(output) 
 try: 
  GenerateSupport() 
  rc = doc2pdf(input, output) 
  return rc 
 except: 
  return -1 
 
if __name__=='__main__': 
  rc = main() 
  if rc: 
    sys.exit(rc) 
  sys.exit(0)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
状态机的概念和在Python下使用状态机的教程
Apr 11 Python
Python基于回溯法子集树模板实现8皇后问题
Sep 01 Python
python中判断文件编码的chardet(实例讲解)
Dec 21 Python
Python设计模式之代理模式简单示例
Jan 09 Python
python3 图片referer防盗链的实现方法
Mar 12 Python
安装python时MySQLdb报错的问题描述及解决方法
Mar 20 Python
Python系统监控模块psutil功能与经典用法分析
May 24 Python
python2.7实现爬虫网页数据
May 25 Python
异步任务队列Celery在Django中的使用方法
Jun 07 Python
python实现人民币大写转换
Jun 20 Python
Python爬虫将爬取的图片写入world文档的方法
Nov 07 Python
django实现将后台model对象转换成json对象并传递给前端jquery
Mar 16 Python
python中使用PIL制作并验证图片验证码
Mar 15 #Python
Python读取Word(.docx)正文信息的方法
Mar 15 #Python
30秒轻松实现TensorFlow物体检测
Mar 14 #Python
tensorflow识别自己手写数字
Mar 14 #Python
磁盘垃圾文件清理器python代码实现
Aug 24 #Python
Django自定义用户认证示例详解
Mar 14 #Python
python如何压缩新文件到已有ZIP文件
Mar 14 #Python
You might like
php && 逻辑与运算符使用说明
2010/03/04 PHP
PHP数组传递是值传递而非引用传递概念纠正
2013/01/31 PHP
PHP实现动态获取函数参数的方法示例
2018/04/02 PHP
PHP+iframe模拟Ajax上传文件功能示例
2019/07/02 PHP
JObj预览一个JS的框架
2008/03/13 Javascript
showModelDialog弹出文件下载窗口的使用示例
2013/11/19 Javascript
使用script的src实现跨域和类似ajax效果
2014/11/10 Javascript
JavaScript实现的一个日期格式化函数分享
2014/12/06 Javascript
浅谈Javascript中匀速运动的停止条件
2014/12/19 Javascript
JavaScript中判断两个字符串是否相等的方法
2015/07/07 Javascript
基于jquery实现简单的手风琴特效
2015/11/24 Javascript
激动人心的 Angular HttpClient的源码解析
2017/07/10 Javascript
在Vue中如何使用Cookie操作实例
2017/07/27 Javascript
JS操作时间 - UNIX时间戳的简单介绍(必看篇)
2017/08/16 Javascript
vue视图不更新情况详解
2019/05/16 Javascript
express + jwt + postMan验证实现持久化登录
2019/06/05 Javascript
Vue中util的工具函数实例详解
2019/07/08 Javascript
VsCode与Node.js知识点详解
2019/09/05 Javascript
微信小程序聊天功能的示例代码
2020/01/13 Javascript
Vue中fragment.js使用方法小结
2020/02/17 Javascript
jquery实现两个div中的元素相互拖动的方法分析
2020/04/05 jQuery
vue实现输入框自动跳转功能
2020/05/20 Javascript
如何使用Javascript中的this关键字
2020/05/28 Javascript
Python pickle模块用法实例分析
2015/05/27 Python
基于wxpython实现的windows GUI程序实例
2015/05/30 Python
在Python中使用zlib模块进行数据压缩的教程
2015/06/26 Python
python中的django是做什么的
2020/07/31 Python
python在CMD界面读取excel所有数据的示例
2020/09/28 Python
一款基于css3的列表toggle特效实例教程
2015/01/04 HTML / CSS
HTML5中外部浏览器唤起微信分享
2020/01/02 HTML / CSS
中文专业毕业生自荐信
2013/10/28 职场文书
中学生社会实践活动总结
2014/07/03 职场文书
幼儿园教师求职信
2015/03/20 职场文书
Python数据分析之pandas读取数据
2021/06/02 Python
分位数回归模型quantile regeression应用详解及示例教程
2021/11/02 Python
Python使用华为API为图像设置多个锚点标签
2022/04/12 Python