在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Python/ Python word轉(zhuǎn)換成PDF速度問題

Python word轉(zhuǎn)換成PDF速度問題

使用python將word文件轉(zhuǎn)換成PDF,代碼如下:

def convertDocxToPDF(infile,outfile):
    wdFormatPDF = 17
    word = comtypes.client.CreateObject('Word.Application')
    doc = word.Documents.Open(infile)
    doc.SaveAs(outfile, FileFormat=wdFormatPDF)
    doc.Close()
    word.Quit()

但發(fā)現(xiàn)速度很慢,經(jīng)過排查,發(fā)現(xiàn)
word = comtypes.client.CreateObject('Word.Application')
這一句執(zhí)行需要近20s,在執(zhí)行批量轉(zhuǎn)換時,為了提高效率,能否在內(nèi)存中生成一個word,每次轉(zhuǎn)換時都在這個word上進行?請問技術(shù)上如果可以實現(xiàn)應(yīng)該怎么寫代碼?

回答
編輯回答
有你在

你機器本身啟動 word 就太慢了吧。

以前處理類似場景,我是用 win32com 的。里面有個 Dispatch 可以得到一個實例。

https://groups.google.com/for...

7年前的代碼。

# -*- coding: UTF-8 -*-

from win32com.client import Dispatch, DispatchEx


def translate(s):
    #msword = Dispatch('Word.Application')
    msword = DispatchEx('Word.Application') #強制啟用一個新實例

    msword.Visible = 0 # 是否顯示界面
    msword.DisplayAlerts = 0 # 是否顯示提示信息

    msword.Documents.Add()
    msword.Selection.TypeText(s)

    msword.WordBasic.ToolsTCSCTranslate #屬性封裝方法,這靠猜的啊T_T
    r = msword.Documents[0].Content.Text.replace(u'\r', u'\n')

    msword.Quit(False) #是否提示保存
    return r
2018年3月13日 01:04
編輯回答
紓惘

你這里的word是一個指向COM對象的interface pointer,應(yīng)該是可以復(fù)用的

2018年4月25日 16:00
編輯回答
紓惘

如果可以復(fù)用的話可以來一個靜態(tài)類:

class WordObject:
    wordObject = comtypes.client.CreateObject('Word.Application')
    @class_method
    def word(cls):
        return self.wordObject
def convertDocxToPDF(infile, outfile):
    word = WordObject.word()
    ...
2017年9月23日 02:27