blob: 5e812114a874ed391ea5996fcdd2c2f5e3bec3d6 [file] [log] [blame]
<?xml version="1.0"?>
<!DOCTYPE document SYSTEM "./dtd/document-v10.dtd">
<!--
Copyright 2000-2004,2006 The Apache Software Foundation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!-- ========================================================================= -->
<!-- author vincent.hardy@eng.sun.com -->
<!-- version $Id$ -->
<!-- ========================================================================= -->
<document>
<header>
<title>Batik SVG Toolkit</title>
<subtitle>SVG Tools in Java</subtitle>
<authors>
<person name="Vincent Hardy" email="vincent.hardy@eng.sun.com"/>
<person name="Thierry Kormann" email="tkormann@apache.org"/>
<person name="Stephane Hillion" email="stephane@hillion.org"/>
</authors>
</header>
<body>
<s1 title="Batik Overview">
<figure src="images/splash.png" alt="Batik release 1.5beta3" />
<p>
Batik is a Java(tm) technology based toolkit for applications
or applets that want to use images in the <link
href="http://www.w3.org/TR/SVG/">Scalable Vector Graphics
(SVG)</link> format for various purposes, such as viewing,
generation or manipulation.
</p>
<ul>
<li><link href="#SecurityWarning">Script Security Warning</link></li>
<li><link href="#BatikApplications">Applications of Batik</link></li>
<li><link href="#SVGSpecification">The SVG Specification</link></li>
<li><link href="#BatikStatus">What is Batik's Implementation Status?</link></li>
<li><link href="#DownloadBatik">Downloading the Batik distribution (source and binary)</link></li>
<li><link href="#projectAndProductExamples">Examples of projects and products using Batik</link></li>
</ul>
<p>
The project's ambition is to give developers a set of
<link href="architecture.html#coreComponents">core
modules</link> which can be used together or individually to support
specific SVG solutions. Examples of
<link href="architecture.html">modules</link>
are the
<link href="architecture.html#lowLevelComponents">SVG Parser</link>,
the <link href="svggen.html">SVG Generator</link> and
the <link href="domapi.html">SVG DOM</link>. Another ambition for
the Batik project is to make it highly
<link href="extendingBatik.html">extensible</link>
(for example, Batik allows the developer to handle custom SVG
tags). Even though the goal of the project is to provide a
set of core modules, one of the deliverables is a full fledged
<link href="svgviewer.html">SVG browser</link> implementation
which validates the various modules and their inter-operability.
</p>
</s1>
<anchor id="SecurityWarning" />
<s1 title="Script Security Warning">
<p>
This is a warning that a script security issue was reported in
the Batik Squiggle browser. Squiggle uses the Rhino scripting
engine and some features of that engine can be leveraged by
malicious scripts to gain access to otherwise protected
resources (like the file system).
</p>
<p>
The Batik team has worked with the Rhino team to fix the isssue
that was reported and the <link href="http://www.apache.org/dyn/closer.cgi/xml/batik">Batik 1.5.1</link>
patch release addresses the issue.
</p>
</s1>
<anchor id="BatikApplications" />
<s1 title="Applications of Batik">
<p><img src="images/batikUses.jpg" alt="Batik use cases" />
With Batik, you can manipulate SVG documents anywhere Java is
available. You can also use the various
<link href="architecture.html">Batik modules</link> to
<link href="svggen.html">generate</link>,
<link href="domapi.html">manipulate</link>,
<link href="rasterizerTutorial.html">transcode</link> and search SVG
images in your applications or applets.
</p>
<p>
Batik makes it easy for Java based applications or applets to
deal with SVG content. For example, using Batik's
<link href="svggen.html">SVG generator module</link>,
a Java application or applets can very easily export its
graphics into the SVG format. Using Batik's SVG processor and
SVG Viewing component, an application or applet can very
easily integrate SVG viewing capabilities. Another
possibility is to use Batik's modules to convert SVG to
various formats, such as raster images (JPEG,PNG or Tiff).
</p>
<p>
Batik provides <link href="architecture.html">core modules</link>
for handling and processing SVG files. See
<link href="#projectAndProductExamples">examples of projects and
products using Batik</link> for real-life example of how Batik is
already integrated in projects and products.
</p>
<p>
Batik provides building blocks that developers can assemble in
various ways in their Java technology applications or applets
to generate, parse, view or convert SVG contents. Batik can
also be used to generate SVG on a client or on a server, and
Batik can <link href="svgrasterizer.html">convert SVG
content</link> convert SVG content into other formats such as
JPEG, PNG or Tiff or other formats (<link
href="rasterizerTutorial.html">transcoder API</link>).
Batik's goal is to make it easy for developers to handle SVG
content for various purposes, client-side or server-side, as
illustrated in the diagram.
</p>
</s1>
<anchor id="SVGSpecification" />
<s1 title="The SVG Specification">
<p>
Scalable Vector Graphics, SVG, is a <link href="http://www.w3.org">W3C</link>
recommendation. It defines an XML grammar for rich 2D graphics
which includes features such as transparency, arbitrary geometry, filter
effects (shadows, lighting effects, etc...), scripting and animation.
</p>
<p>
The <link href="http://www.w3.org/TR/SVG/">SVG specification</link> states:</p>
<p>This specification defines the features and syntax for Scalable Vector Graphics (SVG).
SVG is a language for describing two-dimensional graphics in XML [<link href="http://www.w3.org/TR/REC-xml">XML10</link>]. SVG allows for three types
of graphic objects: vector graphic shapes (e.g., paths consisting of straight lines and curves),
images and text. Graphical objects can be grouped, styled, transformed and composited into previously
rendered objects. The feature set includes nested transformations, clipping paths, alpha masks,
filter effects and template objects.</p>
<p>SVG drawings can be interactive and dynamic. Animations can be defined and triggered either declaratively
(i.e., by embedding SVG animation elements in SVG content) or via scripting.</p>
</s1>
<anchor id="BatikStatus" />
<s1 title="Batik's Implementation Status">
<p>
The latest revision of Batik is a conformant <link href="http://www.w3.org/TR/SVG11/conform.html#ConformingSVGViewers">static
SVG implementation</link> and supports <link href="http://www.w3.org/TR/SVG11/interact.html">interactivity</link>,
<link href="http://www.w3.org/TR/SVG11/linking.html">linking</link> and
<link href="http://www.w3.org/TR/SVG11/script.html">scripting</link> features of the SVG specification.
The Batik project does not support declarative <link href="http://www.w3.org/TR/SVG11/animate.html">animation</link>
and there is currently no plan to add support for SMIL Animation to the Batik project.</p>
<p>
See the <link href="status.html">status</link> page for a detailed description of the set of SVG features
Batik supports.
</p>
</s1>
<anchor id="DownloadBatik" />
<s1 title="Download Batik">
<p>
You can get the Batik distribution (<link href="install.html#distributions">source</link>
and <link href="install.html#distributions">binary</link>) on the
<link href="http://www.apache.org/dyn/closer.cgi/xml/batik">download page</link>.
</p>
<note>
All other libraries needed by Batik are included in the distribution.
As a consequence the Batik archive is quite big, but
after you downloaded it, you will not need anything else.
</note>
</s1>
<anchor id="projectAndProductExamples" />
<s1 title="Examples of projects and products using Batik">
<p>While it is hard to track projects and products which are using Batik, here are a few
ones which are known:</p>
<ul>
<li><link href="http://cocoon.apache.org/">The Apache Cocoon project</link> uses Batik to rasterize SVG images. </li>
<li><link href="http://xmlgraphics.apache.org/fop">The Apache FOP project</link> uses Batik to handle SVG images. It uses the SVG rasterizer and extends the Batik transcoder architecture to offer SVG to PDF conversion.</li>
<li><link href="http://www.bitflash.com/products/brilliance.asp">BitFlash Brilliance</link> delivers a robust set of graphic-design and source-code editing tools for fast and flexible Mobile SVG development. It uses Batik to display SVG Images.</li>
<li><link href="http://burma.free.fr">eDoc</link>, a page layout software, is using the Batik SVG generator to export pages to SVG</li>
<li><link href="http://www.elixirtech.com/ElixirReport">ElixirTech's ElixirReport</link> uses Batik for charting and for its SVG component.</li>
<li><link href="http://glipssvgeditor.sourceforge.net/">GLIPS Graffiti</link> is an Open Source Extensible Full Feature Native SVG Editor.</li>
<li><link href="http://www2.ilog.com/preview/Discovery/">ILOG Discovery Preview</link>, a free visual data analysis tool letting you visualize and edit data sets in a very wide variety of views (2D graphs and charts, various kinds of treemaps, parallel coordinates, parallel histograms and much more), uses the Batik SVG export module. </li>
<li><link href="http://www.ilog.com/products/jviews">ILOG JViews Component Suite</link>, a product for advanced visualization, uses and extends the Batik SVG export module. </li>
<li><link href="http://www.object-refinery.com/jfreechart/index.html">The JFreeChart Project</link> uses Batik to export charts in the SVG format. </li>
<li><link href="http://lagoon.sourceforge.net/">Lagoon</link>, an XML-based framework for web site maintenance, uses the Batik SVG Rasterizer to render SVG as bitmap graphics for web publishing</li>
<li><link href="http://www.throneworld.com/lords/gms/dev.html">Lords Map</link>, a program to allow players and visitors to view the current map of various campaigns. Lord Map uses Batik's SVG DOM and SVG Generator.</li>
<li><link href="http://luxor-xul.sourceforge.net/index.html">Luxor XUL</link> is a free, open-source XML User Interface Language (XUL) toolkit in Java released under the GNU GPL that supports hand-picked Mozilla XUL goodies and also includes a ultra-lightweight, multi-threaded web server, a portal engine, a scripting engine, a template engine and much more. Gerard Bauer, the Luxor project lead, has written an extensive <link href="http://luxor-xul.sourceforge.net/talk/jug-nov-2002/slides.html">SVG presentation</link>.</li>
<li><link href="http://www.optimalj.com">OptimalJ</link>, a UML Class Diagram Editor for NetBeans, uses Batik to export SVG. </li>
<li><link href="http://otn.oracle.com/products/jdev/content.html">Oracle Corp.'s JDeveloper9i</link> uses Batik to export class diagrams in SVG. It uses the SVG export module (SVGGraphics2D).</li>
<li><link href="http://www.kiyut.com/">Sketsa</link> is a vector drawing application based on SVG. With Sketsa, you can create vector graphics that can be scaled and printed at any resolution, without losing detail or clarity.</li>
<li><link href="http://www.isacat.net/2002/svolgo/index.htm">Svolgo</link>,a Graph Visualisation/Transformation Framework for the Semantic Web Cross-model transformation, node and arc diagrams, representation in SVG. This project uses Batik's SVG DOM implementation.</li>
<li><link href="http://www.togethersoft.com/products/controlcenter/whats_new.jsp">Together Control Center 5.5</link> uses Batik to export UML diagrams in SVG.</li>
<li><link href="http://volity.net/">Volity</link> is an open platform for Internet-based multiplayer casual gaming. Its official client, <link href="http://volity.org/projects/gamut/">Gamut</link>, uses Batik, allowing developers to create game UI files that use ECMAScript-driven SVG.</li>
<li><link href="http://bitflux.ch/developer/misc/70/">XML_svg2image, </link> is a PHP class which translates svg files to png or jpeg using Batik</li>
<li><link href="http://xweb.sf.net">XWeb</link>, a tool to create websites automatically out of XML input. Uses the Batik SVG Rasterizer.</li>
</ul>
</s1>
</body>
</document>