Class Java2DRenderer
Renders an XML files, formatted with CSS, as an image. Input is a document in the form of file or URL, and output is a BufferedImage. A Java2DRenderer is not intended to be re-used for multiple document sources; just create new Java2DRenderers for each one you need. Java2DRenderer is not thread-safe. Standard usage pattern is
File xhtml = ... Java2DRenderer rend = new Java2DRenderer(xhtml); BufferedImage image = rend.getImage();
The document is not loaded, and layout and render don't take place, until getImage()
is called.
Subsequent calls to getImage()
don't result in a reload; create a new Java2DRenderer instance to do so.
As with RootPanel
, you can access the
SharedContext
instance that will be used by this renderer and change settings
to control the rendering process; use getSharedContext()
.
By default, this renderer will render to an RGB image which does not support transparency. To use another type
of BufferedImage, either set the image type in constructor before calling
getImage()
, or else override the createBufferedImage(int, int)
to have full control over
the image we render to.
Not thread-safe.
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final int
private static final int
private static final int
private static final int
private static final int
private @Nullable Document
private final int
private static final int
private Java2DOutputDevice
private BufferedImage
private boolean
Whether we've completed rendering; image will only be rendered once.private @Nullable Box
private final SharedContext
private @Nullable String
private @Nullable String
private final int
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprivate
Java2DRenderer
(int width, int height, int bufferedImageType) Java2DRenderer
(File file, int width) Creates a new instance for a given File.Java2DRenderer
(File file, int width, int height) Creates a new instance for a given File.Java2DRenderer
(String url, int width) Renderer for a given URL (which is also used as the base) and a specified width; height is calculated automatically.Java2DRenderer
(String url, int width, int height) Renderer for a given URL and a specified width; height is calculated automatically.Java2DRenderer
(String url, String baseurl, int width) Renderer for a given URL and a specified width; height is calculated automatically.Java2DRenderer
(String url, String baseUrl, int width, int height) Java2DRenderer
(String url, String baseUrl, int width, int height, int bufferedImageType) Creates a new instance for a given URL.Java2DRenderer
(Document doc, int width) Java2DRenderer
(Document doc, int width, int height) Creates a new instance pointing to the given Document.Java2DRenderer
(Document doc, String baseUrl, int width, int height) Creates a new instance pointing to the given Document. -
Method Summary
Modifier and TypeMethodDescriptionprotected BufferedImage
createBufferedImage
(int width, int height) Returns a BufferedImage using the specified width and height.static Java2DRenderer
getImage()
Renders the XML document if necessary and returns the resulting image.Returns the SharedContext to be used by renderer.static BufferedImage
htmlAsImage
(InputStream source, int widthInPixels) static BufferedImage
htmlAsImage
(String html, int widthInPixels) private void
layout
(int width) private Document
loadDocument
(String uri) private LayoutContext
private void
setDocument
(Document doc, String url, NamespaceHandler nsh)
-
Field Details
-
DEFAULT_HEIGHT
private static final int DEFAULT_HEIGHT- See Also:
-
DEFAULT_DOTS_PER_POINT
private static final int DEFAULT_DOTS_PER_POINT- See Also:
-
DEFAULT_DOTS_PER_PIXEL
private static final int DEFAULT_DOTS_PER_PIXEL- See Also:
-
DEFAULT_IMAGE_TYPE
private static final int DEFAULT_IMAGE_TYPE- See Also:
-
outputDevice
-
doc
-
root
-
outputImage
-
bufferedImageType
private final int bufferedImageType -
rendered
private boolean renderedWhether we've completed rendering; image will only be rendered once. -
sourceDocument
-
sourceDocumentBase
-
width
private final int width -
height
private final int height -
NO_HEIGHT
private static final int NO_HEIGHT- See Also:
-
-
Constructor Details
-
Java2DRenderer
-
Java2DRenderer
Creates a new instance for a given URL. Does not render untilgetImage()
is called for the first time.- Parameters:
url
- The location of the document to be rendered.baseUrl
- The base url for the document, against which relative paths are resolved.width
- Target width, in pixels, for the image; required to provide horizontal bounds for the layout.height
- Target height, in pixels, for the image; required to provide vertical bounds for the layout.
-
Java2DRenderer
Creates a new instance for a given File. Does not render untilgetImage()
is called for the first time.- Parameters:
file
- The file to be rendered.width
- Target width, in pixels, for the image; required to provide horizontal bounds for the layout.height
- Target height, in pixels, for the image- Throws:
IOException
-
Java2DRenderer
Creates a new instance pointing to the given Document. Does not render untilgetImage()
is called for the first time.- Parameters:
doc
- The document to be rendered.width
- Target width, in pixels, for the image; required to provide horizontal bounds for the layout.height
- Target height, in pixels, for the image.
-
Java2DRenderer
-
Java2DRenderer
Creates a new instance pointing to the given Document. Does not render untilgetImage()
is called for the first time.- Parameters:
doc
- The document to be rendered.baseUrl
- The base url for the document, against which relative paths are resolved.width
- Target width, in pixels, for the image; required to provide horizontal bounds for the layout.height
- Target height, in pixels, for the image.
-
Java2DRenderer
Creates a new instance for a given File. Does not render untilgetImage()
is called for the first time.- Parameters:
file
- The file to be rendered.width
- Target width, in pixels, for the image; required to provide horizontal bounds for the layout. Height is calculated based on content- Throws:
IOException
-
Java2DRenderer
Renderer for a given URL (which is also used as the base) and a specified width; height is calculated automatically.- Parameters:
url
- The location of the document to be rendered.width
- Target width, in pixels, for the image; required to provide horizontal bounds for the layout. Height is calculated based on content
-
Java2DRenderer
Renderer for a given URL and a specified width; height is calculated automatically.- Parameters:
url
- The location of the document to be rendered.baseurl
- The base url for the document, against which relative paths are resolved.width
- Target width, in pixels, for the image; required to provide horizontal bounds for the layout. Height is calculated based on content
-
Java2DRenderer
Renderer for a given URL and a specified width; height is calculated automatically.- Parameters:
url
- The location of the document to be rendered.width
- Target width, in pixels, for the image; required to provide horizontal bounds for the layout.height
- Target height, in pixels, for the image
-
Java2DRenderer
private Java2DRenderer(int width, int height, int bufferedImageType)
-
-
Method Details
-
fromFile
public static Java2DRenderer fromFile(File file, int width, int bufferedImageType) throws IOException - Throws:
IOException
-
getImage
Renders the XML document if necessary and returns the resulting image. If already rendered, same image reference will be returned.- Returns:
- The XML rendered as a BufferedImage.
-
createBufferedImage
Returns a BufferedImage using the specified width and height. By default, this returns an image compatible with the screen (if not in "headless" mode) using the BufferedImage type specified in constructor, or else RGB if none is specified.- Parameters:
width
- target widthheight
- target height- Returns:
- new BI
-
setDocument
-
layout
private void layout(int width) -
loadDocument
-
newLayoutContext
-
htmlAsImage
- Throws:
SAXException
-
htmlAsImage
public static BufferedImage htmlAsImage(InputStream source, int widthInPixels) throws SAXException, IOException, ParserConfigurationException
-