サーバー上でexcel ⇒ pdf の変換をしたいと考えています。
libreoffice のコマンドラインでの変換を試したところ、フォーマットどおりに変換が行われず、
予期せぬ場所での改ページが発生してしまいます。
何か解決方法はあるのでしょうか?
よろしくお願い致します。
■コマンドライン
# soffice.bin --convert-to pdf --outdir libre_test/ --headless hoge.xlsx
サーバー上でexcel ⇒ pdf の変換をしたいと考えています。
libreoffice のコマンドラインでの変換を試したところ、フォーマットどおりに変換が行われず、
予期せぬ場所での改ページが発生してしまいます。
何か解決方法はあるのでしょうか?
よろしくお願い致します。
# soffice.bin --convert-to pdf --outdir libre_test/ --headless hoge.xlsx
headlessではなく通常の状態(GUI)からExcelファイルを開いてPDFに出力するとどうなりますか?
Linux版LibreOfficeではなくWindows版LibreOfficeで同じように変換をするとどうなりますか?
コマンドラインのオプションとしては(rootユーザーで出力しているのは気になりますが)特におかしなところも無く、考えられるのはフォントの違いからくるレイアウトの崩れぐらいなので、それぞれの環境で出力したPDFを比べて問題を切り分けるぐらいでしょうか。
以下、回答にならないボヤキ
まずExcelの挙動の推測から。
追記(2017-11-20): 少なくともExcel 2016は高さについて非常におかしいというか腐った計算をしている。
A4横、ヘッダ・フッタなし、マージン全部0 拡大縮小なし等は下記の実験と同様。
標準フォントを「IPAexゴシック 10pt」とした。(要再起動)
A1からA100に「あ1」から「あ100」までを並べる。
ページレイアウト表示にする。
行の高さを調べる(0.45cm 17pixel)
何行まで1ページに入っているか確認→51行
A4横のときの縦は210mm/51行だから4.11mm → 0.411cm!?
0.45 * 51 - 21 = 1.95cm はどこから調達した!?
ちなみに 210 / 0.45 = 46.666であり、実際これをxlsxに保存して、LibreOfficeで印刷プレビューすると1ページ目に46行、2ページ目以降に残り。そう、これがあるべき姿だよね…。こんな状態だったら一致するわけないじゃない!
追記ここまで
LibreOfficeの場合はもっと簡単なようだ。
おまけ。
Excel側で印刷時のページ設定で、「拡大縮小」のオプションを、拡大縮小ではなく、「ページ数に合わせて印刷」にして保存し、コンバートすると切れませんでした。私はこれで解決しました。