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判断windows隐藏文件的方法
Mar 21 Python
Python函数式编程指南(二):从函数开始
Jun 24 Python
使用Python绘制图表大全总结
Feb 11 Python
Windows下anaconda安装第三方包的方法小结(tensorflow、gensim为例)
Apr 05 Python
对python读写文件去重、RE、set的使用详解
Dec 11 Python
python简单验证码识别的实现方法
May 10 Python
基于python进行抽样分布描述及实践详解
Sep 02 Python
Python 装饰器@,对函数进行功能扩展操作示例【开闭原则】
Oct 17 Python
Tensorflow 多线程与多进程数据加载实例
Feb 05 Python
构建高效的python requests长连接池详解
May 02 Python
浅谈Keras参数 input_shape、input_dim和input_length用法
Jun 29 Python
搭建pypi私有仓库实现过程详解
Nov 25 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
自制短波长线天线频率预选器 - 成功消除B2K之流的镜像
2021/03/02 无线电
在PHP中利用XML技术构造远程服务(下)
2006/10/09 PHP
PHP HTML代码串截取代码
2008/12/29 PHP
php inc文件使用的风险和注意事项
2013/11/12 PHP
yii操作cookie实例简介
2014/07/09 PHP
php文件操作小结(删除指定文件/获取文件夹下的文件名/读取文件夹下图片名)
2016/05/09 PHP
php实现微信扫码支付
2017/03/26 PHP
修改Laravel自带的认证系统的User类的命名空间的步骤
2019/10/15 PHP
永不消失的title提示代码
2007/02/15 Javascript
Javascript 同时提交多个Web表单的方法
2009/02/19 Javascript
一个奇葩的最短的 IE 版本判断JS脚本
2014/05/28 Javascript
js创建一个input数组并绑定click事件的方法
2014/06/12 Javascript
jQuery截取指定长度字符串的实现原理及代码
2014/07/01 Javascript
JavaScript制作简易的微信打飞机
2015/03/31 Javascript
javascript实现日期时间动态显示示例代码
2015/09/08 Javascript
Angular.js中angular-ui-router的简单实践
2017/07/18 Javascript
Vue.js devtool插件安装后无法使用的解决办法
2017/11/27 Javascript
基于jQuery.i18n实现web前端的国际化
2018/05/04 jQuery
jQuery md5加密插件jQuery.md5.js用法示例
2018/08/24 jQuery
js限制input只能输入有效的数字(第一个不能是小数点)
2018/09/28 Javascript
JQuery基于FormData异步提交数据文件
2020/09/01 jQuery
python网络编程学习笔记(三):socket网络服务器
2014/06/09 Python
Python使用PyGreSQL操作PostgreSQL数据库教程
2014/07/30 Python
利用python解决mysql视图导入导出依赖的问题
2017/12/17 Python
Python列表倒序输出及其效率详解
2020/03/04 Python
日本索尼音乐商店:Sony Music Shop
2018/07/17 全球购物
美国最大的在线水培用品商店:GrowersHouse.com
2018/08/14 全球购物
高中生校园生活自我评价
2013/09/19 职场文书
高中军训的心得体会
2014/09/01 职场文书
处级领导干部四风问题自我剖析材料
2014/09/29 职场文书
中学生国庆节演讲稿2015
2015/07/30 职场文书
机关干部纪律作风整顿心得体会
2016/01/23 职场文书
小学英语教学反思范文
2016/02/15 职场文书
导游词之晋城蟒河
2019/12/12 职场文书
一文搞懂如何实现Go 超时控制
2021/03/30 Python
OpenCV-Python使用cv2实现傅里叶变换
2021/06/09 Python