# -*- coding: utf-8 -*-
"""
linux platform word to pdf
"""
import subprocess
import os
import pythoncom
try:
from comtypes import client
except ImportError:
client = None
try:
from win32com.client import constants, gencache
# windows
from docx2pdf import convert
except ImportError:
constants = None
gencache = None
def doc2pdf_linux(docPath, pdfPath):
"""
在这里执行linux方法调用生成pdf,需要libreoffice
"""
cmd = 'libreoffice --headless --convert-to pdf'.split() + [docPath] + ['--outdir'] + [pdfPath]
p = subprocess.Popen(cmd, stderr=subprocess.PIPE, stdout=subprocess.PIPE)
p.wait(timeout=30)
stdout, stderr = p.communicate()
if stderr:
raise subprocess.SubprocessError(stderr)
def doc2pdf(docPath, pdfPath):
"""
windows 调用pdf,需要docx2pdf
"""
docPathTrue = os.path.abspath(docPath) # bugfix - searching files in windows/system32
if client is None: # 判断环境,linux环境这里肯定为None
return doc2pdf_linux(docPathTrue, pdfPath)
pythoncom.CoInitialize()
convert(docPath, pdfPath)
#
# if __name__ == '__main__':
# wordpath = '1.docx'
# pdfpath = '/www/wwwroot/新建文件夹/'
# doc2pdf(wordpath, pdfpath)