| <?xml version="1.0"?> |
| |
| <!-- |
| |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You 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 --> |
| <!-- author cjolif@ilog.fr --> |
| <!-- version $Id: faq.xml 388441 2006-03-24 07:50:03Z cam $ --> |
| <!-- ====================================================================== --> |
| |
| <!DOCTYPE faqs PUBLIC "-//APACHE//DTD FAQ V2.0//EN" "http://forrest.apache.org/dtd/faq-v20.dtd"> |
| <faqs> |
| <title>Frequently Asked Questions</title> |
| |
| <part id="part-general"> |
| <title>General questions</title> |
| |
| <faq id="what-is-batik"> |
| <question>What is Batik?</question> |
| <answer> |
| <p> |
| Batik is a Java-based toolkit for applications or applets that want |
| to use images in the <a href="site:svg11">Scalable |
| Vector Graphics (SVG)</a> format for various purposes, such as |
| display, generation or manipulation. |
| </p> |
| </answer> |
| </faq> |
| |
| <faq id="what-is-svg"> |
| <question>What is SVG?</question> |
| <answer> |
| <p> |
| <a href="site:svg11">SVG</a> (Scalable Vector |
| Graphics) is an open-standard language for describing |
| two-dimensional (2D) graphics in XML. It is a Recommendation from the |
| <a href="http://www.w3.org/">W3C</a>. SVG lets you describe rich images |
| with features such as gradients, transparency, filter effects and animation. |
| </p> |
| <p> |
| SVG has three types of graphic objects: shapes (e.g., paths consisting |
| of straight lines and curves), images and text. Graphical objects can be grouped, |
| styled, transformed and composited (e.g., drawn with transparency). SVG has a |
| large set of static features which includes nested transformations, clipping |
| paths, masking and filter effects. |
| </p> |
| <p> |
| In addition, SVG images can be dynamic and interactive. A rich set of event |
| handlers such as for mouse movement and clicks can be assigned to any SVG |
| graphical object. These handlers can invoke scripts, which, in response to an |
| event, can dynamically modify the SVG graphic through the SVG Document Object Model |
| (DOM) API, allowing, for example scripts to change the color or location of graphical |
| elements. |
| </p> |
| <p> |
| SVG graphical elements can be animated through scripting. Alternatively, |
| animation sequences can be expressed directly in XML because SVG leverages the |
| <a href="site:smil">SMIL Animation</a> |
| specification for multimedia, another |
| <a href="http://www.w3.org/">W3C</a> specification. |
| </p> |
| </answer> |
| </faq> |
| |
| <faq id="what-can-i-do"> |
| <question>What can I do with Batik?</question> |
| <answer> |
| <p> |
| Batik contains several <a href="site:architecture">core modules</a> |
| which can be used independently or jointly to <strong>generate SVG |
| content</strong> (see the <a href="site:generator">SVG Generator</a> |
| and <a href="site:dom-api">SVG DOM</a> implementation documentation) |
| <strong>view SVG content</strong> (see the <a href="site:swing">JSVGCanvas</a>) |
| or <strong>convert to and from the SVG format</strong> (see the |
| <a href="site:transcoder">SVG Transcoder</a> page). |
| </p> |
| |
| <p> |
| In addition, Batik contains |
| <a href="using/architecture.html#lowLevelComponents">low level |
| modules</a>, such as an object-oriented Graphic Vector Toolkit |
| (GVT), a set of low level parsers specific to the SVG syntax and a |
| set of <a href="site:extending">extensions</a> to the Java 2D API |
| (such as sophisticated fill types and filter effects). |
| </p> |
| |
| <p> |
| Finally, Batik comes with <a href="site:tools">packaged applications</a> to help developers get |
| familiar with the code and be quickly able to use the various modules: Squiggle, an |
| <a href="site:browser">SVG browser</a> (in the |
| <code>org.apache.batik.apps.svgbrowser</code> package) an |
| <a href="site:rasterizer">SVG rasterizer</a> (in the |
| <code>org.apache.batik.apps.rasterizer</code> package), a |
| <a href="site:font-converter">Font converter</a> (in the |
| <code>org.apache.batik.apps.ttf2svg package</code>) and an |
| <a href="site:pretty-printer">SVG pretty printer</a> (in the |
| <code>org.apache.batik.apps.svgpp package</code>).</p> |
| <p> |
| Squiggle, the <a href="site:browser">SVG browser</a> can display SVG |
| documents and lets the user zoom, pan and rotate any SVG document, |
| view the SVG source, link between SVG documents, view a tree |
| representation of the SVG DOM and more. One important component of |
| the SVG viewer is the <code>org.apache.batik.swing.JSVGCanvas</code> |
| component, which can be plugged in to any Java application or applet |
| to provide SVG viewing capability. |
| </p> |
| <p> |
| The <a href="site:rasterizer">SVG rasterizer</a> |
| lets the user convert |
| SVG files to raster formats such as JPEG, PNG or TIFF . It |
| contains an extensible mechanism so that arbitrary raster |
| formats can be added. For example, the rasterizer lets you |
| create one SVG file with a special effect (e.g., shadows, |
| gradients, etc.), turn it into a PNG image, then modify the |
| SVG source (e.g., modify a piece of text or a color), and |
| generate another PNG image from it. This way, you can easily |
| generate a series of images sharing a common theme or look and |
| feel to post on a web site. (Note that the rasterizer can also |
| be used on a web server to do this conversion automatically). |
| </p> |
| <p> |
| The <a href="site:font-converter">SVG Font Converter</a> |
| lets the user easily create |
| an <a href="http://www.w3.org/TR/SVG11/fonts.html">SVG |
| Font</a> for a set of characters from a TrueType Font |
| file. That SVG Font definition can be embedded in a document |
| using the characters. This allows users to create SVG |
| documents that are self contained and do not rely on system |
| fonts, and guarantees that the SVG file will be displayed |
| exactly as it was authored on all platforms. |
| </p> |
| |
| <p> |
| The <a href="site:pretty-printer">SVG Pretty Printer</a> |
| is a convenience tool to |
| pretty print an SVG document, which means that you can |
| reformat any existing SVG document to produce a nicely |
| formatted and highly legible version. |
| </p> |
| <p> |
| These applications show that Batik can be used client side |
| (the browser can be used on any client machine) and server |
| side (the rasterizer can be used to serve SVG images to client |
| machines that do not have SVG support). |
| </p> |
| </answer> |
| </faq> |
| |
| <faq id="why-at-apache"> |
| <question>Why do we have such a project at Apache?</question> |
| <answer> |
| <p> |
| The <a href="http://xmlgraphics.apache.org/charter.html">mission |
| of the Apache XML Graphics Project</a> is to promote the use of |
| XML-based graphics by “providing robust, full-featured, |
| commercial-quality, and freely available software packages for the |
| conversion of XML to graphical output and for related components”. |
| Batik as an open source implementation of a key format for today’s |
| and tomorrow’s web fits well in this mission. |
| </p> |
| </answer> |
| </faq> |
| |
| <faq id="how-does-batik-relate"> |
| <question>How does Batik relate to other Apache projects?</question> |
| <answer> |
| <p> |
| Batik is used in <a href="http://cocoon.apache.org/">Cocoon</a> |
| for server side rasterization of SVG images. In addition, the Batik is used in the |
| <a href="http://xmlgraphics.apache.org/fop/">FOP</a> project to convert |
| SVG images to PDF format. |
| </p> |
| </answer> |
| |
| </faq> |
| |
| <faq id="how-did-it-start"> |
| <question>How did it start?</question> |
| <answer> |
| <p> |
| Batik started out because several teams doing SVG related projects decided to join |
| efforts with the idea that the whole will be greater than the sum of the parts. The |
| following companies or institutions are part of the team that contributed and/or |
| created the initial Batik project, during the fall of 2000: |
| </p> |
| <ul> |
| <li><a href="http://www.csiro.au/">CSIRO</a></li> |
| <li><a href="http://www.ilog.com/">ILOG</a></li> |
| <li><a href="http://koala.ilog.fr/">Koala Team</a></li> |
| <li><a href="http://www.kodak.com/">Eastman Kodak Company</a></li> |
| <li><a href="http://www.sun.com/">Sun Microsystems, Inc.</a></li> |
| </ul> |
| <p> |
| In addition, the Batik project is supported by <a href="http://www.ibm.com/">IBM</a>. |
| </p> |
| <p> |
| We encourage anyone to participate. As with all ASF projects, all efforts are |
| volunteer-based. We are looking for individuals to work with us on |
| fulfilling our goals for Batik in the spirit of collaborative open-source |
| software development. |
| </p> |
| </answer> |
| |
| </faq> |
| |
| <faq id="what-is-next"> |
| <question>Where is Batik going? What is next?</question> |
| <answer> |
| <p> |
| The SVG implementation is not complete (see the current |
| <a href="site:status">status</a>), and there is more work to |
| do to achieve a fully functional viewer. |
| </p> |
| |
| <p> |
| Batik 1.1 supports all static SVG features, |
| linking and a limited support for scripting, and the 1.5 release |
| completed support for scripting and dynamic documents. |
| With Batik 1.6 came many improvements to |
| the implementation of SVG DOM functions, bug fixes, performance |
| improvements, and the beginning of some SVG 1.2 support. |
| Declarative animation and some SVG 1.2 features were introduced |
| in Batik 1.7beta1. The 1.7 release brought mostly bug fixes. |
| Completion of remaining SVG 1.1 functionality and the addition |
| of Further SVG 1.2 functionality should be supported in the 2.0 |
| release. |
| </p> |
| <p> |
| The type of applications (e.g., transcoding applications) |
| that can or will be added to Batik depends on contributions |
| and feedback. |
| </p> |
| </answer> |
| |
| </faq> |
| |
| <faq id="how-can-i-create-svg"> |
| <question>How can I create and author SVG content?</question> |
| <answer> |
| <p> |
| Well, you can always use a plain text editor such as vi or |
| xemacs, but there are many graphic authoring packages that can |
| export SVG documents and that will let you author SVG content |
| visually. |
| </p> |
| <p> |
| You can get a list of tools exporting SVG from the <a |
| href="http://www.w3.org/Graphics/SVG/SVG-Implementations#edit">SVG |
| implementation</a> section of the SVG Home page on the W3C |
| web site. You can also imagine building a tool on top of |
| Batik: feel free to contribute! |
| </p> |
| <p> |
| Authoring is one way of creating SVG content, and graphic |
| authoring packages are useful for that purpose. However, there |
| are many types of graphics which can be generated, such as |
| stock quotes, statistical data, etc. For these types of |
| graphics, there are many ways to generate SVG content. For |
| example, if your data (say stock information) is contained in |
| an XML document, you could use XSLT to transform your XML data |
| into SVG. If your data comes from a database and you retrieve |
| that data in a servlet on a Web server (e.g., using JDBC), you |
| could use the Java binding for the DOM API to generate an SVG |
| document from the database data. You could also use Batik’s |
| SVG generator and use the Java 2D API to generate that |
| graphic. |
| </p> |
| <p> |
| The following URLs will be useful to learn more about each of |
| these solutions: |
| </p> |
| <ul> |
| <li><a href="http://xml.apache.org/xalan-j/index.html">Xalan for XSLT</a></li> |
| <li><a href="http://xml.apache.org/xerces-j/index.html">Xerces</a> and |
| <a href="http://java.sun.com/xml/download.html">Crimson</a> for the DOM API</li> |
| <li><a href="site:generator">SVG Generator</a></li> |
| </ul> |
| </answer> |
| </faq> |
| |
| <faq id="what-other-svg-products-exist"> |
| <question>What other SVG products are out there?</question> |
| <answer> |
| <p> |
| There are many companies supporting SVG and you will find a list of |
| available implementations on the |
| <a href="http://www.w3.org/Graphics/SVG/SVG-Implementations">W3C’s SVG |
| implementation page</a>. |
| </p> |
| </answer> |
| </faq> |
| |
| <faq id="svg-spec"> |
| <question>Where can I find the SVG specification?</question> |
| <answer> |
| <p> |
| The <a href="site:svg11">SVG specification</a> is |
| available from the <a href="http://www.w3.org/">W3C web site</a>. |
| </p> |
| </answer> |
| </faq> |
| |
| <faq id="how-much-does-batik-implement"> |
| <question>How much of SVG does Batik implement?</question> |
| <answer> |
| <p> |
| The <a href="site:status">status page</a> shows how much of the SVG |
| specification Batik implements by showing which of the tests in the |
| <a href="status.html#beSuiteStatus">SVG Basic Effectivity test |
| suite</a> Batik successfully passes. |
| </p> |
| </answer> |
| </faq> |
| |
| <faq id="benefits-of-svg-being-xml"> |
| <question>What are the benefits of SVG being an XML grammar?</question> |
| <answer> |
| <p> |
| Being an XML grammar means SVG can leverage work done around |
| XML, and SVG actually leverages other grammars such as |
| <a href="http://www.w3.org/TR/2001/REC-xlink-20010627/">XLink</a>, |
| for linking and |
| <a href="http://www.w3.org/TR/2001/REC-smil-animation-20010904/#AnimationFramework">SMIL</a> |
| for the animation. |
| </p> |
| <p> |
| Beyond the use and mix with other XML syntaxes, being an XML grammar |
| lets SVG benefit from the plethora of XML tools that make it so easy |
| to manipulate, generate, search and edit XML files. |
| </p> |
| </answer> |
| </faq> |
| |
| <faq id="what-is-in-a-name"> |
| <question>Where does the name come from?</question> |
| <answer> |
| <p> |
| Batik is a highly evolved art tradition that developed in Java |
| (one of the islands comprising what is now called |
| Indonesia). Batik is generally thought of as the quintessentially |
| Indonesian textile. Motifs of flowers, twining plants, leaves, |
| buds, birds, butterflies, fish, insects and geometric forms are |
| rich in symbolic association and variety; there are about three |
| thousand recorded batik patterns. |
| </p> |
| <p> |
| We think that Batik gracefully evokes Java, graphics and |
| high-quality, terms that constitute the core of the toolkit. |
| </p> |
| <p> |
| <a href="http://www.expat.or.id/info/batik.html">This page</a> |
| shows examples of what Batik textures look like. |
| </p> |
| </answer> |
| </faq> |
| </part> |
| |
| <part id="batik-help"> |
| <title>Getting started with Apache Batik/SVG</title> |
| |
| <faq id="system-requirements"> |
| <question>What are the system requirements to run Batik?</question> |
| <answer> |
| <p> |
| Batik is written in the Java language and requires a version 1.4 |
| implementation at this time. |
| </p> |
| </answer> |
| </faq> |
| |
| <faq id="how-to-install"> |
| <question>How do I install Batik?</question> |
| <answer> |
| <p> |
| You will need a <a href="http://java.sun.com/">JRE/JDK</a> version |
| 1.4 or above to run Batik. |
| </p> |
| <p> |
| To install Batik you need to <a href="site:download">download</a> |
| the binary or source distribution and unzip it on your computer. |
| </p> |
| <p> |
| You can have a look at the <a href="site:install">installation |
| instructions</a> for more information. |
| </p> |
| </answer> |
| </faq> |
| |
| <faq id="how-can-i-see-demo"> |
| <question>How can I see a demo?</question> |
| <answer> |
| <p> |
| You can see an online demonstration of Squiggle the SVG |
| browser on the <a href="site:demo">demo page</a>. Alternatively, you |
| can <a href="site:download">download</a> Batik or see |
| <a href="site:browser">screenshots</a> of the Batik SVG viewer, |
| images created from the <a href="site:rasterizer">rasterizer</a> and |
| an <a href="site:generator">example</a> of how to use the |
| <code>SVGGraphics2D</code> generator. |
| </p> |
| </answer> |
| </faq> |
| |
| <faq id="what-scripting-languages-batik-supports"> |
| <question>What scripting languages can I use in my SVG files?</question> |
| <answer> |
| <p> |
| A limited support of scripting in SVG files is provided with |
| the current version of Batik (script are executed but dynamic |
| update is not supported). |
| </p> |
| <p> |
| Batik can recognize the following scripting languages: |
| </p> |
| <ul> |
| <li> |
| ECMAScript thanks to the |
| <a href="http://www.mozilla.org/rhino/">Mozilla Rhino</a> JavaScript |
| engine included in the distribution, |
| </li> |
| <li> |
| Python for which you need to download the |
| <a href="http://www.jython.org">Jython</a> engine, and |
| </li> |
| <li> |
| Tcl for which you need to download the |
| <a href="http://dev.scriptics.com/software/java/">Jacl</a> engine. |
| </li> |
| </ul> |
| <p> |
| To get more information on how to install optional |
| scripting languages you can have a look at the |
| <a href="site:install">installation instructions</a>. |
| </p> |
| </answer> |
| </faq> |
| </part> |
| |
| <part id="batik-error"> |
| <title>Troubleshooting Apache Batik</title> |
| |
| <faq id="NoSuchMethodException"> |
| <question> |
| When I try to run Batik it results in a NoSuchMethodException. What |
| is the problem? |
| </question> |
| <answer> |
| <p> |
| There is certainly something wrong with your classpath. Clear your |
| <code>CLASSPATH</code> environment variable and be sure to remove |
| all the libraries which use the W3C’s DOM bindings from |
| <code>jre/lib/ext</code> before running any of the Batik’s |
| applications. |
| </p> |
| </answer> |
| </faq> |
| |
| <faq id="display-does-not-update"> |
| <question> |
| When I change the document in Java it doesn’t update the |
| display, even if I call repaint? |
| </question> |
| <answer> |
| <p> |
| There are two common causes for this. The first is that the |
| <a class="class" href="javadoc/org/apache/batik/swing/JSVGCanvas.html">JSVGCanvas</a> |
| doesn’t know it’s a dynamic document. Normally |
| Batik detects this by looking for script elements but when you |
| modify the document from Java it can’t tell. So call |
| </p> |
| <source>myJSVGCanvas.setDocumentState(JSVGCanvas.ALWAYS_DYNAMIC);</source> |
| <p> |
| before loading the document (with <code>setURI</code>, |
| <code>setDocument</code>, <code>setSVGDocument</code>, etc.). |
| </p> |
| <p> |
| The second common reason is that the changes aren’t made in |
| the |
| <a class="class" href="javadoc/org/apache/batik/bridge/UpdateManager.html">UpdateManager</a>’s |
| thread. You can run code in the <code>UpdateManager</code>’s thread |
| with the following: |
| </p> |
| <source>UpdateManager um = JSVGCanvas.getUpdateManager(); |
| um.getUpdateRunnableQueue().invokeLater(Runnable);</source> |
| <p> |
| <strong>NOTE:</strong> The update manager only becomes |
| available after the first rendering completes. You can |
| be notified when this happens by registering a |
| <code>GVTTreeRendererListener</code>. |
| </p> |
| </answer> |
| </faq> |
| <faq id="must-mouseover-to-change"> |
| <question> |
| When I change the document in Java it only updates if I |
| move the mouse over the canvas? |
| </question> |
| <answer> |
| <p> |
| The most common causes for this, is that the changes are not made in |
| the <code>UpdateManager</code>’s thread. See previous FAQ for |
| example code to run code in the Update Manager’s thread. Moving the |
| mouse works because it delivers the mouse move events in the update |
| thread, and after a runnable completes in the |
| <code>UpdateManager</code>’s thread it checks if the canvas needs |
| repainting. |
| </p> |
| </answer> |
| </faq> |
| <faq id="changes-are-not-rendered"> |
| <question> |
| When I create new SVG elements or modify some SVG attributes through |
| the DOM API, from ECMAScript, nothing happens, the changes are not |
| rendered. Why not? |
| </question> |
| <answer> |
| <p> |
| A common problem is that script contain the wrong DOM calls |
| to create elements or modify attributes. |
| </p> |
| <p> |
| SVG elements need to be created in the SVG namespace. For example, |
| to create a <code>rect</code> element, you should use |
| </p> |
| <source>document.createElementNS(svgNS, "rect");</source> |
| <p> |
| (where <code>svgNS</code> is equal to |
| <code>"http://www.w3.org/2000/svg"</code>), which appropriately |
| creates the <code>rect</code> element in the SVG namespace. A call to |
| </p> |
| <source>document.createElement("rect")</source> |
| <p> |
| creates an element with the name <code>rect</code> but which does not |
| belong to the SVG namespace. As such, it is ignored by Batik. |
| </p> |
| <p> |
| Most SVG attributes belong to what is called the “per element type |
| partition namespace” (see the |
| <a href="http://www.w3.org/TR/REC-xml-names">Namespaces in XML</a> |
| specification). The appropriate way to set attributes on an SVG |
| element is a call to <code>setAttributeNS</code> with a namespace |
| value of <code>null</code>, for example: |
| </p> |
| <source>elt.setAttributeNS(null, "width", "40");</source> |
| <p> |
| In the Batik SVG DOM implementation, you can also use a call to |
| <code>setAttribute</code> and you can write |
| </p> |
| <source>elt.setAttribute("width", "40")</source> |
| <p> |
| However, it is important to know that some implementations make a |
| difference between <code>setAttribute(x, y)</code> and |
| <code>setAttributeNS(null, x, y)</code>, so it is goo practice |
| to use <code>setAttributeNS</code> which is the only guaranteed |
| interoperable way of setting attributes in a namespace aware DOM |
| implementation. |
| </p> |
| <p> |
| Finally, for attributes which belong to a specific namespace, like the |
| the <code>href</code> attribute on the <code>image</code> element, |
| you have to use the <code>setAttributeNS</code> method with the |
| XLink namespace. For example, assuming <code>img</code> references an |
| <code>image</code> DOM <code>Element</code>, you can modify the |
| href as follows: |
| </p> |
| <source>img.setAttributeNS(xlinkNS, "xlink:href", "myImage.jpg");</source> |
| <p> |
| where <code>xlinkNS</code> is equal to |
| <code>"http://www.w3.org/1999/xlink"</code>. |
| </p> |
| <p> |
| For more information on common authoring pitfalls, see Jonathan Watt’s |
| <a href="http://jwatt.org/svg/authoring/">SVG Authoring |
| Guidelines</a>. |
| </p> |
| </answer> |
| </faq> |
| |
| <faq id="null-updatemanager"> |
| <question> |
| When I get the UpdateManager from the canvas sometimes |
| it is null, why? |
| </question> |
| <answer> |
| <p> |
| The <code>JSVGCanvas</code> is highly asynchronous so when you call |
| <code>setURI</code>, <code>setDocument</code> or |
| <code>setSVGDocument</code> they return essentially immediately. |
| Behind the scenes, the canvas creates the rendering tree and does a |
| first rendering after dispatching the document <code>SVGLoad</code> |
| event. Only after this first rendering does the |
| <code>UpdateManger</code> become available. |
| </p> |
| </answer> |
| </faq> |
| |
| <faq id="why-updatemanager"> |
| <question> |
| Why do I have to go through the UpdateManager to |
| run my code? Can’t you just synchronize the DOM? |
| </question> |
| <answer> |
| <p> |
| It would be possible to synchronize individual calls to |
| the DOM, however in general this is almost useless for the |
| way DOM works. For example creating a single rectangle |
| element takes approximately 6 individual DOM calls. So |
| higher level synchronization is needed. |
| </p> |
| <p> |
| The use of a |
| <a class="class" href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Runnable.html">Runnable</a> |
| is a common way of accomplishing synchronization for a block of code. |
| This is essentially the approach that Swing takes (all Swing |
| modification should take place in the Swing thread). It was |
| considered to use the Swing event thread, but this would lock the |
| user interface while scripts were working. |
| </p> |
| </answer> |
| </faq> |
| |
| <faq id="extension-tags-work-with-source-not-binary"> |
| <question> |
| I can use the Batik extension tags with the source distribution |
| but not with the binary distribution. What am I missing? |
| </question> |
| <answer> |
| <p> |
| When running from the source distribution you automatically get the |
| service provider entries for the Batik extension elements |
| (such as <code>regularPolygon</code> and <code>star</code>). |
| We chose not to include these by default in the |
| binary distribution for the Batik applications. |
| </p> |
| <p> |
| There is a subdirectory called <code>extensions</code> that has jar |
| files that enable the extended elements from Batik. |
| </p> |
| </answer> |
| </faq> |
| |
| <faq id="red-circles"> |
| <question> |
| Why do I get red circles when I view the samples/extensions files? |
| </question> |
| <answer> |
| <p> |
| You are using the binary distribution. This distribution does not |
| include support for our example extensions (they are just examples |
| and other people can do more sophisticated things). |
| </p> |
| <p> |
| If you want to view these examples you need to use the extension |
| enabled versions of the applications in the <code>extensions</code> |
| subdirectory. |
| </p> |
| </answer> |
| </faq> |
| |
| <faq id="dom-modifications-do-not-display"> |
| <question> |
| I am modifying the DOM after displaying it in the JSVGCanvas, |
| but my changes aren’t shown (even if I call repaint). |
| </question> |
| <answer> |
| <p> |
| For efficiency, if Batik loads a static document it doesn’t |
| set up any dynamic support. Batik normally decides whether a |
| document is dynamic by checking if it contains any |
| <code>script</code> elements or event handler attributes. However, |
| if your Java application is modifying the DOM directly there may be |
| no script elements. In this case you need to tell Batik to set up |
| dynamic support regardless. |
| </p> |
| <p> |
| You can inform the <code>JSVGCanvas</code> that a document should |
| be handled dynamically by calling the <code>setDocumentState</code> |
| method, just before loading the document: |
| </p> |
| <source>JSVGCanvas myCanvas = ...; |
| myCanvas.setDocumentState(JSVGCanvas.ALWAYS_DYNAMIC); |
| myCanvas.setURI("myFile.svg");</source> |
| </answer> |
| </faq> |
| |
| <faq id="batik-fails-with-fop-on-org.w3c.xxx"> |
| <question> |
| I am trying to use Batik and FOP together but Batik does not work and |
| fails on the <code>org.w3c.</code>* packages. What is happening? |
| </question> |
| <answer> |
| <p> |
| Both FOP and Batik use the <code>org.w3c.</code>* packages. |
| Depending on the version of FOP and Batik, Batik has been using a |
| version of these packages which is more recent than the one in the |
| <code>xml-apis.jar</code> file FOP uses. However, if the |
| <code>xml-apis.jar</code> file that comes with the FOP distribution |
| is loaded before the Batik jar files, then the version coming with |
| FOP takes precedence (i.e., that is the version the Java Virtual |
| Machine loads). Because that version is incompatible with Batik, you |
| encounter this problem. |
| </p> |
| <p> |
| The solution is to either repackage the <code>xml-apis.jar</code> file |
| with the classes in the Batik distribution (you will need the Batik |
| source distribution to do that), or you will need to make sure the |
| Batik jars are loaded before FOP’s <code>xml-apis.jar</code>, for |
| example by putting Batik’s jar file before FOP’s in your classpath. |
| If you are copying your jar files to <code>.../jre/lib/ext</code>, |
| you can simply remove the FOP <code>xml-apis.jar</code> file from |
| that directory. |
| </p> |
| </answer> |
| </faq> |
| |
| <faq id="how-to-checkout-latest-batik-via-svn"> |
| <question> |
| How do I checkout the latest SVN version of Batik? |
| </question> |
| <answer> |
| <p> |
| You just have to follow the instructions on the |
| <a href="site:download">download page</a>. |
| </p> |
| </answer> |
| </faq> |
| |
| <faq id="mac-os-x-messed-up-svg-files"> |
| <question> |
| I’m using Mac OS X, and some of the SVG files I view are messed up |
| (things appear clipped or out of place). What do I need to do to fix |
| this? |
| </question> |
| <answer> |
| <p> |
| As of Mac OS X release 10.1.1 there still appears to be |
| problems in the Apple implementation of the Java 2D APIs. The |
| true source of these problems and/or workarounds have yet to be |
| identified (although the problems appear to be closely tied to a |
| “gstack underflow” error message from the Apple JVM). We are |
| interested in finding the source of these problems and |
| reasonable workarounds, so if you know what causes these errors |
| the Batik team would be very interested in hearing from you |
| (either directly or through the user/developer mailing lists). |
| </p> |
| <p> |
| Other things to be aware of on Mac OS X, due to fixes for |
| other problems with Java 2D under Mac OS X, you may find that |
| some filtering operations take significantly more memory than on |
| other platforms. This will be especially true for deeply nested |
| filter trees (where the result of one filtering operation is |
| filtered by another filtering operation). |
| </p> |
| <p> |
| Finally a few hints on avoiding problems under Mac OS X. The |
| bugs seems to be triggered by filters, and pure raster SVG documents |
| have not been found to cause problems. The use of the |
| <code>filterRes</code> attribute on the <code>filter</code> element |
| seems especially problematic. The bug isn’t 100% reproducible, so |
| while some content exhibits the problem, if you play with the |
| document enough it will often “fix” itself for a while, then later |
| it will go back to being broken (which indicates that the problem may |
| be some sort of race condition in the JVM). |
| </p> |
| </answer> |
| </faq> |
| |
| <faq id="mac-os-x-batik-demo-crash"> |
| <question> |
| I cannot run the Batik demo on Mac OS X (10.1.1). The Batik splash |
| screen hangs. What is happening? |
| </question> |
| <answer> |
| <p> |
| The Batik <a href="site:demo">demo</a> uses Java Web Start. Java Web |
| Start (under the <code>Applications/Utilities</code> folder), lets |
| you start a Java application from a web browser. You can see the |
| debug traces by enabling the Java console for Java Web Start. If you |
| do, you will see that there is a |
| <code>java.lang.NoSuchMethodError</code> exception thrown. |
| </p> |
| <p> |
| This is happening because the Java Web Start jar file |
| (<code>javaws.jar</code> in <code>/Applications/Utilities/Java Web |
| Start/Content/MacOS</code>) contains an older version of the DOM |
| bindings. |
| </p> |
| <p> |
| One work around is to manually patch the <code>javaws.jar</code> |
| file to remove the DOM bindings so that they do not take precedence |
| over the Batik ones. |
| </p> |
| </answer> |
| </faq> |
| </part> |
| |
| <part id="batik-dev"> |
| <title>How do I contribute to Batik Development?</title> |
| |
| <faq id="how-can-i-contribute"> |
| <question>How can I contribute to Apache Batik development?</question> |
| <answer> |
| <p> |
| The Batik Project is an open volunteer project in the |
| spirit of the <a href="http://www.apache.org">Apache |
| Software Foundation</a> (ASF). This means that there are |
| many ways to contribute to the project, either with direct |
| participation (coding, documenting, answering questions, |
| proposing ideas, reporting bugs, suggesting bug-fixes, etc.) |
| or by resource donation (publicity, hardware, software, |
| conference presentations, speeches, etc.). Applications that |
| use the Batik modules, such as tools or extensions, are of special |
| interest to the project. |
| </p> |
| <p> |
| The process for contributing to Batik is the same as for other |
| Java projects at Apache. A formal description of that process |
| can be found on the <a href="http://jakarta.apache.org/guidelines/index.html">Jakarta</a> |
| web site. You can also view a list of |
| <a href="site:contributors">who has contributed to Batik</a>. |
| </p> |
| <p> |
| For direct participation, we suggest that you subscribe to the |
| <a href="site:mailing-lists">Batik mailing lists</a> and to |
| checkout the |
| <a href="http://svn.apache.org/viewcvs.cgi/xmlgraphics/batik/">latest |
| code</a>. |
| </p> |
| </answer> |
| </faq> |
| |
| <faq id="submit-patches"> |
| <question>How do I submit patches or bug fixes?</question> |
| <answer> |
| <p> |
| You can submit bug fixes and patches to the |
| <a href="mailto:batik-dev@xmlgraphics.apache.org">Batik developers</a> |
| mailing list and you can enter bugs in |
| <a href="site:bugs">Bugzilla</a>. |
| </p> |
| </answer> |
| </faq> |
| </part> |
| </faqs> |