使用 shell 将 office 文件转换成 jpg 文件
今天在写脚本的时候碰到一个难题,如何将 office 文件(包括 doc、docx、xls、xlsx、ppt、pptx等)批量转换成 jpg 格式的文件?
本来想用「我的ABC软件工具箱」这款程序来实现的,但是该软件批量超过5个就要收费,我需要整理的,可是需要超过 9000 个目录的……无奈.jpg
后续想到 Linux 下有个 convert
命令,是用来进行格式转换的,很久之前研究图片格式转换的时候使用过,还有点映像,遂想着看能否使用脚本进行批量格式转换。
通过一番研究后发现,还真的可以实现使用脚本将 office 文件转换成 jpg 文件,只不过中间需要经过一道手续,那就是先转成 pdf。下面说说具体转换方法。
1. 将 office 转换成 pdf
这层转换需要用到 unoconv
,这个软件是依赖 LibreOffice
来进行转换的,只要 LibreOffice
支持的格式,都可以进行转换。
unoconv is a command line utility that can convert any file format that LibreOffice can import, to any file format that LibreOffice is capable of exporting.
使用如下命令安装:
sudo apt install unoconv -y;
安装完成后,就可以使用 unoconv
命令将 office 文件转换成 pdf 文件了:
unoconv -f pdf office_file_name.doc
# 转换完成后会在源文件目录生成 office_file_name.pdf 文件
# -f 是指定格式
2. 将 pdf 转换成 jpg
将 office 文件转换成 pdf 文件后,接下来就是将 pdf 转换成 jpg 了,此时需要用到 imagemagick
这个软件,imagemagick
是个集成对图片进行各种编辑、合并、转换、对比等功能的软件,本次我们主要用到的,还是 convert
转换的功能:
convert - convert between image formats as well as resize an image, blur, crop, despeckle, dither, draw on, flip, join, re-sample, and much more.
使用如下命令安装 imagemagick
:
sudo apt install imagemagick -y;
安装完成后还不能直接用,需要进行一些初始化配置,否则执行会报错。(都是填坑的经验啊,大哭.gif)
编辑 /etc/ImageMagick-6/policy.xml
文件,修改如下内容:
...
...
...
修改完初始化配置后,就可以快乐的玩耍了,可使用如下命令进行转换:
convert -density 300 -append office_file_name.pdf office_file_name.jpg
# -desity 300 表示转换图片的分辨率,单位是dpi(默认为75dpi,很粗糙)
# -append 表示将多页合并成长图(默认每页生成一张图)
打完收工,新技能 get✓ !微笑.jpg