在ColdFusion中使用不同版本的iText

在ColdFusion中使用不同版本的iText,coldfusion,itext,Coldfusion,Itext,我们正在使用ColdFusion MX7 CFDOCUMENT标记使用iText创建PDF,因此整个iText库都包含在标准CF部署中 我遇到的问题是,我想使用比CF7中包含的版本更新的iText版本。我需要保持CFDOCUMENT的功能,因此简单地更改jar文件不是一个选项 到目前为止,我所做的是将iText源代码加载到Eclipse中,并将其重构为不同的名称。这样做效果很好,已经做了大约一年了 然而,我想升级到最新的iText版本,再次跳进重构的圈圈有点让人望而生畏 是否有一种更简单的方法来

我们正在使用ColdFusion MX7

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

我遇到的问题是,我想使用比CF7中包含的版本更新的iText版本。我需要保持CFDOCUMENT的功能,因此简单地更改jar文件不是一个选项

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

然而,我想升级到最新的iText版本,再次跳进重构的圈圈有点让人望而生畏


是否有一种更简单的方法来加载jar,并且不让它们与旧版本冲突?

一种选择是使用JavaLoader.cfc加载较新版本的jar。由于它使用外部类加载器,因此可以在不干扰现有版本的情况下使用它


但是,仍然需要重写createObject(“java”、“path.to.class”)语句来使用javaLoader.create(“path.to.class”)。但从长远来看,这可能比重构更好,因为将来更新iText jar更容易

如果您想要的是cfdocument的cf8功能,那么可能有一种更简单的方法。记住这两个都有CF8功能,与CF8相当,都是免费引擎。您可以做的是下载这些引擎中的一个并将其安装到同一台服务器上,或者根据需要安装到另一台服务器上。然后在railo或openbd中编写一个Web服务,包装cfdocument功能并将pdf返回给您


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

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

只需下载新的iText.jar文件并重命名为“iTextpdf.jar”,然后将其定位到CFMX的适当LIB文件夹中

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

JavaLoader是一个很好的实用程序,但是如果您不将它加载到服务器范围(初始加载程序具有到iText-jar的路径)并确保它只加载一次,您可能会遇到严重的内存泄漏问题


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

太棒了!谢谢,这真的很有帮助。