Hello!
I have some problems embedding FOP 0.92b with an overridden Print-Renderer,
similar to the ExampleFO2OldStylePrint.java example.
Her is my simplified sourcecode:
class printFO
{
public static void main(String[] args)
{
try {
PrinterJob printerJob = PrinterJob.getPrinterJob();
PrintRenderer p_renderer = new PrintRenderer(printerJob);
FopFactory fopFactory = FopFactory.newInstance();
FOUserAgent foUserAgent= fopFactory.newFOUserAgent();
foUserAgent.setRendererOverride(p_renderer);
Fop fop= fopFactory.newFop(MimeConstants.MIME_FOP_PRINT,
foUserAgent,
null);
File sourcefile=new File(args[0]);
String baseURL = null;
baseURL = new File(sourcefile.getAbsolutePath()).
getParentFile().toURL().toExternalForm();
foUserAgent.setBaseURL(baseURL);
Result res = new SAXResult(fop.getDefaultHandler());
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer;
transformer = factory.newTransformer();
// Create a SAXSource from the input Source file
Source src = new StreamSource(sourcefile);
// Start XSLT transformation and FOP processing
transformer.transform(src, res);
} catch (Exception e) {
e.printStackTrace();
}
}
}
This program works fine until I do not refer external images. When I do so,
Java comes to a NullPointerException. Here my example FO-File:
<?xml version="1.0" encoding="UTF-8"?>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:svg="http://www.w3.org/2000/svg">
<fo:layout-master-set>
<fo:simple-page-master margin-bottom="0.5cm" margin-left="1.5cm"
margin-right="0.5cm" margin-top="1.1cm" master-name="A4"
page-height="29.7cm" page-width="21cm">
<fo:region-body column-count="1" column-gap="0.5cm" region-name="Layout"/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="A4">
<fo:flow flow-name="Layout">
<fo:block>
Test!
</fo:block>
<fo:block>
<fo:external-graphic
src="file:///home/iwedekind/Programmierung/Java/barcode.svg"/>
</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
Processing this file the following Stack trace is printed:
java.lang.NullPointerException
at
org.apache.fop.render.java2d.Java2DRenderer.putImage(Java2DRenderer.java:1033)
at
org.apache.fop.render.java2d.Java2DRenderer.renderImage(Java2DRenderer.java:1018)
at
org.apache.fop.render.AbstractRenderer.renderViewport(AbstractRenderer.java:739)
at
org.apache.fop.render.java2d.Java2DRenderer.renderViewport(Java2DRenderer.java:407)
at
org.apache.fop.render.AbstractRenderer.renderInlineArea(AbstractRenderer.java:634)
at
org.apache.fop.render.AbstractRenderer.renderLineArea(AbstractRenderer.java:609)
at
org.apache.fop.render.AbstractRenderer.renderBlocks(AbstractRenderer.java:535)
at
org.apache.fop.render.AbstractRenderer.renderBlock(AbstractRenderer.java:585)
at
org.apache.fop.render.AbstractRenderer.renderBlocks(AbstractRenderer.java:525)
at
org.apache.fop.render.AbstractRenderer.renderFlow(AbstractRenderer.java:430)
at
org.apache.fop.render.AbstractRenderer.renderMainReference(AbstractRenderer.java:409)
at
org.apache.fop.render.AbstractRenderer.renderBodyRegion(AbstractRenderer.java:343)
at
org.apache.fop.render.AbstractRenderer.renderRegionViewport(AbstractRenderer.java:288)
at
org.apache.fop.render.AbstractRenderer.renderPageAreas(AbstractRenderer.java:261)
at
org.apache.fop.render.java2d.Java2DRenderer.print(Java2DRenderer.java:1168)
at sun.print.RasterPrinterJob.printPage(RasterPrinterJob.java:1785)
at sun.print.RasterPrinterJob.print(RasterPrinterJob.java:1334)
at sun.print.RasterPrinterJob.print(RasterPrinterJob.java:1196)
at
org.apache.fop.render.print.PrintRenderer.stopRenderer(PrintRenderer.java:142)
at
org.apache.fop.area.RenderPagesModel.endDocument(RenderPagesModel.java:240)
at
org.apache.fop.area.AreaTreeHandler.endDocument(AreaTreeHandler.java:357)
at
org.apache.fop.fo.FOTreeBuilder.endDocument(FOTreeBuilder.java:170)
at
org.apache.xalan.transformer.TransformerIdentityImpl.endDocument(TransformerIdentityImpl.java:962)
at org.apache.xerces.parsers.AbstractSAXParser.endDocument(Unknown
Source)
at org.apache.xerces.impl.XMLDocumentScannerImpl.endEntity(Unknown
Source)
at org.apache.xerces.impl.XMLEntityManager.endEntity(Unknown Source)
at org.apache.xerces.impl.XMLEntityScanner.load(Unknown Source)
at org.apache.xerces.impl.XMLEntityScanner.skipSpaces(Unknown
Source)
at
org.apache.xerces.impl.XMLDocumentScannerImpl$TrailingMiscDispatcher.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.xalan.transformer.TransformerIdentityImpl.transform(TransformerIdentityImpl.java:484)
at printFO.main(printFO.java:68)
When I commended out the line overriding the Renderer, then everythings is
ok (but I cannot control the PrinterJob, and so it is no solution).
Any suggestions to this problem?
CU Immo!
PS.: My main point is to direct the printer output to a special printer and
a special tray, so I need this PrinterJob instance. If you have an
alternative way to do so: please drop me a note!
--
View this message in context:
http://www.nabble.com/NullPointerException-while-printing-tf2225561.html#a6167228
Sent from the FOP - Users forum at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]