|
Last-modified: 2005-12-30 (金) 06:55:56 (6664d)
以下の記載は、OpenOffice.org1.1.5, 2.0.0を前提にしています。 [参考URL] Windowsで常駐させる(listenモードで起動する) †JavaなどのプログラムからOpenOffice.orgのAPIをremote invokeするには、OpenOffice.orgをlistenモードで起動しておく必要があります。(1)コマンドラインで起動する方法と (2)設定ファイルの記述を変更し、常時起動しておく方法の2つがあります。後者の設定は以下に。
参照:OOo api Windowsで簡単にOOoを常駐させるには、ログイン時のスタートアップで起動される「quickstart.exe」でよいかも知れませんが、そうすると利用中はログオフできなくなります。(^^;; できるなら、Windowsサービスとして、 {OOo Install Path}/program/soffice -headless "-accept=socket,port=8100;urp;StarOffice.ServiceManager" あたりのコマンドを登録するのがよいのかな?(動作未確認) 参照:OOoで利用可能なcmdline引数 Linuxで常駐させる。 † LinuxでOOoを常駐させる時の注意点は、「X Window Systemが動作していないと、OOoは起動しない」ということです。なので、単純に /etc/init.d に登録してもエラーになっちゃいますね。どういう形で起動・常駐させるのがよいのでしょうかね? OpenOffice起動用rc script? JavaからPDF出力用ツールとして使う † OpenOffice.orgをlistenモードで起動しておけば、例えば、Javaのプログラムで、Excel文書を読み込んでPDFファイル出力するなんてことが、簡単にできるようになりますね。 呼び出し例 File excelFile = new File("sample.xls"); File pdfFile = new File("sample.pdf"); OOoContext context = OOoContext.getContext(); DocumentConverter converter = context.getDocumentConverter(); // PDFに変換してファイル保存する。 converter.convert(excelFile, pdfFile); public class OOoContext { private static final OOoContext context = new OOoContext(); private OpenOfficeConnection connection; private DocumentConverter converter; public OOoContext() { connection = new SocketOpenOfficeConnection(8100); try { connection.connect(); } catch (ConnectException exception) { throw new RuntimeException("start OpenOffice.org on port 8100", exception); } converter = new OpenOfficeDocumentConverter(connection); Runtime.getRuntime().addShutdownHook(new Thread() { public void run() { connection.disconnect(); } }); } (以下、省略) } なお、上記のやり方では、何らかの理由でコネクションが切れちゃった場合の再接続の仕組み等はサポートされていないようです。いがぴょんさんによると、OpenOffice.orgを常駐させっぱなしにすると、どうしても動作が不安定になりがちということなので、同ページにて対策法を提示されています。(そのうちblancoReportが最適解になるのかな?) また、OOoのPDF出力は、ファイル出力に限定されます。Webシステムにおいて、HTTPレスポンスでPDFを出力したい場合にはストリーム出力がうれしいわけですが、直接ストリームにはできず、サーバPCに一旦保存したPDFファイルを送信することになる、ということです。不要になったPDFファイルを削除する処理も必要になるでしょう。 グラフ †Excelでサポートされていても、Calcでサポートされていないグラフは出力できません。折れ線と棒の混合グラフなどは、折れ線だけのグラフになってしまいます。 また、Excel側で設定されている軸タイトルのフォントなども、Calc側では英字用のフォントに反映されてしまい、日本語用フォントには反映されません。その結果、フォントが変わるだけでなく、凡例などのグラフレイアウトが大きく崩れてしまう原因にもなります。 実行速度 †Excelブックにグラフがある場合には、ファイル読み込みやグラフ計算で数秒程度かかります。Webシステムの場合は、数秒変わらない画面をユーザが待ってくれるか、が問題になります。また、PDF出力のトランザクションがひどく多いケースでは更に問題になるかもしれません。 |