Zhong__Linux服务器word转PDF方案

时间:2018.10

环境:CentOS7

目的:

说明:

作者:Zhong QQ交流群:121160124 欢迎加入!

有时我们可能在项目开发中遇到这样的问题  需要把word文档转换为PDF文件  如果是在windows平台  是可以完美转换的  如果是个人或者只是临时需要转换文件网上也有很多的软件或者第三方接口可供使用  但在Linux系统开发环境下  却会出现不能完美转换的问题  这是因为目前大多数所使用的技术都是依赖系统office办公软件的  windows下的office办公软件是微软公司的  自然在windows系统中转换自如  而linux系统中的办公软件做的不是很完美  使用于linux系统  但对windows中的word支持不是很好  转换也会存在一些不足  这是不同的系统对office的兼容问题  在某个角度可以说是和代码无关的  无论是java还是python皆是如此  未来可能有好的解决方案  目前也可以用其它比较复杂的技术实现

既然windows可以完美支持word转PDF  那么我们可以在一台windows服务器上写一个word转PDF的接口  让linux系统中程序调用  这样就可以实现了  这种方法是可以实现的  笔者已经做过这种需求的项目  感觉不足的是需要一台运行windows的服务器来支持  但确实可以做到比较完美的word转PDF

安装依赖包:

yum install unoconv -y

此时执行转换是可以的 但是默认不支持中文 也就是中文内容不能转换

unoconv -f pdf *.docx # or unoconv -f pdf *.doc

安装Linux版本office套件

yum install libreoffice.x86_64 -y

复制windows系统字体文件到Linux系统并刷新 windows系统字体文件一般在C:\Windows\Fonts\文件夹中 CentOS系统字体文件一般在/usr/share/fonts/目录下 在/usr/share/fonts/目录下新建windows目录 把windows系统字体文件上传到此目录

上传完成后即可使用 下面的更新字体缓存的操作做不做都行

建立字体缓存

fc-cache -fv

查看已安装字体

fc-list |grep windows

上面的unoconv命令也可以soffice命令替代

soffice --headless --invisible --convert-to pdf *.docx # or soffice --headless --invisible --convert-to pdf *.doc

可参考下面整理的方案:

安装libreoffice套件和unoconv软件

1.在线安装

查看yum源的安装包

yum search libreoffice

查看yum源上安转包基本信息

yum info libreoffice

安装Linux版本office套件

yum install libreoffice.x86_64

安装unoconv依赖包

yum install unoconv -y

2.离线安装

如有需要可卸载已存在的office

yum remove openoffice* libreoffice*

下载LibreOffice 以5.3.6.1版本为例 下载网站: 主页 | LibreOffice 简体中文官方网站 - 自由免费的办公套件 下载完成后进行解压安装

tar -zxvf LibreOffice_5.3.6.1_Linux_x86-64_rpm.tar.gz cd LibreOffice_5.3.6.1_Linux_x86-64_rpm/RPMS/ sudo rpm -Uvh *.rpm

安装好office之后安装unoconv git下载 参考网站: https://docs.moodle.org/31/en/Installing_unoconv#CentOS_.2F_RedHat

git clone https://github.com/dagwieers/unoconv.git

拷贝unoconv执行文件到/usr/bin目录

cp unoconv/unoconv /usr/bin

测试

unoconv -f pdf *.doc

python测试文件test.py

vim test.py  # 写入以下的内容

import os

os.system("unoconv -f pdf *.doc")

执行

python test.py

Note

需要了解的是目前无论是windows平台还是Linux平台word文档转PDF文件 大多底层都是依赖于系统本身的office办公套件 由于平台之间的兼容性存在一些问题 所以有些情况下转换的结果不是很完美

而且对于目前window系统较新的word文档软件创建和保存word文档时是以docx后缀结尾 而Linux系统office办公软件对此类文件兼容性并不友好,例如在windows平台显示正常的word文档 如果内容部分背景色显示为灰色 那么在Linux中查看则是黑色背景 不调试则看不清文字 而PDF文档是以word文档为基础 docx存在问题 则转换的PDF文档也理所当然的存在问题 这就导致windows下的docx文档在Linux系统中转换为PDF文档出现样式不一致问题 而较早的doc后缀结尾的word文档由于Linux系统office办公套件兼容性较好的原因一般不会出现此类问题  所以  建议转换为PDF文件的word源文档类型为doc类型

        当然 随着技术的发展 会出现一些比较优秀的工具可能会弥补上述不足 最近有需求要对word文档进行电子签名 发现一款名为aspose-words的工具可以实现! 而且支持多种主流开发语言 不过最近没有word转pdf的需求 也就没测试可否完美转换 有需求的可以尝试一下!

        如果大家发现有什么好的工具也欢迎分享!

QQ交流群:121160124

关注微信公众号:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我变了_我没变

随意 。。。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值