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)

  

最新文章

  1. [翻译svg教程]Path元素 svg中最神奇的元素!
  2. Using Recursive Common table expressions to represent Tree structures
  3. iOS __strong __weak @Strongify @Weakify
  4. mybatis.net insert 返回主键
  5. Visual Studio 编译项目失败,提示找不到文件
  6. PHP合并数组保留key值
  7. build/core/config.mk
  8. php之上传小案例,根据时间:月日分创建目录并随机生成文件名
  9. 专题笔记--Java 类集框架
  10. gcc 的编译过程
  11. html css <input> javaScript .数据类型 JS中的函数编写方式 BOM总结 DOM总结
  12. UE4笔记:利用Widget设计一个切换材质功能
  13. email program (客户端)演变过程有感
  14. OpenStack--Havana
  15. sigmod函数
  16. 后端自测必备神器-PostMan
  17. N! (数组)
  18. 详解--从地址栏输入url到页面展现中间都发生了什么?
  19. 第2章 Python基础-字符编码&数据类型 综合 练习题
  20. 二:maven构建module

热门文章

  1. Mysql安装 ----> 基于源码包安装
  2. centos解决bash: telnet: command not found...&& telnet: connect to address 127.0.0.1: Connection refused拒绝连接
  3. bootstrap中col-xs-*和col-sm-* 和col-md-*是怎么样对应的
  4. 重新理解CEO的学习能力----HHR计划----以太入门课--第一课
  5. 导出EXCEL设置单元格格式
  6. 七 Spring的IOC的注解方式
  7. spring cloud spring boot JPA 克隆对象修改属性后 无法正常的执行save方法进行保存或者更新
  8. 吴裕雄--天生自然ORACLE数据库学习笔记:管理控制文件和日志文件
  9. 06. Z字型变换
  10. 「NOIP2009」Hankson的趣味题