python word文档转pdf(windows+linux)

python word文档转pdf(windows+linux)

Fre_soe 272 2022-11-07

linux系统word转pdf需先安装libreoffice, 安装方法可参考: https://cloud.tencent.com/developer/article/2068052

import subprocess
import os
from comtypes.client import CreateObject
from win32com import client
import pythoncom



# linux转化pdf
def doc2pdf_linux(doc):
    """
    convert a doc/docx document to pdf format (linux only, requires libreoffice)
    :param doc: path to document
    """
    print('转化pdf')
    print('doc地址为::::::::::')
    print(doc)
    cmd = 'libreoffice7.4 --headless --convert-to pdf'.split() + [doc]
    print('cmd为::::')
    print(cmd)
    path = os.path.abspath('media/Maintenance/doc')
    print('path为:::::::')
    print(path)
    p = subprocess.Popen(cmd, stderr=subprocess.PIPE, stdout=subprocess.PIPE, cwd=path)
    p.wait(timeout=10)
    stdout, stderr = p.communicate()
    if stderr:
        print('出错')
        raise subprocess.SubprocessError(stderr)


# windows转化pdf
def wd_to_pdf(doc):
    try:
        pythoncom.CoInitialize()
        name = doc.rsplit('.', 1)[0]
        word = client.DispatchEx("Word.Application")
        worddoc = word.Documents.Open(doc)
        worddoc.SaveAs(name + '.pdf', FileFormat=17)
    except Exception:
        msg = 'pdf生成异常'
        worddoc.Close()
        word.Quit()
    worddoc.Close()
    word.Quit()

    
if __name__ == '__main__':

    doc = 'text.docx'
    doc2pdf_linux(doc)
    wd_to_pdf(doc)