I am trying to convert the code below to Coldfusion. I am currently stuck on how to convert the "Transformer transformer = TransformerFactory.newInstance().newTransformer()" line to Coldfusion. Can anyone help convert this code?
The error message I get when using transformer = loader.create("javax.xml.transform.TransformerFactory").newInstance().newTransformer();
Error casting an object of type org.apache.xalan.processor.TransformerFactoryImpl cannot be cast to javax.xml.transform.TransformerFactory to an incompatible type. This usually indicates a programming error in Java, although it could also mean you have tried to use a foreign object in a different way than it was designed. org.apache.xalan.processor.TransformerFactoryImpl cannot be cast to javax.xml.transform.TransformerFactory
Document svgXmlDoc = ... File svgFile = File.createTempFile("graphic-", ".svg"); Transformer transformer = TransformerFactory.newInstance().newTransformer(); DOMSource source2 = new DOMSource(svgXmlDoc); FileOutputStream fOut = new FileOutputStream(svgFile); try { transformer.transform(source2, new StreamResult(fOut)); } finally { fOut.close(); } // Convert the SVG into PDF File outputFile = File.createTempFile("result-", ".pdf"); SVGConverter converter = new SVGConverter(); converter.setDestinationType(DestinationType.PDF); converter.setSources(new String[] { svgFile.toString() }); converter.setDst(outputFile); converter.execute(); Here is my code so far.
<cfscript> paths = arrayNew(1); paths[1] = expandPath("jar\avalon-framework-impl-4.2.0.jar"); paths[2] = expandPath("jar\batik-all-1.7.jar"); paths[3] = expandPath("jar\commons-io-1.3.1.jar"); paths[4] = expandPath("jar\commons-logging-1.0.4.jar"); paths[5] = expandPath("jar\fop-0.9.5.jar"); paths[6] = expandPath("jar\apache-log4j-1.2.15.jar"); paths[7] = expandPath("jar\xml-apis-ext.jar"); paths[8] = expandPath("jar\xmlgraphics-commons-1.3.1.jar"); paths[8] = expandPath("jar\javax.xml-1.3.4.jar"); loader = createObject("component", "javaloader.JavaLoader").init(paths); destinationtype = loader.create("org.apache.batik.apps.rasterizer.DestinationType"); svgconverter = loader.create("org.apache.batik.apps.rasterizer.SVGConverter"); // SVG available as a DOM object (created programatically by my program) svgXmlDoc = '<svg><text y="3.58in" x="1.5000in" id="fooddesc1" text-anchor="start" alignment-baseline="baseline">This is a test.</text></svg>'; // Save this SVG into a file (required by SVG -> PDF transformation process) f = loader.create("java.io.File"); svgFile = f.createTempFile("graphic-", ".svg"); transformer = loader.create("javax.xml.transform.TransformerFactory"); source2 = loader.create("javax.xml.transform.dom.DOMSource").init(svgXmlDoc); fOut = loader.create("java.io.FileOutputStream").init(svgFile); </cfscript>
transformer = loader.create("javax.xml.transform.TransformerFactory").newInstance().newTransformer();. Obviously you can split it into multiple calls if preferred.