我们正在使用 ColdFusion MX7。

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

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

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

然而,我想升级到最新的 iText 版本,并且再次经历重构的困境有点令人畏惧。

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

有帮助吗?

解决方案

一种选择是使用JavaLoader.cfc加载罐的较新版本。由于它使用一个外部的类加载器可以在不干扰现有的版本中使用。

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

http://javaloader.riaforge.org/

但是,它仍然需要重写你的CreateObject( “Java” 的, “path.to.class”)语句中使用javaLoader.create( “path.to.class”)来代替。但是从长远来看,这可能是比重构更好,因为它会更容易在将来更新和iText JAR。

其他提示

iText的刚刚发布V5.0.0和它的显著的变化之一是,包名称已经从“com.lowagie”改为“com.itextpdf”让您共存。

只需下载新iText.jar文件的文件并重新命名为“iTextpdf.jar”,并在CFMX正确的lib文件夹中找到它。

当你做你的CreateObject调用,只需使用新的包名路径。

JavaLoader是一个很大的实用工具,但是如果不将其加载到服务器范围(与路径到iText的罐中的初始加载程序),并确保它仅加载一次,可以运行到严重内存泄漏问题。

利用iText的最新重构意味着你不必担心。

如果您想要的是 cfdocument 的 cf8 功能,那么可能有一种更简单的方法。请记住 铁路打开bd 两者都具有与 cf8 同等的 cfdocument 功能,并且都是免​​费引擎。您可以做的是将这些引擎之一下载并安装到同一服务器或不同的服务器上(如果需要)。然后在railo或openbd中编写一个Web服务来包装cfdocument功能并将pdf返回给您。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top