Libreoffce のコマンドを使うと変換が楽
libreoffice には libreoffice(旧名 soffice) コマンドが付属していて、コレを使うことで、doc/docx xls/xlsx ppt/pptx をPDFに変換することが出来るのです。
libreoffice --convert-to pdf --outdir $dest_dir --headless $file_name
リモートでXなしのばあい
ssh 経由で x11 ログインしていない場合は、エラーになるので xvfbを使います。
xvfb-run libreoffice --convert-to pdf --outdir $dest_dir --headless $file_name
xvfb は X11 Virtual frame buffer のことですね。コレを使うことで、リモートのLinuxのXを使ってLibreoffice経由で、Officeファイルが変換できるわけです。
ズレる場合の対処法
PPTXなど、コンバート後のPDFズレる場合の対処。 とくにPowerPointのファイルに顕著に現れるのですが、表示がずれる場合が多かった。この状況の対処方法を検討したら、次のことがわかった
- LibreOffice の最新版を「提供元」から導入する
- フォントを大量に突っ込む
この解決策を試みた所、MS-Officeと遜色ないPDFが生成されるようになった。
Libreofficeの最新版をいれる事について
最新版で互換表示の相当量が改善されています。そのため、Linuxのディストリビューションが提供するパッケージより、Libreofficeの提供元から最新版を導入したほうが互換表示の面では有利でした。
もちろん、APTを無視して、deb / rpm などの最新版を入れると、管理が面倒なのですが。
フォントを入れる
ライセンス的にはあまり関心しないけれど、MSゴシックなどを、LibreOfficeの動く、Linux変換サーバー側に用意すると、相当改善します。
Preview.appでズレるのも同じ
この事象にアタックして気付いたのですが、macOS X のプレビューでOfficeの表示は、Libreofficeのそれと「全く同じようにズレる」のです。
Mac OSXには、プレビュー.app という超絶便利なプレビューがあるのですが、 これが、どうしても「ずれる」のです。
このズレが、Libreofficeの旧版やフォント無し状態と同じずれ方なのです。
ここから、想像するに、プレビュー.app は LibreOfficeのエンジンを使ってると思われます。(しかも古い)
なので、Preview.appで表示がおかしいと思うときは、Libreofficeをプレビュー代替につかってQuickLookに登録すると嬉しいかもしれません。今度試してみたい