python word转pdf linux_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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值