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)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。