xmlgraphics-batik-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jeremias Maerki <...@jeremias-maerki.ch>
Subject Re: generating png and pdf files
Date Thu, 14 Apr 2011 09:41:19 GMT
Hi Joris,
you obviously already have the code that paints against a Graphics2D
object. You use SVGGraphics2D to produce SVG.

For PNG and PDF you could, of course, use Batik's transcoders to convert
the SVG to PNG and PDF:
But that would be inefficient because it requires two steps.

To create a PNG directly, create a BufferedImage and request a
Graphics2D from it:

Graphics2D g2d = (Graphics2D)bufImage.getGraphics();
// Print to the SVG Graphics2D object

Then use ImageIO to write the BufferedImage to a PNG file. See here for

For PDF you can try the org.apache.fop.svg.PDFDocumentGraphics2D from
Apache FOP. Here's a usage example:
PDFDocumentGraphics2D is also used by the PDFTranscoder for Batik to
create PDF from SVG.


On 13.04.2011 19:39:50 Joris Kinable wrote:
> Dear,
> I have a mxGraphComponent which basically is a
> javax.swing.JScrollPane. Objective is to print this mxGraphComponent
> to a file in the following 3 formats: SVG, PDF, PNG. The images in the
> .SVG and .PDF files should be scalable i.e. vectorized. The following
> code works great for printing the .SVG file:
> private void batikTest(mxGraphComponent graphComponent){
> 		// Get a DOMImplementation
>         DOMImplementation domImpl =
>             GenericDOMImplementation.getDOMImplementation();
>         // Create an instance of org.w3c.dom.Document
>         Document document = domImpl.createDocument(null, "svg", null);
>         // Create an instance of the SVG Generator
>         SVGGraphics2D svgGenerator = new SVGGraphics2D(document);
>         // Print to the SVG Graphics2D object
>         graphComponent.getGraphControl().print(svgGenerator);
>         boolean useCSS = false;
>         Writer out;
> 		try {
> 			out=new FileWriter(new File(OUTPUTDIR+fileName+"_batik.SVG"));
> 			svgGenerator.stream(out, useCSS);
> 		} catch (Exception e) {
> 			e.printStackTrace();
> 		}
> 	System.out.println("Batik svg printed");
> }
> Is there a convenient way to generate the .PDF and .PNG files too
> using this code? I can't really find how to do that within the code.
> There is a description on how to externally convert the generated .SVG
> file to a pdf (http://xmlgraphics.apache.org/batik/tools/rasterizer.html)
>  but I would like to do this within the code, without having to call
> an external tool.
> Thnx,
> Joris

Jeremias Maerki

To unsubscribe, e-mail: batik-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: batik-users-help@xmlgraphics.apache.org

View raw message