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:
http://xmlgraphics.apache.org/batik/using/transcoder.html
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
graphComponent.getGraphControl().print(g2d);
Then use ImageIO to write the BufferedImage to a PNG file. See here for
ideas:
http://stackoverflow.com/questions/665406/how-to-make-a-color-transparent-in-a-bufferedimage-and-save-as-png
For PDF you can try the org.apache.fop.svg.PDFDocumentGraphics2D from
Apache FOP. Here's a usage example:
http://markmail.org/message/6s6us2hf34h2q3mv
PDFDocumentGraphics2D is also used by the PDFTranscoder for Batik to
create PDF from SVG.
HTH
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-unsubscr...@xmlgraphics.apache.org
For additional commands, e-mail: batik-users-h...@xmlgraphics.apache.org