第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

使用純Python將docx轉(zhuǎn)換為pdf(在Linux上,沒有l(wèi)ibreoffice)

使用純Python將docx轉(zhuǎn)換為pdf(在Linux上,沒有l(wèi)ibreoffice)

白衣非少年 2021-03-31 09:19:49
我在嘗試開發(fā)網(wǎng)絡(luò)應(yīng)用程序時(shí)遇到了問題,該應(yīng)用程序的一部分將上載的docx文件轉(zhuǎn)換為pdf文件(經(jīng)過一些處理)。隨著python-docx等方法,我不要求在Linux上窗機(jī)安裝字,甚至LibreOffice的,對于大多數(shù)加工的(我的Web服務(wù)器是pythonanywhere - Linux,但沒有LibreOffice的,沒有sudo或apt install權(quán)限)。但是轉(zhuǎn)換為pdf似乎需要其中之一。通過探索這里和其他地方的問題,到目前為止,這就是我所擁有的:import subprocesstry:    from comtypes import clientexcept ImportError:    client = Nonedef doc2pdf(doc):    """    convert a doc/docx document to pdf format    :param doc: path to document    """    doc = os.path.abspath(doc) # bugfix - searching files in windows/system32    if client is None:        return doc2pdf_linux(doc)    name, ext = os.path.splitext(doc)    try:        word = client.CreateObject('Word.Application')        worddoc = word.Documents.Open(doc)        worddoc.SaveAs(name + '.pdf', FileFormat=17)    except Exception:        raise    finally:        worddoc.Close()        word.Quit()def doc2pdf_linux(doc):    """    convert a doc/docx document to pdf format (linux only, requires libreoffice)    :param doc: path to document    """    cmd = 'libreoffice --convert-to pdf'.split() + [doc]    p = subprocess.Popen(cmd, stderr=subprocess.PIPE, stdout=subprocess.PIPE)    p.wait(timeout=10)    stdout, stderr = p.communicate()    if stderr:        raise subprocess.SubprocessError(stderr)如您所見,一種方法需要comtypes,另一種方法需要libreoffice作為子流程。除了切換到更復(fù)雜的托管服務(wù)器之外,還有什么解決方案嗎?
查看完整描述

2 回答

?
繁花不似錦

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超4個(gè)贊

另一個(gè)可以使用的是libreoffice,但是正如第一響應(yīng)者所說,質(zhì)量永遠(yuǎn)不會像使用實(shí)際的comtypes那樣好。


無論如何,在安裝libreoffice之后,這里是執(zhí)行此操作的代碼。


from subprocess import  Popen

LIBRE_OFFICE = r"C:\Program Files\LibreOffice\program\soffice.exe"


def convert_to_pdf(input_docx, out_folder):

    p = Popen([LIBRE_OFFICE, '--headless', '--convert-to', 'pdf', '--outdir',

               out_folder, input_docx])

    print([LIBRE_OFFICE, '--convert-to', 'pdf', input_docx])

    p.communicate()



sample_doc = 'file.docx'

out_folder = 'some_folder'

convert_to_pdf(sample_doc, out_folder)


查看完整回答
反對 回復(fù) 2021-04-13
  • 2 回答
  • 0 關(guān)注
  • 1274 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號