Javaから直接FOP(Apache FOP)を使う
Apache FOP は普通コマンドラインから使いますが、 FOPはJavaで記述されているため、直接Javaから使うことができます。
groovy から使いたかったのだが、
Caught: java.lang.LinkageError: loader constraint violation: loader (instance of
) previously initiated loading for a different type with name "org/w3c/dom/NodeList" というエラーが出てしまう。
org/w3c/dom 関係のクラスは、groovy に含まれていると思われるが、 fop関係で依存している jar , batik-all-1.7.jar にも含まれている。 ... ということは、batik-all-1.7.jar から org/w3c/dom 関係のクラスを 除去すれば問題なくうごくのではないか...
apache batik をダウンロードして依存jarを調べたら NodeList クラスは xml-apis.jar に含まれていた.
コード
ここでは test.fo を r.png に変換してみます。
依存する jar たちを ( fop/lib/*jar と fop/build/fop.jar です )を クラスパスに通しましょう。