python word转pdf linux_Linux下使用LibreOffice+python将doc/docx/wps格式的文档转成html/txt/docx等格式...

Linux下的word文档格式转换工具

最近接到一个需求,要将所有不同格式的文档(包括.doc/.docx/.wps)转成统一格式,如都转为.docx,或直接转为.html 或.txt。经调研后,发现有这样几款工具:

win32com

python-docx

pydocx

可能还有,我就不再赘述了。经过全面调研,我发现这些工具存在这样的问题——Python相关工具要么无法处理.doc(只能处理.docx),要么要求必须在windows环境下使用(如win32com)。当前大家的生产环境一般都是Linux环境,更换win服务器会造成一系列的连带问题,比如其他库是否兼容等等,非常麻烦,所以找到.doc/.wps在Linux下的处理方式非常重要。还好,最后被我找到了,那就是LibreOffice

LibreOffice具体用法

首先,直接在命令行执行libreoffice --version,看看你是否已经安装此款工具。如果还没有安装,参考下文安装LibreOffice

安装完毕后,使用以下命令,对待转格式的文档进行格式转换,示例如下:

将.doc格式文档转为txt格式:

libreoffice --headless --convert-to txt path-to-your-doc.doc

你同样可以指定转换后的文件输出路径,也可以批量地将doc/docx/wps文件传给LibreOffice接口:

libreoffice --headless --convert-to html --outdir /your/output/dir /your/doc_docx_wps/files/*.{dosx,doc,wps}

使用python脚本执行格式转换

这个其实没什么玄乎的,就是用Python执行命令行而已:

import os

os.system("libreoffice --headless --convert-to txt path-to-your-doc.doc")

当然,如果你嫌这个接口的单进程速度太慢,你也可以用Python执行多进程启动转换:

import subprocess

import os, glob

from multiprocessing.dummy import Pool

def worker(fname, dstdir=os.path.expanduser("~")):

subprocess.call(["libreoffice", "--headless", "--convert-to", "pdf", fname], cwd=dstdir)

pool = Pool()

pool.map(

你可能感兴趣的:(python,word转pdf,linux)