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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top