命令行下 将PPT文件转换为图片

命令行下 将PPT文件转换为图片

基于libreoffice,将ppt文件转换为图片格式,同理可以将word转换为图片

之前做需求的时候有这么一个,输入是一个ppt文件,要求输出是每页ppt的图片格式,相当于把ppt分页转换为图片,然后图片再做后续的逻辑处理。如果在window下或者说有office的情况下,手动执行太简单,文件->导出为图片 即可实现,可视化操作,那么问题是我这个功能要作为服务运行,在非人工干预的情况下,所有操作都要由脚本实现,所以折腾了一下,这里记录下来。

使用工具

  1. libreoffice

    官网 https://zh-cn.libreoffice.org/
    OpenOffice的现代衍生品,一个全平台下的office套件,支持命令行调用

  2. convert

    官网 http://www.imagemagick.org/script/
    ImageMagick 下的工具之一
    其实ImageMagick这货强大的狠,各种图片转换、调整…绝对不止本文用到的这点

  3. 思路

    首先用libreoffice将ppt转换为pdf格式,然后再用convert将pdf转换为图片

工具安装

  1. libreoffice

    Mac下

    1. App Store 搜索libreoffice安装。和下面的方法2任选其一
    2. brew cask install libreoffice 至于cask,请自行安装 https://caskroom.github.io/
    3. brew install ghostscript 这是Mac下额外要安装的gs库

    Linux 下

    1. 下载rpm | deb包 ,下载地址https://zh-cn.libreoffice.org/download/,自行选择对应版本
    2. Debian/Ubuntu系统 (.deb包):

       /*解压 如果版本号不同请自行更改文件名*/
       tar -zxvf LibreOffice_5.2.6_Linux_x86-64_deb.tar.gz
       /* 安装主安装程序的所有deb包 */
       $ sudo dpkg -i ./LibreOffice_5.2.6.2_Linux_x86-64_rpm/DEBS/*.deb
      
    3. Fedora/SUSE/Mandriva系统 (.rpm包):

       /*解压 如果版本号不同请自行更改文件名*/
       tar -zxvf LibreOffice_5.2.6_Linux_x86-64_rpm.tar.gz
       /* 安装主安装程序的所有rpm包 */
       $ sudo yum install ./LibreOffice_5.2.6.2_Linux_x86-64_rpm/RPMS/*.rpm
      
  2. convert

    Mac下

     # 安装 imagemagick
     brew install imagemagick
    

    Linux下:

     # 安装 imagemagick CentOS
     sudo yum install ImageMagick
    
     # 如果是ubuntu
     sudo apt-get install ImageMagick
    
  3. 安装验证

    Tips: soffice命令在Linux下安装后可能没有被放到 /usr/local/bin 中,这时候应该执行如下操作

     # 手动更新locate数据库
     sudo updatedb
    
     # 查找soffice命令安装位置 我的是在 /opt/libreoffice5.2/program/下
     locate soffice
    
     # 在/usr/local/bin中建立软链,便于使用
     ln -s /opt/libreoffice5.2/program/soffice /usr/local/bin/soffice
    

    开始验证

     $ soffice -h
    
     # 看到如下输出即可
     LibreOffice 5.2.6.2 a3100ed2409ebf1c212f5048fbe377c281438fdc
    
     Usage: soffice [options] [documents...]
    
     $ convert -h
    
     # 看到如下输出即可
     Version: ImageMagick 6.7.2-7 2017-03-22 Q16 http://www.imagemagick.org
     Copyright: Copyright (C) 1999-2011 ImageMagick Studio LLC
     Features: OpenMP
    
     Usage: convert [options ...] file [ [options ...] file ...] [options ...] file
    

开始转换

1. ppt -> pdf

# 将ppt转换为pdf格式,理论上会再当前文件夹下生成同名sample.pdf
soffice --convert-to pdf:writer_pdf_Export sample.ppt

2. pdf -> jpg

# 将pdf文件的每一页存为jpg图片,会在当前文件夹下生成 sample-0.jpg sample-1.jpg ...
# 图片后缀的数字是ppt的页码索引
convert sample.pdf sample.jpg
转载请注明出处:qii404.me 命令行下 将PPT文件转换为图片