zoukankan      html  css  js  c++  java
  • linux环境基于python语言docx转pdf

    windows平台因借助win32com具有多种方法将word转为pdf,但linux环境不具备此环境,win32com包也将import失败,那该如何做呢?

    # -*- coding: utf-8 -*-
    """
    linux platform word to pdf
    """
    import subprocess
    import os
    try:
        from comtypes import client
    except ImportError:
        client = None 
    try:
        from win32com.client import constants, gencache
    except ImportError:
        constants = None
        gencache = None
    def doc2pdf_linux(docPath, pdfPath):
        """
        convert a doc/docx document to pdf format (linux only, requires libreoffice)
        :param doc: path to document
        """
        cmd = 'libreoffice6.3 --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):
        """
            convert a doc/docx document to pdf format
            :param doc: path to document
            """
        docPathTrue = os.path.abspath(docPath)  # bugfix - searching files in windows/system32
        if client is None:#判断环境,linux环境这里肯定为None
            return doc2pdf_linux(docPathTrue, pdfPath)
        word = gencache.EnsureDispatch('Word.Application')
        doc = word.Documents.Open(docPathTrue, ReadOnly=1)
        doc.ExportAsFixedFormat(pdfPath,
                                constants.wdExportFormatPDF,
                                Item=constants.wdExportDocumentWithMarkup,
                                CreateBookmarks=constants.wdExportCreateHeadingBookmarks)
        word.Quit(constants.wdDoNotSaveChanges)
    if __name__ == '__main__':
        wordpath='/var/db/Report_20191206105753.docx'
        pdfpath='/var/db'
        doc2pdf(wordpath,pdfpath)
    

      

  • 相关阅读:
    简单线程池的设计
    MFC开发--截图工具
    Win32小游戏--蜘蛛纸牌
    C++语言动态创建对象
    C++语言类之间的关系
    c++语言虚函数实现多态的原理(更新版)
    5-24 c++语言之【基础知识】
    小细节--关于printf的输出问题
    Win32小游戏--贪吃蛇
    2020北大夏令营 终末游记
  • 原文地址:https://www.cnblogs.com/mrtop/p/11995974.html
Copyright © 2011-2022 走看看