org.apache.fop.render.ps
Class PSRenderer

java.lang.Object
  |
  +--org.apache.fop.render.ps.PSRenderer
All Implemented Interfaces:
Renderer

public class PSRenderer
extends java.lang.Object
implements Renderer

Renderer that renders to PostScript.
This class currently generates PostScript Level 2 code. The only exception is the FlateEncode filter which is a Level 3 feature. The filters in use are hardcoded at the moment.
This class follows the Document Structuring Conventions (DSC) version 3.0 (If I did everything right). If anyone modifies this renderer please make sure to also follow the DSC to make it simpler to programmatically modify the generated Postscript files (ex. extract pages etc.).
TODO: Character size/spacing, SVG Transcoder for Batik, configuration, move to PrintRenderer, maybe improve filters (I'm not very proud of them), add a RunLengthEncode filter (useful for Level 2 Postscript), Improve DocumentProcessColors stuff (probably needs to be configurable, then maybe add a color to grayscale conversion for bitmaps to make output smaller (See PCLRenderer), font embedding, support different character encodings, try to implement image transparency, positioning of images is wrong etc.

Modified by Mark Lillywhite mark-fop@inomial.com, to use the new Renderer interface. This PostScript renderer appears to be the most efficient at producing output.

Author:
Jeremias Märki

Inner Class Summary
protected  class PSRenderer.MUserAgent
           
 
Field Summary
protected  java.util.Hashtable options
           
protected  PSStream out
          the stream used to output the PostScript
protected  java.lang.String producer
          the application producing the PostScript
 
Constructor Summary
PSRenderer()
           
 
Method Summary
protected  void comment(java.lang.String comment)
          write out a comment
 org.apache.batik.gvt.GraphicsNodeRenderContext getRenderContext()
           
protected  void movetoCurrPosition()
           
 void render(Page page, java.io.OutputStream outputStream)
          render the given area tree to the given stream
 void renderAreaContainer(AreaContainer area)
          render an area container to PostScript
 void renderBitmap(FopImage img, int x, int y, int w, int h)
           
 void renderBlockArea(BlockArea area)
          render a block area to PostScript
 void renderBodyAreaContainer(BodyAreaContainer area)
          render a body area container to PostScript
 void renderDisplaySpace(DisplaySpace space)
          render a display space to PostScript
 void renderForeignObjectArea(ForeignObjectArea area)
          render a foreign object area
 void renderImageArea(ImageArea area)
          render an image area to PostScript
 void renderInlineSpace(InlineSpace space)
          render an inline space to PostScript
 void renderLeaderArea(LeaderArea area)
          render a leader area to PostScript
 void renderLineArea(LineArea area)
          render a line area to PostScript
 void renderPage(Page page)
          render a page to PostScript
 void renderSpanArea(SpanArea area)
          render a span area to PostScript
 void renderSVGArea(SVGArea area)
          render an SVG area to PostScript
 void renderWordArea(WordArea area)
          render an inline area to PostScript
 void setOptions(java.util.Hashtable options)
          set up renderer options
 void setProducer(java.lang.String producer)
          set the document's producer
 void setupFontInfo(FontInfo fontInfo)
          set up the font info
 void startRenderer(java.io.OutputStream outputStream)
          Default start renderer method.
 void stopRenderer(java.io.OutputStream outputStream)
          Default stop renderer method.
 void useFont(java.lang.String name, int size)
           
protected  void write(java.lang.String cmd)
          write out a command
protected  void writeFontDict(FontInfo fontInfo)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

producer

protected java.lang.String producer
the application producing the PostScript

out

protected PSStream out
the stream used to output the PostScript

options

protected java.util.Hashtable options
Constructor Detail

PSRenderer

public PSRenderer()
Method Detail

setProducer

public void setProducer(java.lang.String producer)
set the document's producer
Specified by:
setProducer in interface Renderer
Parameters:
producer - string indicating application producing the PostScript

setOptions

public void setOptions(java.util.Hashtable options)
set up renderer options
Specified by:
setOptions in interface Renderer

write

protected void write(java.lang.String cmd)
write out a command

comment

protected void comment(java.lang.String comment)
write out a comment

writeFontDict

protected void writeFontDict(FontInfo fontInfo)

movetoCurrPosition

protected void movetoCurrPosition()

setupFontInfo

public void setupFontInfo(FontInfo fontInfo)
set up the font info
Specified by:
setupFontInfo in interface Renderer
Parameters:
fontInfo - the font info object to set up

renderAreaContainer

public void renderAreaContainer(AreaContainer area)
render an area container to PostScript
Specified by:
renderAreaContainer in interface Renderer
Parameters:
area - the area container to render

renderBodyAreaContainer

public void renderBodyAreaContainer(BodyAreaContainer area)
render a body area container to PostScript
Specified by:
renderBodyAreaContainer in interface Renderer
Parameters:
area - the body area container to render

renderSpanArea

public void renderSpanArea(SpanArea area)
render a span area to PostScript
Specified by:
renderSpanArea in interface Renderer
Parameters:
area - the span area to render

renderBlockArea

public void renderBlockArea(BlockArea area)
render a block area to PostScript
Specified by:
renderBlockArea in interface Renderer
Parameters:
area - the block area to render

renderDisplaySpace

public void renderDisplaySpace(DisplaySpace space)
render a display space to PostScript
Specified by:
renderDisplaySpace in interface Renderer
Parameters:
space - the space to render

renderForeignObjectArea

public void renderForeignObjectArea(ForeignObjectArea area)
render a foreign object area
Specified by:
renderForeignObjectArea in interface Renderer

renderSVGArea

public void renderSVGArea(SVGArea area)
render an SVG area to PostScript
Specified by:
renderSVGArea in interface Renderer
Parameters:
area - the area to render

getRenderContext

public org.apache.batik.gvt.GraphicsNodeRenderContext getRenderContext()

renderBitmap

public void renderBitmap(FopImage img,
                         int x,
                         int y,
                         int w,
                         int h)

renderImageArea

public void renderImageArea(ImageArea area)
render an image area to PostScript
Specified by:
renderImageArea in interface Renderer
Parameters:
area - the area to render

renderWordArea

public void renderWordArea(WordArea area)
render an inline area to PostScript
Specified by:
renderWordArea in interface Renderer
Parameters:
area - the area to render

useFont

public void useFont(java.lang.String name,
                    int size)

renderInlineSpace

public void renderInlineSpace(InlineSpace space)
render an inline space to PostScript
Specified by:
renderInlineSpace in interface Renderer
Parameters:
space - the space to render

renderLineArea

public void renderLineArea(LineArea area)
render a line area to PostScript
Specified by:
renderLineArea in interface Renderer
Parameters:
area - the area to render

renderPage

public void renderPage(Page page)
render a page to PostScript
Specified by:
renderPage in interface Renderer
Parameters:
page - the page to render

renderLeaderArea

public void renderLeaderArea(LeaderArea area)
render a leader area to PostScript
Specified by:
renderLeaderArea in interface Renderer
Parameters:
area - the area to render

startRenderer

public void startRenderer(java.io.OutputStream outputStream)
                   throws java.io.IOException
Default start renderer method. This would normally be overridden. (mark-fop@inomial.com).
Specified by:
startRenderer in interface Renderer

stopRenderer

public void stopRenderer(java.io.OutputStream outputStream)
                  throws java.io.IOException
Default stop renderer method. This would normally be overridden. (mark-fop@inomial.com).
Specified by:
stopRenderer in interface Renderer

render

public void render(Page page,
                   java.io.OutputStream outputStream)
Description copied from interface: Renderer
render the given area tree to the given stream
Specified by:
render in interface Renderer


Copyright © 1999-2001 Apache Software Foundation. All Rights Reserved.