由于工作需要,笔者正在开发文档解析相关的功能,但是目前的python3只有python-docx、pfdminer3k、python-pptx以及xlrd的模块,并不能够对doc、ppt的文件进行解析的,因此若是想解析doc、ppt就需要将其转换成docx与pptx,然后再进行解析提取。查阅了许多资料,目前转化文件来说,openoffice与libreoffice能够支持命令行操作,在转换小文件时,openoffice稍有优势,在大文件上libreoffice的转化速度会稍快些,这两者的真实差异,未能去证实。而事实证明也是无关紧要的,笔者留意到libreoofice转化的时长与文件大小并未有多大关系。但是二者的转化速度是相当慢的,比如把docx转pdf基本上耗时可能会高达4s左右(Windows系统),受服务器的影响也是蛮大的,笔者曾搭载过四台服务器上,第一台不能直视,第二台的速度最快,但是布置在生产环境上时,速度又不是那么理想了。说了那么多,想表达啥?建议转格式不要使用命令行操作,还是使用java这些拥有比较成熟的libreoffice类的语言进行转化比较好些(毫秒级)。好了,言归正传:
1、卸载系统当前的libreoffice
执行如下命令:sudo yum erase libreoffice\*
(centos、ubuntu均有效)
或者尝试:sudo yum remove libreoffice-*
(未能成功)
为了能使用镜像,在etc 目录之下的hosts文件内加入代理。
注意没有加的话,可能第三步无法操作,也可以不加,直接跳过。
.208.46.146 www.google.com .208.46.146 dl.google.com .208.46.146 dl-ssl.google.com
2、获取rpm文件
http://mirrors.ustc.edu.cn/tdf/libreoffice/stable
3、然后选择rpm然后选择x86_64
http://mirrors.ustc.edu.cn/tdf/libreoffice/stable/6.1.3/rpm/x86_64/
下载3个文件
LibreOffice_6.1.3_Linux_x86-64_rpm.tar.gz LibreOffice_6.1.3_Linux_x86-64_rpm_sdk.tar.gz LibreOffice_6.1.3_Linux_x86-64_rpm_langpack_zh-CN.tar.gz
ceontos有外网情况下,直接复制以下代码
wget http://mirrors.ustc.edu.cn/tdf/libreoffice/stable/6.1.3/rpm/x86_64/LibreOffice_6.1.3_Linux_x86-64_rpm.tar.gz wget http://mirrors.ustc.edu.cn/tdf/libreoffice/stable/6.1.3/rpm/x86_64/LibreOffice_6.1.3_Linux_x86-64_rpm_sdk.tar.gz wget http://mirrors.ustc.edu.cn/tdf/libreoffice/stable/6.1.3/rpm/x86_64/LibreOffice_6.1.3_Linux_x86-64_rpm_langpack_zh-CN.tar.gz
执行如下命令,解压文件(操作/usr/文件夹需要sudo权限)
sudo mkdir /usr/libreoffice sudo tar -zxvf LibreOffice_6.1.3_Linux_x86-64_rpm.tar.gz -C /usr/libreoffice/ sudo tar -zxvf LibreOffice_6.1.3_Linux_x86-64_rpm_sdk.tar.gz -C /usr/libreoffice/ sudo tar -zxvf LibreOffice_6.1.3_Linux_x86-64_rpm_langpack_zh-CN.tar.gz -C /usr/libreoffice/
进入到的RPMS目录
上面三个文件解压之后,/usr/libreoffice/下面会有3个文件夹,里面都有一个RPMS文件夹
LibreOffice_6.1.3_Linux_x86-64_rpm LibreOffice_6.1.3_Linux_x86-64_rpm_sdk LibreOffice_6.1.3_Linux_x86-64_rpm_langpack_zh-CN
分别进入到RPMS的目录下 ,执行入下命令
sudo yum localinstall *.rpm
执行以上步骤,默认会将libreoffice的可执行安装在/opt/lib/libreoffice/…soffice.bin,也可以使用yum来指定安装路径:
yum -c /etc/yum.conf --installroot=/usr/local --releasever=/ localinstall *.rpm
该命令简单解释如下:
-c /etc/yum.conf 表示指定yum配置文件地址
–installroot=/usr/local 表示指定自定义的安装目录
啰嗦一句:libreoffice不能进行批量转格式,因此可能会需要尝试到安装多个软件,或者使用docker来实现批量转化,但目前公司由于网络限制docker安装、镜像拉取上存在很大难度,故此先搁浅了。
注:用yum来进行rpm的安装,不要用rpm命令来进行安装。因为有 依赖关系 libgnomevfs-2.so.0()(64bit),它被软件包 libobasis5.0-gnome-integration-6.1.3-2.x86_64 需要,所以不要使用rpm命令来进行安装, rpm -ivh *.rpm 命令无法解决上面的依赖系。使用yum遇到上面的依赖关系的时候可以从网络下载相应的包来解决依赖关系。(笔者在无外网的情况下,也未曾遇到此处所说的)
如果顺利,到此为止,libreoffice成功安装了.
libreoffice的使用:
soffice --headless --convert-to 目标格式(如pdf) 转格式文件 --outdir 目标文件夹
python代码:
import subprocess p = subprocess.call("soffice --headless --convert-to pdf 转格式文件 --outdir 目标文件夹",shell=True) assert p == 0 '转格式失败...'
以上libreoffice安装参考