WEBシステムでの帳票出力
今回の案件で、案外苦労したのが最終的な帳票出力。
WEB系なので、方法が限られている。
CSVダウンロード→Excelのマクロ→PDF
という仕組みで、一部動かしてみた。
でもExcelのマクロが案外遅いのと、VBAが思いの外、面倒くさい。
で、良い方法がないかと探っていたのだけれど、LibreOfficeがxlsx→pdfやdoc→pdfに使えるらしいので、試してみる。
クラウドマシンでXをどうするか
とりあえず、sshでいつものように入り込んで作業する。
# yum install libreoffice libreoffice-langpack-ja
でサックリと入る。
色々と調べると、XやDesktop、GNOMEかKDEを入れろという。
必要であればVNC Serverも?
うむむ、何だか完全にDesktop環境を構築しないといけないのか?と思いつつも少し作業を行う。
一通り、入れて試しに動かしてみるが、案の定エラーが出る。
X11 error: Can't open display:
Set DISPLAY environment variable, use -display option
or check permissions of your X-Server
(See "man X" resp. "man xhost" for details)
はいはい、Xの設定はしていないですよ。
でも、もともとサーバマシンだし、Xなんてリモートでしか使わないけど、今回はX無しでLibreOffice使いたいわけだし…。
どうしようか困りながらも、あちこち読み進めてみる。
ここに、ありました。
By searching the web I found a WIKI entry at alfresco saying that there needs to be installed a package called openoffice.org-headless. This installes a OOO plugin which is required to make the -headless commandline option work! After installing this package the X11 error message is gone!
So for all on CentOS you need to run:
yum install openoffice.org-headless
Problem solved, hope it may help others too!!
Thanks again for your inputs!
Tom
ふむふむ、OpenOfficeのWikiによると、これで解決したらしい。
早速、LibreOfficeはどうなっているか調べてみると、https://wiki.documentfoundation.org/Development/HeadlessBuild
むむむ、一応、X無しでも動作するらしいけれど、buildしないといけないかも…。
でも、yum のパッケージが出ているとの情報があったので、ラッキー。
# yum install libreoffice-headless
で、OKらしい。
試しに、変換をかけてみる。
$ libreoffice --headless --nologo --nofirststartwizard --convert-to pdf sample.xlsx
これで、同じディレクトリにsample.pdfを生成してくれる。
ちなみに、異なるディレクトリへの出力は、
$ libreoffice --headless --nologo --nofirststartwizard --convert-to pdf --outdir /tmp sample.xlsx
のように、ディレクトリを指定すればOK。ただ、--convert-to の後に--outdirを書かないと、そんなオプション知らないとか言われてorz
これで、コマンドライン上で、各種OfficeデータをPDFに変換できそう。
あとは、Fontの違いを上手く吸収できるか?という面倒な話が残って入るが…。
もう少し格闘してみる。
コメント
コメントを投稿
励みになりますので、簡単で良いので一言くださいませ。