Problem transforming DITA to PDF (incompatable types)
Posted: Fri Dec 05, 2014 10:33 pm
I have an XSLT that is working fine outside of oXygen author (v 15.2). I suspect my problem has to do with my jar files conflicting with oXygen's jar files. Here's the error I am getting:
The code I use for transformation is:
I'm including fop 1.1 jar in my plugin. Here's a list of my included jar files:
Code: Select all
java.lang.ClassCastException: net.sourceforge.jeuclid.fop.JEuclidXMLHandler incompatible with org.apache.fop.render.XMLHandler
at org.apache.fop.render.XMLHandlerRegistry.discoverXMLHandlers(XMLHandlerRegistry.java:153)
at org.apache.fop.render.XMLHandlerRegistry.<init>(XMLHandlerRegistry.java:49)
at org.apache.fop.apps.FopFactory.<init>(FopFactory.java:180)
at org.apache.fop.apps.FopFactory.newInstance(FopFactory.java:190)
at com.ibm.tools.fs.io.XmlFile.transformToPDF(XmlFile.java:719)
at com.ibm.itso.gasm.gpt.oXygen.plugin.transforms.TransformDeliverableThread.run(TransformDeliverableThread.java:231)
Code: Select all
// Determine if there are options set for rendering pdf
System.setProperty("javax.xml.transform.TransformerFactory", "net.sf.saxon.TransformerFactoryImpl");
FopFactory fopFactory = FopFactory.newInstance();
if ( options != null ) {
// Determine if file or url
if ( !isOptsAURL ) fopFactory.setUserConfig((File)options);
else {
// Set in factory
URL optUrl = (URL) options;
fopFactory.setUserConfig(optUrl.getProtocol() + "://" + optUrl.getHost() + optUrl.getPath());
}
}
// Create driver and set output file
Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, fopFactory.newFOUserAgent(), new java.io.FileOutputStream(destination));
// transform file
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transform = tFactory.newTemplates(new StreamSource(xslt)).newTransformer();
for ( NameValuePair pair : params ) {
transform.setParameter(pair.getName(), pair.getValue());
}
transform.setParameter("versionParam", "2.0");
transform.setOutputProperty(OutputKeys.ENCODING, encoding);
transform.transform(new StreamSource(this),new SAXResult(fop.getDefaultHandler()));
System.clearProperty("javax.xml.transform.TransformerFactory");
fopFactory = null;
fop = null;
tFactory = null;
transform = null;
Code: Select all
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plugin SYSTEM "../plugin.dtd">
<plugin name="GASM Plug-in for oXygen" description="GASM Plug-in for oXygen" version="1.0.0" vendor="GASM" class="com.ibm.itso.gasm.gpt.oXygen.plugin.GasmPlugin" classLoaderType="preferReferencedResources" id="GASM Plug-in for oXygen">
<runtime>
<library name="lib/gasmplugin.jar"/>
<library name="lib/fop.jar"/>
<library name="lib/ibmpkcs.jar"/>
<library name="lib/jaxen-core.jar"/>
<library name="lib/jaxen-jdom.jar"/>
<library name="lib/jdom.jar"/>
<library name="lib/saxpath.jar"/>
<library name="lib/serializer-2.7.0.jar"/>
<library name="lib/tools.jar"/>
<library name="lib/xalan-2.7.0.jar"/>
<library name="lib/xercesImpl-2.7.1.jar"/>
<library name="lib/gson-2.2.2-javadoc.jar"/>
<library name="lib/gson-2.2.2-sources.jar"/>
<library name="lib/gson-2.2.2.jar"/>
</runtime>
<extension type="WorkspaceAccess" class="com.ibm.itso.gasm.gpt.oXygen.plugin.GasmWSPluginExtention" />
</plugin>