After a long and overdue overhaul of the popular CF_Gantt custom tag, I am pleased to announce the Alpha version of JSGantt. I've enlisted another super coder and BTPOG we got through rewriting that awful piece of code.

JSGantt is now available for PHP, ASP/.NET, Java and almost anyone else for free.


  • This component is 100% Javascript and CSS
  • No images were used or harmed in the making of this tag
  • Completely buzzword compliant including AJAX !
  • This component is free
  • Beta expected Sept 1
  • Bugs/Suggestions are welcome

JSGantt javascript component can be downloaded here.

CF_Gantt 3.0 ColdFusion wrapper can be downloaded here


My Hand-on session from the webmaniacs conference is now online in the presentations section. Considering the limited amount of time I had to write it, the session was very well received. Robi Sen was a big help, especially since we have never tested this material before in a live classroom.

I'll be presenting again at the upcoming CFUNITED conference on "10 ways to ruin your Project" and "SQL and Database 101"

 CFPDF/processDDX problems with sandbox security

    Posted At : April 5, 2008 5:53 AM

Earlier this week I was working on an app that required some basic PDF manipulation with CFPDF and processDDX. The code worked fine on my server, but threw the following error when deployed to the hosting environment.

500
ROOT CAUSE:
java.lang.NoClassDefFoundError: Could not initialize class com.adobe.internal.ddxm.io.Document
   at coldfusion.pdf.PDFDocOperation.getDDXMap(PDFDocOperation.java:956)
   at coldfusion.pdf.PDFDocOperation.processDDX(PDFDocOperation.java:1099)
   at coldfusion.tagext.lang.PDFTag.doEndTag(PDFTag.java:976)
   at coldfusion.runtime.CfJspPage._emptyTcfTag(CfJspPage.java:2662)
   at cftest22ecfm1476995377.runPage(D:\Websites\test\new3\test2.cfm:33)
   at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:196)
   at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:370)
   at coldfusion.filter.CfincludeFilter.invoke(CfincludeFilter.java:65)
   at coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:279)
   at coldfusion.filter.RequestMonitorFilter.invoke(RequestMonitorFilter.java:48)
   at coldfusion.filter.MonitoringFilter.invoke(MonitoringFilter.java:40)
   at coldfusion.filter.PathFilter.invoke(PathFilter.java:86)
   at coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:70)
   at coldfusion.filter.BrowserDebugFilter.invoke(BrowserDebugFilter.java:74)
   at coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:28)
   at coldfusion.filter.BrowserFilter.invoke(BrowserFilter.java:38)
   at coldfusion.filter.NoCacheFilter.invoke(NoCacheFilter.java:46)
   at coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38)
   at coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22)
   at coldfusion.CfmServlet.service(CfmServlet.java:175)
   at coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89)
   at jrun.servlet.FilterChain.doFilter(FilterChain.java:86)
   at coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:42)
   at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46)
   at jrun.servlet.FilterChain.doFilter(FilterChain.java:94)
   at com.seefusion.SeeFusion.doFilter(SeeFusion.java)
   at jrun.servlet.FilterChain.doFilter(FilterChain.java:94)
   at jrun.servlet.FilterChain.service(FilterChain.java:101)
   at jrun.servlet.ServletInvoker.invoke(ServletInvoker.java:106)
   at jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain.java:42)
   at jrun.servlet.JRunRequestDispatcher.invoke(JRunRequestDispatcher.java:286)
   at jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:543)
   at jrun.servlet.jrpp.JRunProxyService.invokeRunnable(JRunProxyService.java:203)
   at jrunx.scheduler.ThreadPool$DownstreamMetrics.invokeRunnable(ThreadPool.java:320)
   at jrunx.scheduler.ThreadPool$ThreadThrottle.invokeRunnable(ThreadPool.java:428)
   at jrunx.scheduler.ThreadPool$UpstreamMetrics.invokeRunnable(ThreadPool.java:266)
   at jrunx.scheduler.WorkerThread.run(WorkerThread.java:66)



