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-基础-入门 简介
Aug 09 Python
解决python3 urllib中urlopen报错的问题
Mar 25 Python
Python编程求解二叉树中和为某一值的路径代码示例
Jan 04 Python
浅谈Django学习migrate和makemigrations的差别
Jan 18 Python
Python使用Windows API创建窗口示例【基于win32gui模块】
May 09 Python
Python魔法方法功能与用法简介
Apr 04 Python
GitHub 热门:Python 算法大全,Star 超过 2 万
Apr 29 Python
Python 获取项目根路径的代码
Sep 27 Python
Python3并发写文件与Python对比
Nov 20 Python
Pandas将列表(List)转换为数据框(Dataframe)
Apr 24 Python
Python实现Word文档转换Markdown的示例
Dec 22 Python
Python约瑟夫生者死者小游戏实例讲解
Jan 04 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之面向对象
2013/05/15 PHP
php实现XML和数组的相互转化功能示例
2017/02/08 PHP
php 类中的常量、静态属性、非静态属性的区别
2017/04/09 PHP
laravel5表单唯一验证的实例代码
2019/09/30 PHP
Laravel 5.2 文档 数据库 ―― 起步介绍
2019/10/21 PHP
PHP 实现链式操作
2021/03/09 PHP
js 操作select和option常用代码整理
2012/12/13 Javascript
javascript解决IE6下hover问题的方法
2015/07/28 Javascript
基于MVC5和Bootstrap的jQuery TreeView树形控件(二)之数据支持json字符串、list集合
2016/08/11 Javascript
form+iframe解决跨域上传文件的方法
2016/11/18 Javascript
Javascript中字符串replace方法的第二个参数探究
2016/12/05 Javascript
浅析JavaScript中作用域和作用域链
2016/12/06 Javascript
Bootstrap警告(Alerts)的实现方法
2017/03/22 Javascript
使用MUI框架模拟手机端的下拉刷新和上拉加载功能
2017/09/04 Javascript
解决jquery appaend元素中id绑定事件失效的问题
2017/09/12 jQuery
vue中实现在外部调用methods的方法(推荐)
2018/02/08 Javascript
JavaScript实现淘宝京东6位数字支付密码效果
2018/08/18 Javascript
jQuery层叠选择器用法实例分析
2019/06/28 jQuery
vue实现顶部菜单栏
2020/11/08 Javascript
自动化Nginx服务器的反向代理的配置方法
2015/06/28 Python
每天迁移MySQL历史数据到历史库Python脚本
2018/04/13 Python
安装完Python包然后找不到模块的解决步骤
2020/02/13 Python
python 中的paramiko模块简介及安装过程
2020/02/29 Python
python GUI库图形界面开发之PyQt5简单绘图板实例与代码分析
2020/03/08 Python
css3翻牌翻数字的示例代码
2020/02/07 HTML / CSS
canvas实现漂亮的下雨效果的示例
2018/04/18 HTML / CSS
波兰品牌内衣及泳装网上商店:Astratex.pl
2017/02/03 全球购物
皮尔·卡丹巴西官方商店:Pierre Cardin
2017/07/21 全球购物
大学生职业生涯规划书模板
2014/01/03 职场文书
办公室人员先进事迹
2014/01/27 职场文书
3.15国际消费者权益日主题活动活动总结
2014/03/16 职场文书
共产党员承诺书
2014/03/25 职场文书
高中班主任评语
2014/12/30 职场文书
婚宴致辞
2015/07/28 职场文书
《法国号》教学反思
2016/02/22 职场文书
浅谈:电影《孔子》观后感(范文)
2019/10/14 职场文书