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

