LoginSignup
40
39

More than 5 years have passed since last update.

ImageMagickとlibreofficeを使ったOffice->PDF->PNG変換について(コマンドライン編)

Last updated at Posted at 2014-11-27

概要

uploadされたoffice関連ファイルをWebでサムネイル表示するための事前調査としてImageMagickとlibreofficeをインストールしてその動作を調べてみました。

ツールのインストール

>sudo yum -y install ImageMagick ImageMagick-devel libreoffice xorg-x11-server-Xvfb

私はvagrantでやったのですが、もの凄く時間がかかるので覚悟を!!

フォントのインストール

日本語TrueTypeフォント「IPAフォント」と「IPAexフォント」をインストールします。

これをやらないと、日本語が「□□□□」とかになります。

IPAexフォント・IPAフォントのダウンロード

上記サイトからあらかじめIPAfont00303.zipとIPAexfont00201.zipをダウンロードしておいてください。

>unzip IPAfont00303.zip
>sudo mkdir /usr/share/fonts/japanese
>sudo mkdir /usr/share/fonts/japanese/TrueType
>sudo mv IPAfont00303/*.ttf /usr/share/fonts/japanese/TrueType/

>unzip IPAexfont00201.zip
>sudo mv IPAexfont00201/*.ttf /usr/share/fonts/japanese/TrueType/
>sudo fc-cache -fv

※エラーがでたらmvをcpに変えて実行してみてください。

DISPLAYの設定

サーバーなので通常DISPLAYは無いのですが、libreofficeはフレームバッファを使用します。ツールのインストールで仮想フレームバッファ X サーバ(xorg-x11-server-Xvfb)をインストールしているので、コマンドラインでlibreofficeを使用する前にDISPLAY変数と仮想フレームバッファ X サーバを起動しておきます。

>export DISPLAY=:1.0
>Xvfb :1 &

こんなエラーが表示されますが、

> Internal error:   Could not resolve keysym XF86AudioMicMute
Errors from xkbcomp are not fatal to the X server

今は気にしないことにします。(Audio関係のデバイスが存在しないためのエラーでこれからの検証する動作には関係ないので)
起動に失敗しているように見えますが、そのままENTERキーを押下してください。(コマンドは完了しています)

OFFICE->PDF変換

>libreoffice --headless --convert-to pdf 変換元ファイル.rtf

例としてrtfを変換していますが、pptxでもxlsxでもかまいません。
出力ファイルは「変換元ファイル.pdf」として出力されます。
※ここでも「XF86AudioMicMute」が表示されますが今は気にしないでください、同様にそのままENTERキーを押下してください。(コマンドは完了しています)

libreofficeの細かい使い方は

>libreoffice --help

などで確認してみましょう。

PDF->PNG変換

>convert 変換元ファイル.pdf 出力ファイル名.png

これでPNGに変換できます。
JPEGなど他の形式にしたい場合は拡張子を変えてみてください。
これも細かい使い方は

>convert --help

などで確認してみましょう。

おまけ(rmagickについて)

Railsでプロジェクトを作るのが面倒なので簡単に確認します。

>gem install rmagick

をあらかじめ実行しておきます。

変換対象となる適当なtest.xlsxと下記のtest.rbを用意します。

test.rb
require 'RMagick'

# test.xlsxをtest.pdfに変換する
list = open('| libreoffice --headless --convert-to pdf test.xlsx') {|msg| msg.gets}

# test.pdfの1ページ目だけをロード
img = Magick::ImageList.new("test.pdf" + '[0]')

#test.pngとして保存
img.write("test.png")

下記コマンドを実行します。

> ruby test.rb

test.pdfとtest.pngが出来ているのを確認しましょう。

関連エントリ

【Windows7】VirtualBox + Vagrant + Ruby + Rails4 開発環境の構築【mysql編】
【Windows7】VirtualBox + Vagrant + Ruby + Rails4 開発環境の構築【RubyMine編】
【Yosemite】Mac OSX 10.10 Yosemite に Ruby + Rails4 開発環境の構築【初心者必見】
【Yosemite】Mac OSX 10.10 Yosemite にAMP環境の構築【初心者必見】【続編】

筆者紹介

札幌圏でリモート開発、在宅勤務を中心としたシステム開発の会社を立ち上げました!
ローラハウス

40
39
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
40
39