문제

우리는 ColdFusion MX7을 사용하고 있습니다.

CFDocument 태그는 PDF 생성에 ITEXT를 사용하므로 ITEXT 라이브러리 전체가 표준 CF 배포에 포함됩니다.

내가 가진 문제는 CF7에 포함 된 것보다 새로운 ITEXT 버전을 사용하고 싶다는 것입니다. CFDocument 기능을 유지해야하므로 단순히 JAR 파일을 변경하는 것이 옵션이 아닙니다.

지금까지 한 일은 itext 소스를 Eclipse에로드하고 다른 이름으로 리팩터링하는 것입니다. 그것은 잘 작동하고 약 1 년 동안 그렇게 해왔습니다.

그러나 최신 ITEXT 릴리스로 업그레이드하고 싶습니다. 다시 리팩토링의 후프를 뛰어 넘는 것은 약간 어려운 일입니다.

항아리를로드하고 이전 버전과 충돌하지 않는 쉬운 방법이 있습니까?

도움이 되었습니까?

해결책

한 가지 옵션은 Javaloader.cfc를 사용하여 최신 버전의 JAR을로드하는 것입니다. 외부 클래스 로더를 사용하므로 기존 버전을 방해하지 않고 사용할 수 있습니다.

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

http://javaloader.riforge.org/

그러나 여전히 javaloader.create ( "path.to.class")를 사용하려면 CreateObject ( "java", "path.to.class") 문을 다시 작성해야합니다. 그러나 장기적으로는 리팩토링보다 낫습니다. 향후 ITEXT JAR을 업데이트하는 것이 더 쉬울 수 있기 때문입니다.

다른 팁

ITEXT는 방금 v5.0.0을 출시했으며 그 중대한 변경 사항 중 하나는 패키지 이름이 "com.lowagie"에서 "com.itextpdf"로 변경되어 공존 할 수 있다는 것입니다.

새 itext.jar 파일을 다운로드하고 "itextpdf.jar"로 이름을 바꾸고 CFMX의 적절한 lib 폴더에서 찾으십시오.

CreateObject 호출을 할 때는 새 패키지 이름 경로를 사용하기 만하면됩니다.

Javaloader는 훌륭한 유틸리티이지만 서버 스코프 (ITEXT JAR로가는 경로가있는 초기 로더)에로드하지 않으면 한 번만로드되도록하는 경우 중증 메모리 누출 문제가 발생할 수 있습니다.

ITEXT의 최신 리팩토링을 사용하면 걱정할 필요가 없습니다.

원하는 것이 CFDocument의 CF8 기능이라면 더 쉬운 방법이있을 수 있습니다. 기억 Railo 그리고 OpenBD 둘 다 CF8과 동등한 CFDocument 기능을 가지고 있으며 둘 다 자유 엔진입니다. 당신이 할 수있는 일은이 엔진 중 하나를 동일한 서버 또는 원하는 경우 다른 엔진에 다운로드하여 설치하는 것입니다. 그런 다음 CFDocument 기능을 감싸는 Railo 또는 OpenBD 내에 웹 서비스를 작성하고 PDF를 귀하에게 반환합니다.

가장 예쁜 솔루션은 아니지만 ITEXT를 리팩토링하거나 CF와 함께 제공되는 ITEXT 버전을 해킹하는 것도 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top