Challenge Engineer Life !

エンジニア人生を楽しみたい!仕事や趣味で学んだ技術的なことを書いていくブログです。

JODConverterとOpenOfficeでExcelをPDFへ変換する

かくかくしかじかあって小さいサンプル作ったのでメモ。

JavaでExcelをPDFへ変換する必要があったのですが、ライブラリは色々とありそうな中、JODConverterを使ってみました。
JODConverterの3.0なのですが、これ3.0-beta-4でメンテナンスは止まってるっぽいですね。。。微妙。

そして2.0まではMavenのCentralリポジトリにあるのですが、3.0はないようです(-_-;これまた微妙。

もしご利用される方は色々ご検討を;

で、それらを前提に以下の環境で簡単なサンプルを作成。

環境
OS: Windows 7 Professional
IDE:NetBeans7.3

Apache OpenOffice 3.4がインストール済

Jar取得

https://code.google.com/p/jodconverter/

のDownloadsから入手。

プロジェクトの作成

とりあえず今回はNetBeans7.3でMavenではなく普通にJavaアプリケーションで作りました。

f:id:kikutaro777:20130626193309j:plain

プロジェクトが生成された後、ライブラリを右クリックして「Jar/フォルダの追加」からダウンロードしたJODConverter.jarを指定します。

f:id:kikutaro777:20130626193320j:plain

その他の参照

必要なライブラリがいくつかあるようで、自分の場合は面倒なので、一旦別のMavenプロジェクト作って以下のpom.xmlを定義して、ビルド、ダウンロードしました;横着。。。

<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.4</version>
</dependency>
<dependency>
    <groupId>org.openoffice</groupId>
    <artifactId>juh</artifactId>
    <version>3.2.1</version>
</dependency>
<dependency>
    <groupId>org.openoffice</groupId>
    <artifactId>ridl</artifactId>
    <version>3.2.1</version>
</dependency>
<dependency>
    <groupId>org.openoffice</groupId>
    <artifactId>unoil</artifactId>
    <version>3.2.1</version>
</dependency>

で、ダウンロードされたら、元のプロジェクトに戻って、ライブラリで右クリックして「Jar/フォルダの追加」から落とされたjarを指定します。デフォルト設定だと以下にあるかと。
C:\Users\ユーザ名\.m2\repository

f:id:kikutaro777:20130626193632j:plain

簡単なコード

で、サンプルレベルのコードですが、以下のように書いて

package excel2pdfconvert;

import java.io.File;
import org.artofsolving.jodconverter.OfficeDocumentConverter;
import org.artofsolving.jodconverter.office.DefaultOfficeManagerConfiguration;
import org.artofsolving.jodconverter.office.OfficeManager;

public class Excel2PdfConvert {

    public static void main(String[] args) {
        DefaultOfficeManagerConfiguration config = new DefaultOfficeManagerConfiguration();
        //とりあえずサンプルなのでベタに設定
        config.setOfficeHome("C:\\Program Files\\OpenOffice.org 3");
        config.setPortNumber(8100);
        //本来はタイムアウトの設定とかもしたほうが良い
        
        OfficeManager officeManager = config.buildOfficeManager();
        officeManager.start();
        
        OfficeDocumentConverter converter = new OfficeDocumentConverter(officeManager);
        converter.convert(new File("C:\\temp\\Book1.xlsx"), new File("C:\\temp\\Book1.pdf"));
        
        officeManager.stop();
    }
}
実行

元のExcelはofficeのサイトから適当に落としてきたテンプレートで以下のようなExcelです。

f:id:kikutaro777:20130626193721j:plain

で、プログラム実行して、生成されたPDFは以下のような感じ。

f:id:kikutaro777:20130626193726j:plain

わりといい感じ!Excelの定義によっては崩れたりもありそうですが、もう少し触ってみよう。

にほんブログ村 IT技術ブログへ
にほんブログ村 にほんブログ村 IT技術ブログ Javaへ
にほんブログ村