Usando versão diferente do iText com o ColdFusion
-
21-08-2019 - |
Pergunta
Estamos usando ColdFusion MX7.
A tag CFDOCUMENT usa iText para a criação de PDF para que toda a biblioteca iText está incluído na implantação padrão CF.
O problema que estou tendo é que eu quero usar uma versão do iText que é mais recente que a inclusa no CF7. Eu preciso manter CFDOCUMENT funcionamento, por isso simplesmente mudando o arquivo jar não é uma opção.
O que tenho feito até agora é para carregar a fonte iText no Eclipse e refatorar-lo para um nome diferente. Esta coima funciona e tem sido assim por cerca de um ano.
No entanto, eu gostaria de um upgrade para a versão mais recente iText, e saltar através dos aros de refatoração de novo é um pouco assustador.
Existe uma maneira mais fácil de carregar os frascos e não tê-los em conflito com a versão antiga?
Solução
Uma opção é usar o JavaLoader.cfc para carregar uma versão mais recente do frasco. Uma vez que utiliza um carregador de classe externo pode ser usado sem perturbar a versão existente.
http://www.transfer-orm.com/?action=javaloader .index
http://javaloader.riaforge.org/
No entanto, ainda exigiria reescrever seu createObject ( "java", "path.to.class") declarações de usar javaLoader.create ( "path.to.class") em vez. Mas, a longo prazo, que pode ser melhor do que a refatoração, porque seria mais fácil para atualizar o jar iText no futuro.
Outras dicas
iText apenas v5.0.0 liberado e uma das mudanças significativas é que o nome do pacote foi alterado de "com.lowagie" para "com.itextpdf" que lhe permite co-existir.
Basta baixar o novo arquivo iText.jar e renomeie para "iTextpdf.jar" e localize-o na pasta LIB adequado para CFMX.
Quando você faz suas chamadas CreateObject, basta usar o novo caminho nome do pacote.
JavaLoader é uma grande utilidade, mas se você não carregá-lo no escopo do servidor (o carregador inicial com caminhos para o frasco iText) e garantir que ele é carregado somente uma vez, você pode ter problemas de vazamento de memória graves.
Usando a mais recente refatoração de iText significa que você não precisa se preocupar com isso.
Se o que você quer é a funcionalidade CF8 de cfdocument, então pode haver uma maneira mais fácil. lembre-se que Railo e openbd ambos têm funcionalidade cfdocument que está a par com CF8 e ambos são motores livres. o que você pode fazer é baixar e instalar um desses motores no mesmo servidor ou um diferente, se desejar. em seguida, escrever um webservice dentro Railo ou openbd que envolve a funcionalidade cfdocument e retorna o pdf para você.
não é a solução mais bonito, mas também não é refatoração itext ou cortar a versão itext que veio com cf.