[oXygen-user] problem embedding SVG in PDF using FOP with oxygen

Sorin Ristache
Fri Jun 8 09:28:45 CDT 2007


Hello,

It is a problem of the Apache Batik's DOM implementation. Batik is a
library used by Apache FOP for SVG graphics. The ClassCastException
occurs in the method
org.apache.batik.dom.svg.SVGOMDocument.getRootElement(). I will report
the problem to the Apache FOP developers.

The strange thing is that the transformation works with Saxon 8 and with
the Xalan implementation that comes with oXygen but it does not work
with Saxon 6.5 or with the Xalan implementation that comes with the Java
virtual machine. In the current version oXygen uses Saxon 6.5. I think
we will have to use Saxon 8 for applying FOP as the built-in FO
processor in oXygen.

As a workaround you should define an external FO processor in oXygen
based also on the libraries of the built-in FOP processor but using
Saxon 8 instead of Saxon 6.5 and use this processor instead of the
built-in FO processor in the transformation scenario applied to
embedding.fo. To create an external FO processor go to Options ->
Preferences -> XML -> XSLT/FO/XQuery -> FO Processors and add a new
processor to the table with the following command line:

java -cp
"/Applications/oxygen82/lib/fop.jar:/Applications/oxygen82/lib/avalon-framework-4.2.0.jar:/Applications/oxygen82/lib/batik-all-1.6.jar:/Applications/oxygen82/lib/commons-io-1.1.jar:/Applications/oxygen82/lib/xmlgraphics-commons-1.1.jar:/Applications/oxygen82/lib/commons-logging-1.0.4.jar:/Applications/oxygen82/lib/saxon8.jar:/Applications/oxygen82/lib/saxon8-dom.jar"
org.apache.fop.cli.Main -fo ${fo} -${method} ${out}

(no end-of-line characters in the command line)

After defining the external FO processor you have to select it in the
transformation scenario edit dialog, the FO Processor tab, the Processor
combo box before applying the scenario.


Regards,
Sorin


