本网站可以通过分类标签帮助你快速筛选出你想看的文章,记住地址:www.Facec.cc

word转pdf解决方案(window和linux)

# -*- 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)

# python   pdf   word   linux  

评论