javax.servlet.ServletException: ROOT CAUSE:
java.lang.NoClassDefFoundError: Could not initialize class com.adobe.internal.ddxm.io.Document
   at coldfusion.pdf.PDFDocOperation.getDDXMap(PDFDocOperation.java:956)
   at coldfusion.pdf.PDFDocOperation.processDDX(PDFDocOperation.java:1099)
   at coldfusion.tagext.lang.PDFTag.doEndTag(PDFTag.java:976)
   at coldfusion.runtime.CfJspPage._emptyTcfTag(CfJspPage.java:2662)
   at cftest22ecfm1476995377.runPage(D:\Websites\test\new3\test2.cfm:33)
   at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:196)
   at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:370)
   at coldfusion.filter.CfincludeFilter.invoke(CfincludeFilter.java:65)
   at coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:279)
   at coldfusion.filter.RequestMonitorFilter.invoke(RequestMonitorFilter.java:48)
   at coldfusion.filter.MonitoringFilter.invoke(MonitoringFilter.java:40)
   at coldfusion.filter.PathFilter.invoke(PathFilter.java:86)
   at coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:70)
   at coldfusion.filter.BrowserDebugFilter.invoke(BrowserDebugFilter.java:74)
   at coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:28)
   at coldfusion.filter.BrowserFilter.invoke(BrowserFilter.java:38)
   at coldfusion.filter.NoCacheFilter.invoke(NoCacheFilter.java:46)
   at coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38)
   at coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22)
   at coldfusion.CfmServlet.service(CfmServlet.java:175)
   at coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89)
   at jrun.servlet.FilterChain.doFilter(FilterChain.java:86)
   at coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:42)
   at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46)
   at jrun.servlet.FilterChain.doFilter(FilterChain.java:94)
   at com.seefusion.SeeFusion.doFilter(SeeFusion.java)
   at jrun.servlet.FilterChain.doFilter(FilterChain.java:94)
   at jrun.servlet.FilterChain.service(FilterChain.java:101)
   at jrun.servlet.ServletInvoker.invoke(ServletInvoker.java:106)
   at jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain.java:42)
   at jrun.servlet.JRunRequestDispatcher.invoke(JRunRequestDispatcher.java:286)
   at jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:543)
   at jrun.servlet.jrpp.JRunProxyService.invokeRunnable(JRunProxyService.java:203)
   at jrunx.scheduler.ThreadPool$DownstreamMetrics.invokeRunnable(ThreadPool.java:320)
   at jrunx.scheduler.ThreadPool$ThreadThrottle.invokeRunnable(ThreadPool.java:428)
   at jrunx.scheduler.ThreadPool$UpstreamMetrics.invokeRunnable(ThreadPool.java:266)
   at jrunx.scheduler.WorkerThread.run(WorkerThread.java:66)

   at coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:70)
   at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46)
   at jrun.servlet.FilterChain.doFilter(FilterChain.java:94)
   at com.seefusion.SeeFusion.doFilter(SeeFusion.java)
   at jrun.servlet.FilterChain.doFilter(FilterChain.java:94)
   at jrun.servlet.FilterChain.service(FilterChain.java:101)
   at jrun.servlet.ServletInvoker.invoke(ServletInvoker.java:106)
   at jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain.java:42)
   at jrun.servlet.JRunRequestDispatcher.invoke(JRunRequestDispatcher.java:286)
   at jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:543)
   at jrun.servlet.jrpp.JRunProxyService.invokeRunnable(JRunProxyService.java:203)
   at jrunx.scheduler.ThreadPool$DownstreamMetrics.invokeRunnable(ThreadPool.java:320)
   at jrunx.scheduler.ThreadPool$ThreadThrottle.invokeRunnable(ThreadPool.java:428)
   at jrunx.scheduler.ThreadPool$UpstreamMetrics.invokeRunnable(ThreadPool.java:266)
   at jrunx.scheduler.WorkerThread.run(WorkerThread.java:66)

Mathew Ford from Ayera Technologies pointed out that it may be related to sandbox security.

Once sandbox security was turned off, the page worked like a charm. While sandbox security was on, even with no restrictions the templte would throw an error.

Here is the test code:

<!--- Create Test PDF --->
<cfdocument format="pdf" name="pdfSample">
Test document
</cfdocument>
<cfpdf action="write" overwrite="yes" source="pdfSample" destination="#getdirectoryfrompath(getCurrentTemplatePath())#sample_empty.pdf" >

<!--- Create in/out structure for processDDX --->
<cfset in=StructNew()>
<cfset in.SourceFile="sample_empty.pdf">
<cfset out=StructNew()>
<cfset out.DestinationFile="sample_ddx.pdf">

<!--- Create DDX code --->
<cfsavecontent variable="theDDX">
<?xml version="1.0" encoding="UTF-8"?>
<DDX xmlns="http://ns.adobe.com/DDX/1.0/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://ns.adobe.com/DDX/1.0/ coldfusion_ddx.xsd">

   <PDF result="DestinationFile">
<Watermark rotation="0" opacity="100%" horizontalOffset="-215pt" verticalOffset="-360pt" showWhenPrinting="true">
<StyledText>
<p font-size="8pt" color="black" font="Arial">Name:<span font-size="10pt" color="black" font="Freestyle Script">Shlomy Gantz</span></p>
<p font-size="8pt" color="black" font="Arial">Company: BlueBrick</p> <p font-size="8pt" color="black" font="Arial">Date:<cfoutput>#dateformat(now(),"mm/dd/yyyy")# #timeformat(now(),"medium")#</cfoutput></p>
<p font-size="8pt" color="black" font="Arial">Transaction ID: 1ED3477617263721CADS6763</p>
</StyledText>
</Watermark>
<PDF source="SourceFile"/>
</PDF>
</DDX>
</cfsavecontent>

<!--- Process the DDX --->
<cfpdf action="processddx" ddxfile="#theDDX#" inputfiles="#in#" outputfiles="#out#" name="ddxRet">

<!--- Show the results --->
<cfdump var="#ddxRet#" label="DDX return information">
<BR>
<a href="sample_ddx.pdf">sample_ddx.pdf</a>
<BR>

Powered by BlogCFC

HostMySite.com Web Hosting Provided by www.HostMySite.com

Aggregated by fullasagoog.com
[Valid RSS]

Add to Google