2009-06-30 56 views
2

我們使用的是ColdFusion MX7。在ColdFusion中使用不同版本的iText

CFDOCUMENT標籤使用iText進行PDF創建,因此整個iText庫都包含在標準CF部署中。

我遇到的問題是我想要使用比CF7中包含的更新版本的iText。我需要保持CFDOCUMENT正常運行,所以只需更改jar文件不是一個選項。

我到目前爲止所做的工作是將iText源文件加載到Eclipse中,並將其重構爲不同的名稱。這工作正常,並且一直這樣做了大約一年。

但是,我想升級到最新的iText版本,再次跳過重構的箍環有點令人生畏。

有沒有更容易的方法來加載罐子,而不是與舊版本衝突?

回答

5

一種選擇是使用JavaLoader.cfc加載jar的較新版本。由於它使用外部類加載器,因此可以在不干擾現有版本的情況下使用它。

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

http://javaloader.riaforge.org/

但是,它仍然需要重寫你的CreateObject( 「Java」 的, 「path.to.class」)語句中使用javaLoader.create( 「path.to.class」 )代替。但從長遠來看,這可能比重構更好,因爲將來更新iText jar會更容易。

0

如果你想要的是cfdocument的cf8功能,那麼可能會有一個更簡單的方法。請記住railoopenbd都具有與cf8相同的cfdocument功能,並且兩者都是免費的引擎。你可以做的是將這些引擎中的一個下載並安裝到同一臺服務器上,或者根據需要安裝其他引擎。然後在railo或openbd中編寫一個web服務,它包裝了cfdocument的功能並將pdf返回給您。

這不是最漂亮的解決方案,但是它也不是重構itext或者黑客使用cf.的itext版本。

2

Itext剛剛發佈了v5.0.0,其中一個重大變化是Package Name已從「com.lowagie」更改爲「com.itextpdf」,允許您共存。

只需下載新的iText.jar文件並將其重命名爲「iTextpdf.jar」,並將其定位在CFMX的正確LIB文件夾中。

當您執行createObject調用時,只需使用新的包名稱路徑即可。

JavaLoader是一個很好的實用工具,但是如果你沒有將它加載到服務器範圍(初始加載程序包含到iText jar的路徑)並確保它只加載一次,則可能會遇到嚴重的內存泄漏問題。

使用最新的iText重構意味着你不必擔心它。

+0

太棒了!謝謝,這真的會有所幫助。 – 2009-12-17 21:15:33