Использование другой версии iText с ColdFusion
-
21-08-2019 - |
Вопрос
Мы используем ColdFusion MX7.
Тег CFDOCUMENT использует iText для создания PDF-файла, поэтому вся библиотека iText включена в стандартное развертывание CF.
Проблема, с которой я столкнулся, заключается в том, что я хочу использовать версию iText, которая новее, чем та, которая включена в CF7.Мне нужно поддерживать работоспособность CFDOCUMENT, поэтому простое изменение файла jar - это не вариант.
Что я сделал до сих пор, так это загрузил исходный текст iText в Eclipse и реорганизовал его под другим именем.Это работает нормально и работает уже около года.
Тем не менее, я хотел бы обновиться до новейшей версии iText, и снова перепрыгивать через этапы рефакторинга немного сложно.
Есть ли более простой способ загрузить банки так, чтобы они не конфликтовали со старой версией?
Решение
Один из вариантов - использовать JavaLoader.cfc для загрузки более новой версии jar.Поскольку он использует внешний загрузчик классов, его можно использовать, не нарушая существующую версию.
http://www.transfer-orm.com/?action=javaloader.index
http://javaloader.riaforge.org/
Однако, он все же потребует перезаписи функция createobject("Ява", "path.to.class") заявления использовать javaLoader.создать("path.to.class") вместо этого.Но в долгосрочной перспективе это может быть лучше, чем рефакторинг, потому что в будущем будет проще обновить iText jar.
Другие советы
Itext только что выпустил версию 5.0.0, и одним из существенных изменений в ней является то, что имя пакета было изменено с "com.lowagie" на "com.itextpdf", что позволяет вам сосуществовать.
Просто скачайте новые iText.jar файл и переименовать в "iTextpdf.jar" и поместить его в соответствующую папку lib для CFMX.
Когда вы выполняете вызовы CreateObject, просто используйте новый путь к имени пакета.
JavaLoader - отличная утилита, но если вы не загружаете ее в область действия сервера (начальный загрузчик с путями к iText jar) И убедитесь, что она загружена только ОДИН РАЗ, вы можете столкнуться с серьезными проблемами утечки памяти.
Использование последней версии рефакторинга iText означает, что вам не нужно беспокоиться об этом.
если то, что вам нужно, - это функциональность cf8 cfdocument, то, возможно, есть более простой способ.помни об этом рейло и openbd оба имеют функциональность cfdocument, которая соответствует cf8, и оба являются бесплатными движками.что вы могли бы сделать, так это загрузить и установить один из этих движков на тот же сервер или, при желании, на другой.затем напишите веб-сервис в railo или openbd, который оборачивает функциональность cfdocument и возвращает вам PDF-файл.
это не самое красивое решение, но и не рефакторинг itext или взлом версии itext, поставляемой с cf.