python實現(xiàn)word 2007文檔轉(zhuǎn)換為pdf文件
在開發(fā)過程中,會遇到在命令行下將DOC文檔(或者是其他Office文檔)轉(zhuǎn)換為PDF的要求。比如在項目中如果手冊是DOC格式的,在項目發(fā)布時希望將其轉(zhuǎn)換為PDF格式,并且保留DOC中的書簽,鏈接等。將該過程整合到構(gòu)建過程中就要求命令行下進行轉(zhuǎn)換。
Michael Suodenjoki展示了使用Office的COM接口進行命令行下的轉(zhuǎn)換。但其導出的PDF文檔沒有書簽。在Office 2007 SP2中,微軟加入了該功能,對應的接口是ExportAsFixedFormat。該方法不僅適用于Word,而且也適用于Excel。
一個簡單的Python腳本來展示如何轉(zhuǎn)換DOC為PDF。該腳本需要Office 2007 SP2, Python 2.6與Python for win32(使Python能調(diào)用COM)。這里也可以使用其他支持COM的語言。ExportAsFixedFormat還有其他一些參數(shù),具體參見MSDN相關(guān)文檔。需要注意的是文檔路徑需要為絕對路徑,因為Word啟動后當前路徑不是調(diào)用腳本時的當前路徑。
#-*- 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)
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
淺談python中scipy.misc.logsumexp函數(shù)的運用場景
下面小編就為大家?guī)硪黄獪\談python中scipy.misc.logsumexp函數(shù)的運用場景。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-06-06
Python網(wǎng)絡爬蟲之獲取網(wǎng)絡數(shù)據(jù)
本文介紹了Python中用于獲取網(wǎng)絡數(shù)據(jù)的重要工具之一——Requests庫,詳細講解了Requests庫的基本使用方法、請求方法、請求頭、請求參數(shù)、Cookies、Session等內(nèi)容,并結(jié)合實例代碼展示了Requests庫的應用場景2023-04-04
Python??Flask框架操作數(shù)據(jù)庫的方法
Flask中最方便用的數(shù)據(jù)庫框架是flask_sqlalchamy,是對?SQLAlchamy?在?Flask?中的擴展,它主要在于簡化Flask?中?sqlalchamy的使用,本篇文章給大家介紹Python??Flask的數(shù)據(jù)庫操作使用方法,感興趣的朋友一起看看吧2024-02-02
pandas中Series和DataFrame的rank方法解析
pandas中的rank方法是用于數(shù)據(jù)排名的重要工具,它不返回排序后的數(shù)據(jù),而是數(shù)據(jù)的排名。rank方法可以處理相同數(shù)據(jù)的排名,通過平均排名方式解決排名沖突,并支持自定義排序規(guī)則及逆序排名。此外,DataFrame的rank方法允許在行或列上計算排名2024-09-09
Github?Copilot結(jié)合python的使用方法詳解
最近也是聽說github出了一種最新的插件叫做copilot,于是申請了,下面這篇文章主要給大家介紹了關(guān)于Github?Copilot結(jié)合python使用的相關(guān)資料,需要的朋友可以參考下2022-04-04
python文件讀取read及readlines兩種方法使用詳解
這篇文章主要為大家介紹了python文件讀取read及readlines兩種方法的使用示例及區(qū)別詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-07-07

