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)