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基础教程之lambda表达式使用方法
Feb 12 Python
python转换摩斯密码示例
Feb 16 Python
python单线程实现多个定时器示例
Mar 30 Python
Python基础教程之内置函数locals()和globals()用法分析
Mar 16 Python
python中的变量如何开辟内存
Jun 26 Python
python八皇后问题的解决方法
Sep 27 Python
python利用7z批量解压rar的实现
Aug 07 Python
Django中ajax发送post请求 报403错误CSRF验证失败解决方案
Aug 13 Python
Python lambda表达式filter、map、reduce函数用法解析
Sep 11 Python
django从后台返回html代码的实例
Mar 11 Python
python3中sorted函数里cmp参数改变详解
Mar 12 Python
教你怎么用Python实现多路径迷宫
Apr 29 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
如何选购合适的收音机
2021/03/01 无线电
php5.3提示Function ereg() is deprecated Error问题解决方法
2014/11/12 PHP
php函数传值的引用传递注意事项分析
2016/06/25 PHP
php实现网页上一页下一页翻页过程详解
2019/06/28 PHP
PHP的JSON封装、转变及输出操作示例
2019/09/27 PHP
setInterval 和 setTimeout会产生内存溢出
2008/02/15 Javascript
由document.body和document.documentElement想到的
2009/04/13 Javascript
Javascript 圆角div的实现代码
2009/10/15 Javascript
深入理解JavaScript系列(16) 闭包(Closures)
2012/04/12 Javascript
js动态创建、删除表格示例代码
2013/08/07 Javascript
一个css与js结合的下拉菜单支持主流浏览器
2014/10/08 Javascript
JS制作简单的三级联动
2015/03/18 Javascript
Web前端新人笔记之jquery入门心得(新手必看)
2016/05/17 Javascript
用jQuery获取table中行id和td值的实现代码
2016/05/19 Javascript
jQuery实现可展开折叠的导航效果示例
2016/09/12 Javascript
KVM虚拟化技术之使用Qemu-kvm创建和管理虚拟机的方法
2016/10/05 Javascript
JS实现的五级联动菜单效果完整实例
2017/02/23 Javascript
教你用十行node.js代码读取docx的文本
2017/03/08 Javascript
jQuery实现节点的追加、替换、删除、复制功能示例
2017/07/11 jQuery
微信小程序页面上下滚动效果
2020/11/18 Javascript
8个有意思的JavaScript面试题
2019/07/30 Javascript
vue 组件开发原理与实现方法详解
2019/11/29 Javascript
element-plus一个vue3.xUI框架(element-ui的3.x 版初体验)
2020/12/02 Vue.js
[42:32]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第二场 11.27
2020/12/01 DOTA
Python 创建子进程模块subprocess详解
2015/04/08 Python
Python2随机数列生成器简单实例
2017/09/04 Python
Python中文件的写入读取以及附加文字方法
2019/01/23 Python
基于Python爬取京东双十一商品价格曲线
2020/10/23 Python
python脚本定时发送邮件
2020/12/22 Python
文员个人求职自荐信
2013/09/21 职场文书
大学生毕业鉴定
2014/01/31 职场文书
2014三八妇女节活动总结范文四篇
2014/03/09 职场文书
校庆标语集锦
2014/06/25 职场文书
2015年团队工作总结范文
2015/05/04 职场文书
2015年度女工工作总结
2015/10/22 职场文书
SQL Server中的逻辑函数介绍
2022/05/25 SQL Server