在開發過程中,會遇到在命令行下將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) 以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林站長站。
新聞熱點
疑難解答