python实现word 2007文档转换为pdf文件
在开发过程中,会遇到在命令行下将DOC文档(或者是其他Office文档)转换为PDF的要求。比如在项目中如果手册是DOC格式的,在项目发布时希望将其转换为PDF格式,并且保留DOC中的书签,链接等。将该过程整合到构建过程中就要求命令行下进行转换。
MichaelSuodenjoki展示了使用Office的COM接口进行命令行下的转换。但其导出的PDF文档没有书签。在Office2007SP2中,微软加入了该功能,对应的接口是ExportAsFixedFormat。该方法不仅适用于Word,而且也适用于Excel。
一个简单的Python脚本来展示如何转换DOC为PDF。该脚本需要Office2007SP2,Python2.6与Pythonforwin32(使Python能调用COM)。这里也可以使用其他支持COM的语言。ExportAsFixedFormat还有其他一些参数,具体参见MSDN相关文档。需要注意的是文档路径需要为绝对路径,因为Word启动后当前路径不是调用脚本时的当前路径。
#-*-coding:utf-8-*- #doc2pdf.py:pythonscripttoconvertdoctopdfwithbookmarks! #RequiresOffice2007SP2 #Requirespythonforwin32extension importsys,os fromwin32com.clientimportDispatch,constants,gencache defdoc2pdf(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) return0 except: return1 finally: w.Quit(constants.wdDoNotSaveChanges) #Generateallthesupportwecan. defGenerateSupport(): #enablepythonCOMsupportforWord2007 #thisisgeneratedby:makepy.py-i"MicrosoftWord12.0ObjectLibrary" gencache.EnsureModule('{00020905-0000-0000-C000-000000000046}',0,8,4) defmain(): 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(notos.path.isabs(input)): input=os.path.abspath(input) if(notos.path.isabs(output)): output=os.path.abspath(output) try: GenerateSupport() rc=doc2pdf(input,output) returnrc except: return-1 if__name__=='__main__': rc=main() ifrc: sys.exit(rc) sys.exit(0)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。