というわけで、unoconv の動作確認を行う過程で行ったこと。
ざっと調べていた範囲では、unoconv を使う場合、--listener でリスナ(OpenOffice と連携するためのブリッジみたいなイメージ?)を起動して、unoconv コマンドを実行する形になるようです。
X 関連の設定の記憶ははるか彼方に行ってしまったので、
Linuxサーバ上でWORDファイルのコンバート
と、ここからリンクされている
openoffice をサーバーにする
を参考にさせていただきました。
- Xvfb の起動
(試したのは root で)Windows 上の SSH クライアントからリモートアクセスしたターミナルではなく、本体のコンソール(0:0)から以下を実行
こちらはopenoffice をサーバーにするより。
# export DISPLAY=:1.0
# Xvfb :1 &
# xhost localhost
- unoconv listener の起動
こちらは、一般ユーザ(とはいっても ubuntu インストール時に登録したアカウント)で unoconv を起動。
ハイフンは2つです。
% unoconv --listener &
すると、unoconv ではなく、soffice.bin というプロセスが起動します。
ここで1点注意ですが、中身に日本語を含むファイルを変換すると思いますので、unoconv --listener を実行するアカウントの LANG には気をつける必要がありそうです(通常、一般アカウントは ja_JP.UTF-8 になっているかと思います)。
% ps aux | grep soffice
k155e1 24820 1.0 14.9 208464 75744 pts/0 Sl 17:12 0:26 soffice.bin -nologo -nodefault -accept=socket,host=localhost,port=2002;urp;StarOffice.ComponentContext
今回、まずはと思い、root で unoconv --listener を実行したのですが、一部漢字が化けました。root でも、LANG=ja_JP.UTF-8; unoconv --listener と実行することで文字化けもなくなりました。
という感じで。
% echo $LANG
ja_JP.UTF-8
% unoconv --listener &
- unoconv 実行!
適当なファイル(ppt)を scp などでサーバ上にコピーし、-f pdf を指定して pdf に変換。
怪しいエラーが発生しますが、pdf ファイルが作成されていることがわかります。
% ls -l
合計 172
-rw-r--r-- 1 k155e1 users 174080 2011-02-07 14:35 input.ppt
issei@issei2:~/a$ unoconv -f pdf input.ppt
Leaking python objects bridged to UNO for reason pyuno runtime is not initialized,
(the pyuno.bootstrap needs to be called before using any uno classes)
% ls -l
合計 324
-rw-r--r-- 1 k155e1 users 153960 2011-02-07 17:56 input.pdf
-rw-r--r-- 1 k155e1 users 174080 2011-02-07 14:35 input.ppt
これで一応 unoconv が使えるようになった、ということでブラウザより OpenSlide にアクセスし、アップロードしたところ、unoconv のところでエラー?は発生していますが、Power Point(ppt)ファイルが Flash(swf)に変換され、参照できるようになりました。
途中で1ページ挟みますが、以下のように Power Point のファイルが参照できました!
ここまで、長かったっす・・・
細かい話については、忘れないうちにまとめたいと思います。