JavaのJODConverterなどのライブラリを使ってOpenOfficeからPDF出力したいときに、OpenOfficeを使うと思います。
その際にOpenOfficeをWindowsのサービスとして登録し、自動起動できるようにしたりすると便利なのでその方法です。
※サービス登録せずにコマンドをたたいてバックグラウンド起動する方法は以下
OpenOfficeなどのアプリはscコマンドでサービス登録してもうまくいかないので、ツールを使う必要があります。
今回は以下の二つのツールを例にサービス登録する方法を紹介します。
①nssm
1.以下のサイトからダウンロード(サーバーが不安定なのか503エラーになることもあるので何度かページ更新したら表示される)
Latest releaseのバージョンで良い
2.ダウンロードしたzipを任意の場所に解凍(今回はCドライブ直下に解凍)

3.コマンドプロンプトを管理者として起動し、win64(32bitの場合はwin32)ディレクトリに移動
cd C:\nssm-2.24\win64
4.以下のコマンドでサービス登録設定画面を開く(OpenOfficeの値はサービス名)
nssm install OpenOffice
5.以下のウィンドウが開くので以下のように入れる
(PathとStartup directoryは自身の環境に合わせて適宜修正)
Path:C:\Program Files (x86)\OpenOffice 4\program\soffice.exe
Startup directory:C:\Program Files (x86)\OpenOffice 4\program
Arguments:-headless -accept=”socket,host=localhost,port=8100;urp;” -nofirststartwizard

6.「Install service」ボタンを押下して登録

7.タスクマネージャーのサービスタブに存在していればOK

8.以下のコマンドでサービスが開始されているか確認
netstat -ano | find ":8100"
以下のようになればOK
C:\nssm-2.24\win64>netstat -ano | find ":8100"
TCP 127.0.0.1:8100 0.0.0.0:0 LISTENING 5488
②sexe
1.以下サイトからsexeをダウンロード
2.ダウンロードしたzipを任意の場所に解凍(今回はCドライブ直下に解凍)

3.sexe64.exeをダブルクリック
4.以下のウィンドウが開くので以下のように入れる
(ファイルは自身の環境に合わせて適宜修正)
ファイル:C:\Program Files (x86)\OpenOffice 4\program\soffice.exe
起動時オプション:-headless -accept=”socket,host=localhost,port=8100;urp;” -nofirststartwizard

5.OKボタン押下で登録
6.タスクマネージャーのサービスタブに存在していればOK

7.以下のコマンドでサービスが開始されているか確認
netstat -ano | find ":8100"
以下のようになればOK
C:\nssm-2.24\win64>netstat -ano | find ":8100"
TCP 127.0.0.1:8100 0.0.0.0:0 LISTENING 5488
【補足】サービスが起動に失敗する場合
サービス登録後にサービスを開始した際にエラー等で起動に失敗していそうな場合は以下をやってみる。
初期だとログオンユーザーがLocal Systemになっているので、これを以下画像のようにサービス管理画面のOpenOfficeのサービスのプロパティから今ログオンしているユーザーなどに変えてみる。

コメント