Question

Nous utilisons MX7 ColdFusion.

La balise cfdocument iText utilise pour la création PDF pour l'ensemble de la bibliothèque iText est inclus dans le déploiement standard des FC.

Le problème que je vais avoir est que je veux utiliser une version de iText qui est plus récente que celle incluse dans CF7. Je dois continuer à fonctionner cfdocument, donc changeant simplement le fichier jar est pas une option.

Ce que je l'ai fait jusqu'à présent est de charger la source iText dans Eclipse et factoriser à un autre nom. Cela fonctionne très bien et a fait depuis environ un an.

Cependant, je voudrais mis à niveau vers la dernière version iText, et sauter à travers les cerceaux de refactorisation est à nouveau un peu intimidant.

Y at-il un moyen plus facile de charger les pots et ne pas avoir les en conflit avec l'ancienne version?

Était-ce utile?

La solution

Une option consiste à utiliser le JavaLoader.cfc pour charger une version plus récente du pot. Comme il utilise un classloader externe, il peut être utilisé sans déranger la version existante.

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

http://javaloader.riaforge.org/

Toutefois, il faudrait encore réécrire votre createObject ( "java", "path.to.class") des déclarations à utiliser javaLoader.create ( "path.to.class") à la place. Mais à long terme, qui pourrait être mieux que la refactorisation, car il serait plus facile de mettre à jour le pot iText à l'avenir.

Autres conseils

iText vient de sortir v5.0.0 et l'un des changements importants à ce phénomène est que le nom de package a été changé de « com.lowagie » à « com.itextpdf » vous permettant de coexister.

Il suffit de télécharger le nouveau fichier iText.jar et renommer « iTextpdf.jar » et le localiser dans le dossier approprié LIB pour CFMX.

Quand vous faites vos appels CreateObject, utilisez simplement le nouveau chemin de nom du package.

JavaLoader est une grande utilité, mais si vous ne chargez pas dans la portée du serveur (le chargeur initial avec des chemins vers le pot iText) et assurez-vous qu'il est chargé une seule fois, vous pouvez rencontrer des problèmes graves de fuite de mémoire.

En utilisant la dernière refactoring de iText signifie que vous ne devez pas vous inquiéter à ce sujet.

si ce que vous voulez est la fonctionnalité cf8 de cfdocument, alors il pourrait y avoir un moyen plus facile. rappelez-vous que Railo et OpenBD les deux ont des fonctionnalités cfdocument qui est à égalité avec cf8 et les deux sont des moteurs libres. ce que vous pouvez faire est de télécharger et d'installer un de ces moteurs sur le même serveur ou un autre si on le désire. puis écrire un webservice dans les Railo ou OpenBD qui enveloppe la fonctionnalité cfdocument et retourne le pdf à vous.

ce n'est pas la plus jolie solution, mais ni est refactoring itext ou de piratage de la version itext qui est venu avec cf.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top