Wittern Christian wrote:
> Hi there,
> 
> Here is a problem I am trying to solve:
> 
> I want to print a file that contains inline SVG.  There is a sample on
> the FOP website at http://xmlgraphics.apache.org/fop/dev/svg.html -
> embedding.fo together with embedding.pdf which shows the result of the
> transform.  Now, when I try to transform this file with Oxygen 8.2, I
> get the following error:
> (This is on a intel Mac running Mac OS X 10.4.9)
> Any help appreciated,  Christian
> 
> Started:
> "/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/bin/java"
> -Djavax.xml.parsers.DocumentBuilderFactory=org.apache.xerces.jaxp.DocumentBuilderFactoryImpl
> -Djavax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl
> -Dorg.xml.sax.driver=org.apache.xerces.parsers.SAXParser -cp
> "/Applications/oxygen82/lib/xml-apis.jar::/Applications/oxygen82/lib/xercesImpl.jar::/Applications/oxygen82/lib/fop.jar::/Applications/oxygen82/lib/avalon-framework-4.2.0.jar::/Applications/oxygen82/lib/batik-all-1.6.jar::/Applications/oxygen82/lib/commons-io-1.1.jar::/Applications/oxygen82/lib/xmlgraphics-commons-1.1.jar::/Applications/oxygen82/lib/commons-logging-1.0.4.jar::/Applications/oxygen82/lib/saxon.jar:"
> org.apache.fop.cli.Main -c "/Users/chris/res/config/fop/userconfig.xml"
> -fo /private/tmp/embedding.fo_fo -pdf /private/tmp/embedding.pdf
> Jun 8, 2007 5:25:55 PM org.apache.fop.fo.FONode attributeWarning
> WARNING: Warning(1254/16): fo:table, table-layout="auto" is currently
> not supported by FOP
> Jun 8, 2007 5:25:55 PM org.apache.fop.fo.FONode attributeWarning
> WARNING: Warning(1384/55): fo:table, table-layout="auto" is currently
> not supported by FOP
> Jun 8, 2007 5:25:55 PM org.apache.fop.cli.Main startFOP
> SEVERE: Exception
> javax.xml.transform.TransformerException: java.lang.ClassCastException:
> org.apache.batik.dom.GenericElement
> 	at org.apache.fop.cli.InputHandler.transformTo(InputHandler.java:168)
> 	at org.apache.fop.cli.InputHandler.renderTo(InputHandler.java:115)
> 	at org.apache.fop.cli.Main.startFOP(Main.java:160)
> 	at org.apache.fop.cli.Main.main(Main.java:191)
> 
> ---------
> 
> javax.xml.transform.TransformerException: java.lang.ClassCastException:
> org.apache.batik.dom.GenericElement
> 	at com.icl.saxon.IdentityTransformer.transform(IdentityTransformer.java:61)
> 	at org.apache.fop.cli.InputHandler.transformTo(InputHandler.java:165)
> 	at org.apache.fop.cli.InputHandler.renderTo(InputHandler.java:115)
> 	at org.apache.fop.cli.Main.startFOP(Main.java:160)
> 	at org.apache.fop.cli.Main.main(Main.java:191)
> Caused by: java.lang.ClassCastException: org.apache.batik.dom.GenericElement
> 	at org.apache.batik.dom.svg.SVGOMDocument.getRootElement(Unknown Source)
> 	at
> org.apache.fop.fo.extensions.svg.SVGElement.getDimension(SVGElement.java:107)
> 	at
> org.apache.fop.fo.flow.InstreamForeignObject.prepareIntrinsicSize(InstreamForeignObject.java:103)
> 	at
> org.apache.fop.fo.flow.InstreamForeignObject.getIntrinsicWidth(InstreamForeignObject.java:115)
> 	at
> org.apache.fop.layoutmgr.inline.AbstractGraphicsLayoutManager.getInlineArea(AbstractGraphicsLayoutManager.java:129)
> 	at
> org.apache.fop.layoutmgr.inline.AbstractGraphicsLayoutManager.getNextKnuthElements(AbstractGraphicsLayoutManager.java:238)
> 	at
> org.apache.fop.layoutmgr.inline.LineLayoutManager.collectInlineKnuthElements(LineLayoutManager.java:658)
> 	at
> org.apache.fop.layoutmgr.inline.LineLayoutManager.getNextKnuthElements(LineLayoutManager.java:593)
> 	at
> org.apache.fop.layoutmgr.BlockStackingLayoutManager.getNextKnuthElements(BlockStackingLayoutManager.java:284)
> 	at
> org.apache.fop.layoutmgr.BlockLayoutManager.getNextKnuthElements(BlockLayoutManager.java:113)
> 	at
> org.apache.fop.layoutmgr.FlowLayoutManager.getNextKnuthElements(FlowLayoutManager.java:106)
> 	at
> org.apache.fop.layoutmgr.PageSequenceLayoutManager$PageBreaker.getNextKnuthElements(PageSequenceLayoutManager.java:272)
> 	at
> org.apache.fop.layoutmgr.AbstractBreaker.getNextBlockList(AbstractBreaker.java:554)
> 	at
> org.apache.fop.layoutmgr.PageSequenceLayoutManager$PageBreaker.getNextBlockList(PageSequenceLayoutManager.java:264)
> 	at
> org.apache.fop.layoutmgr.AbstractBreaker.doLayout(AbstractBreaker.java:301)
> 	at
> org.apache.fop.layoutmgr.AbstractBreaker.doLayout(AbstractBreaker.java:263)
> 	at
> org.apache.fop.layoutmgr.PageSequenceLayoutManager.activateLayout(PageSequenceLayoutManager.java:157)
> 	at
> org.apache.fop.area.AreaTreeHandler.endPageSequence(AreaTreeHandler.java:385)
> 	at
> org.apache.fop.fo.pagination.PageSequence.endOfNode(PageSequence.java:148)
> 	at
> org.apache.fop.fo.FOTreeBuilder$MainFOHandler.endElement(FOTreeBuilder.java:378)
> 	at org.apache.fop.fo.FOTreeBuilder.endElement(FOTreeBuilder.java:194)
> 	at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
> 	at
> org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown
> Source)
> 	at
> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown
> Source)
> 	at
> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown
> Source)
> 	at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
> 	at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
> 	at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
> 	at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
> 	at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
> 	at com.icl.saxon.IdentityTransformer.transform(IdentityTransformer.java:59)
> 	... 4 more
> ---------
> java.lang.ClassCastException: org.apache.batik.dom.GenericElement
> 	at org.apache.batik.dom.svg.SVGOMDocument.getRootElement(Unknown Source)
> 	at
> org.apache.fop.fo.extensions.svg.SVGElement.getDimension(SVGElement.java:107)
> 	at
> org.apache.fop.fo.flow.InstreamForeignObject.prepareIntrinsicSize(InstreamForeignObject.java:103)
> 	at
> org.apache.fop.fo.flow.InstreamForeignObject.getIntrinsicWidth(InstreamForeignObject.java:115)
> 	at
> org.apache.fop.layoutmgr.inline.AbstractGraphicsLayoutManager.getInlineArea(AbstractGraphicsLayoutManager.java:129)
> 	at
> org.apache.fop.layoutmgr.inline.AbstractGraphicsLayoutManager.getNextKnuthElements(AbstractGraphicsLayoutManager.java:238)
> 	at
> org.apache.fop.layoutmgr.inline.LineLayoutManager.collectInlineKnuthElements(LineLayoutManager.java:658)
> 	at
> org.apache.fop.layoutmgr.inline.LineLayoutManager.getNextKnuthElements(LineLayoutManager.java:593)
> 	at
> org.apache.fop.layoutmgr.BlockStackingLayoutManager.getNextKnuthElements(BlockStackingLayoutManager.java:284)
> 	at
> org.apache.fop.layoutmgr.BlockLayoutManager.getNextKnuthElements(BlockLayoutManager.java:113)
> 	at
> org.apache.fop.layoutmgr.FlowLayoutManager.getNextKnuthElements(FlowLayoutManager.java:106)
> 	at
> org.apache.fop.layoutmgr.PageSequenceLayoutManager$PageBreaker.getNextKnuthElements(PageSequenceLayoutManager.java:272)
> 	at
> org.apache.fop.layoutmgr.AbstractBreaker.getNextBlockList(AbstractBreaker.java:554)
> 	at
> org.apache.fop.layoutmgr.PageSequenceLayoutManager$PageBreaker.getNextBlockList(PageSequenceLayoutManager.java:264)
> 	at
> org.apache.fop.layoutmgr.AbstractBreaker.doLayout(AbstractBreaker.java:301)
> 	at
> org.apache.fop.layoutmgr.AbstractBreaker.doLayout(AbstractBreaker.java:263)
> 	at
> org.apache.fop.layoutmgr.PageSequenceLayoutManager.activateLayout(PageSequenceLayoutManager.java:157)
> 	at
> org.apache.fop.area.AreaTreeHandler.endPageSequence(AreaTreeHandler.java:385)
> 	at
> org.apache.fop.fo.pagination.PageSequence.endOfNode(PageSequence.java:148)
> 	at
> org.apache.fop.fo.FOTreeBuilder$MainFOHandler.endElement(FOTreeBuilder.java:378)
> 	at org.apache.fop.fo.FOTreeBuilder.endElement(FOTreeBuilder.java:194)
> 	at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
> 	at
> org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown
> Source)
> 	at
> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown
> Source)
> 	at
> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown
> Source)
> 	at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
> 	at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
> 	at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
> 	at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
> 	at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
> 	at com.icl.saxon.IdentityTransformer.transform(IdentityTransformer.java:59)
> 	at org.apache.fop.cli.InputHandler.transformTo(InputHandler.java:165)
> 	at org.apache.fop.cli.InputHandler.renderTo(InputHandler.java:115)
> 	at org.apache.fop.cli.Main.startFOP(Main.java:160)
> 	at org.apache.fop.cli.Main.main(Main.java:191)
> Process ended with exit code: 1
> 
> 



More information about the oXygen-user mailing list