使用不同版本的iText和ColdFusion

时间:2009-06-30 20:06:30

标签: coldfusion itext

我们正在使用ColdFusion MX7。

CFDOCUMENT标签使用iText进行PDF创建,因此整个iText库都包含在标准CF部署中。

我遇到的问题是我想使用比CF7中包含的版本更新的iText版本。我需要保持CFDOCUMENT功能,所以只需更改jar文件就不是一种选择。

到目前为止,我所做的是将iText源加载到Eclipse中并将其重构为其他名称。这很好,并且已经这样做了大约一年。

但是,我想升级到最新的iText版本,再次跳过重构的过程有点令人生畏。

是否有更简单的加载罐子的方法,而不是让它们与旧版本冲突?

3 个答案:

答案 0 :(得分: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会更容易。

答案 1 :(得分:2)

Itext刚刚发布了v5.0.0,其中一个重大变化是包名已从“com.lowagie”更改为“com.itextpdf”,允许您共存。

只需下载新的iText.jar文件并重命名为“iTextpdf.jar”并将其找到CFMX的正确LIB文件夹中。

执行createObject调用时,只需使用新的包名称路径。

JavaLoader是一个很棒的实用程序,但如果你不将它加载到服务器作用域(带有iText jar路径的初始加载器)并确保它只加载ONCE,你可能会遇到严重的内存泄漏问题。

使用iText的最新重构意味着您无需担心它。

答案 2 :(得分:0)

如果你想要的是cfdocument的cf8功能,那么可能有一种更简单的方法。请记住,railoopenbd都具有与cf8相同的cfdocument功能,并且两者都是免费引擎。你可以做的是下载并安装其中一个引擎到同一台服务器或不同的服务器上。然后在railo或openbd中编写一个包含cfdocument功能的web服务并将pdf返回给你。

这不是最漂亮的解决方案,但也不是重构itext或者破解cf附带的itext版本。