2

我们正在使用 ColdFusion MX7。

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

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

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

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

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

4

3 回答 3

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 会更容易。

于 2009-06-30T22:35:07.803 回答
2

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

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

当您进行 createObject 调用时,只需使用新的包名称路径即可。

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

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

于 2009-12-17T18:36:43.983 回答
0

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

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

于 2009-07-01T15:28:22.257 回答