2009-06-30 15 views
2

私たちはColdFusion MX7を使用しています。異なるバージョンのiTextをColdFusionで使用する

CFDOCUMENTタグはiTextを使用してPDFを作成するため、iTextライブラリ全体が標準のCFデプロイメントに含まれています。

私が抱えている問題は、私がCF7に含まれているものより新しいバージョンのiTextを使いたいということです。私はCFDOCUMENTを機能させておく必要があるので、単にjarファイルを変更することはオプションではありません。

私がこれまで行ってきたことは、iTextソースをEclipseに読み込み、別の名前にリファクタリングすることです。それはうまく動作し、約1年間そうしています。

しかし、私は最新のiTextリリースにアップグレードしたいと思います。リファクタリングのフープをやり直すことはもう難しいです。

jarsをロードする簡単な方法はありますか?古いバージョンと競合しないようにしますか?

答えて

5

1つのオプションは、JavaLoader.cfcを使用して新しいバージョンのjarをロードすることです。外部クラスローダを使用するため、既存のバージョンを妨げることなく使用できます。

http://www.transfer-orm.com/?action=javaloader.index

http://javaloader.riaforge.org/

しかし、それはまだ文がjavaLoader.create( "path.to.class" を使用するようにCREATEOBJECT( "javaの"、 "path.to.class")を書き換える必要になります)代わりに。しかし、長期的には、リファクタリングよりも優れている可能性があります。これは、今後iText jarを更新する方が簡単なためです。

0

cfdocumentのcf8機能が必要な場合は、より簡単な方法があります。 railoopenbdの両方に、cf8と同等のcfdocument機能があり、両方ともフリーエンジンであることに注意してください。あなたができることは、これらのエンジンの1つをダウンロードして同じサーバにインストールするか、または必要に応じて別のエンジンにインストールします。次に、cfdocument機能をラップし、pdfを返すwebサービスをrailoまたはopenbd内に記述します。

これは最善の解決策ではありませんが、cfに付属のitextバージョンをリファクタリングまたはハッキングすることもありません。

2

ちょうどv5.0.0がリリースされました。パッケージ名が「com.lowagie」から「com.itextpdf」に変更され、共存できるようになりました。

新しいiText.jarファイルをダウンロードし、「iTextpdf.jar」に名前を変更し、CFMXの適切なLIBフォルダに置きます。

createObject呼び出しを実行するときは、単に新しいパッケージ名のパスを使用します。

JavaLoaderは素晴らしいユーティリティですが、サーバースコープ(iText jarへのパスを持つ初期ローダー)にロードしておらず、一度だけロードされていることを確認すると、重大なメモリリークの問題が発生します。

iTextの最新のリファクタリングを使用すると、心配する必要はありません。

+0

恐ろしい!本当にありがとうございました。 –

関連する問題