2

私たちはColdFusionMX7を使用しています。

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

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

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

ただし、最新のiTextリリースにアップグレードしたいので、リファクタリングのフープをもう一度飛び越えるのは少し大変です。

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

4

3 に答える 3

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 を更新する方が簡単だからです。

于 2009-06-30T22:35:07.803 に答える
2

itext は v5.0.0 をリリースしたばかりで、パッケージ名が "com.lowagie" から "com.itextpdf" に変更され、共存できるようになったことが重要な変更の 1 つです。

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

createObject 呼び出しを行うときは、単に新しいパッケージ名のパスを使用してください。

JavaLoader は優れたユーティリティですが、サーバー スコープ (iText jar へのパスを持つ初期ローダー) にロードせず、1 回だけロードされるようにすると、重大なメモリ リークの問題が発生する可能性があります。

iText の最新のリファクタリングを使用すると、心配する必要がなくなります。

于 2009-12-17T18:36:43.983 に答える
0

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

これは最も美しいソリューションではありませんが、itexをリファクタリングしたり、cfに付属のitexバージョンをハッキングしたりすることはありません。

于 2009-07-01T15:28:22.257 に答える