`
jacally
  • 浏览: 766676 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

batik详解(6) 转载

    博客分类:
  • SVG
阅读更多

在java平台中所有的绘图,都通过Graphics2D抽象类,这个类提供象drawRect,fillRect,drawString这样的方法。对于每个类型的输出这个抽象类都有指定的执行,比如屏幕或者打印机。SVGGraphics2D是这个接口的一个新的执行生成SVG内容,以用来替代画到屏幕或者打印机上。

SVGGraphics2D 拥有以下特性:
1.它允许应用程序输出图形到SVG格式
2.它输出图形到svg格式,不需要修改任何图形代码
3。它提供用户使用DOMApi操作生成文档的能力

 

 

以上图形显示生成器是怎样用DOMAPI工作的。W3C已经定义了一个API用来显示带有java对象的XML内容。这个API允许程序员在内存中操作,创建或者修改XML内容。DOMAPI包含象document,Element,Attr的接口,这些接口等价于java语言中的XML documents, elements 和attributes。

生成器管理一个DOM对象树用来显示相应于SVGGraphics2D实例的svg内容。换句话说,每次一个程序调用一个绘图方法,比如fillRect,在一个SVGGraphics2D实例中,一个新的DOM对象,描绘等价SVG,被添加到DOM树中。举个例子,一个矩形元素将在fillrect方法调用后被添加。

程序员使用这个生成器,可以存储DOM树到更深层的操作,或者可以直接写内容到一个输出流中,就象我们下面选项中看到的那样。

怎样使用SVGGraphics2D

从上面部分的描述我们可以看到为了使用一个SVGGraphics2D实例来构建SVG内容,一个文档类实例是必须的。DOM树是svg文档的内存内表现,它可以被用户使用DOMAPI深入操作,或者通过一个Write对象,流输出。下面的例子证明怎么从java图形中怎么生成SVG内容

import java.awt.Rectangle;
import java.awt.Graphics2D;
import java.awt.Color;
import java.io.Writer;
import java.io.OutputStreamWriter;
import java.io.IOException;

import org.apache.batik.svggen.SVGGraphics2D;
import org.apache.batik.dom.GenericDOMImplementation;

import org.w3c.dom.Document;
import org.w3c.dom.DOMImplementation;

public class TestSVGGen {

    public void paint(Graphics2D g2d) {
        g2d.setPaint(Color.red);
        g2d.fill(new Rectangle(10, 10, 100, 100));
    }

    public static void main(String[] args) throws IOException {

        // Get a DOMImplementation.
        DOMImplementation domImpl =
            GenericDOMImplementation.getDOMImplementation();

        // Create an instance of org.w3c.dom.Document.
        String svgNS = "http://www.w3.org/2000/svg";
        Document document = domImpl.createDocument(svgNS, "svg", null);

        // Create an instance of the SVG Generator.
        SVGGraphics2D svgGenerator = new SVGGraphics2D(document);

        // Ask the test to render into the SVG Graphics2D implementation.
        TestSVGGen test = new TestSVGGen();
        test.paint(svgGenerator);

        // Finally, stream out SVG to the standard output using
        // UTF-8 encoding.
        boolean useCSS = true; // we want to use CSS style attributes
        Writer out = new OutputStreamWriter(System.out, "UTF-8");
        svgGenerator.stream(out, useCSS);
    }
}

我们可以看到在我们的TestSVGGen实例中生成SVG内容包括三个步骤:

1.创建一个org.w3c.dom.Document实例,以便生成器用来构建它的XML内容,并且使用Document实例创建一个SVG生成器

 // Get a DOMImplementation.
        DOMImplementation domImpl =
            GenericDOMImplementation.getDOMImplementation();

        // Create an instance of org.w3c.dom.Document.
        String svgNS = "http://www.w3.org/2000/svg";
        Document document = domImpl.createDocument(svgNS, "svg", null);

        // Create an instance of the SVG Generator.
        SVGGraphics2D svgGenerator = new SVGGraphics2D(document);

2.调用SVG生成器上的描绘代码。在我们的例子中,我们调用了TestSVGGen的paint方法

// Ask the test to render into the SVG Graphics2D implementation.
        TestSVGGen test = new TestSVGGen();
        test.paint(svgGenerator);

3.流输出svg内容。svg生成器可以流输出它的内容到任意的java.io.Writer中。在我们的例子中,我们流输出内容到标准的输出流中

        // Finally, stream out SVG to the standard output using
        // UTF-8 encoding.
        boolean useCSS = true; // we want to use CSS style attributes
        Writer out = new OutputStreamWriter(System.out, "UTF-8");
        svgGenerator.stream(out, useCSS);

svg有两种方式来指定风格属性,比如填充颜色,显示属性或者CSS类型属性。useCss 参数允许用户使用这个属性

 

 

 

分享到:
评论
1 楼 zhaoxiqian 2008-09-12  
为什么生成的SVG文件在FF3.0上不可以缩小,只是截取了原来图形的一部分。

相关推荐

    batik框架 jar包

    **Batik框架详解** Batik是Apache软件基金会开发的一个开源项目,主要专注于SVG(Scalable Vector Graphics)标准的实现。SVG是一种基于XML的矢量图形格式,它允许创建高质量、可缩放的图形,广泛应用于网页设计、...

    apache Batik.zip

    6. **commons-logging-1.2.jar**:Apache Commons Logging是一个日志抽象层,允许开发人员在不改变代码的情况下切换不同的日志实现。在Batik中,它用于记录和调试过程中的信息。 7. **batik-svgpp-1.14.jar**:SVG ...

    batik所有架包.rar

    batik-anim batik-awt-util batik-bridge batik batik-codec batik-css batik-dom batik-ext batik-extension batik-gui-util batik-gvt batik-parser batik-rasterizer batik-script batik-svg-dom batik-...

    使用batik转换svg文件

    6. **SVG到CSS和JavaScript的转换**: Batik还提供了`CSSGenerator`和`JSGenerator`,可以将SVG转换为CSS样式表或JavaScript代码,使得SVG可以在没有原生SVG支持的环境中运行。 7. **命令行工具**: 除了Java API...

    batik-1.7batik-1.7batik-1.7

    batik-1.7 batik-1.7batik-1.7batik-1.7batik-1.7batik-1.7batik-1.7batik-1.7batik-1.7batik-1.7batik-1.7batik-1.7batik-1.7batik-1.7batik-1.7batik-1.7batik-1.7batik-1.7

    batik-1.13.rar

    6. 字体服务: Batik提供了字体子系统,支持SVG中的文本渲染,包括对嵌入式字体和外部字体的处理。 7. 基于Java的SVG浏览器: Batik还包含了用于查看和编辑SVG文档的浏览器,这为开发者提供了调试和测试SVG文档的...

    batik的相关jar包

    **Batik相关jar包详解** 在Java开发中,Batik是一个非常重要的开源工具包,它由Apache软件基金会提供,主要用于处理SVG(Scalable Vector Graphics)格式的图像。SVG是一种基于XML的矢量图形标准,它允许开发者创建...

    batik相关 jar包大全

    包括:batik-all-1.11.jar,batik-anim-1.11.jar,batik-codec-1.11.jar,batik-constants-1.11.jar,batik-svgbrowser-1.11.jar batik-swing-1.11.jar,fop-transcoder-allinone-2.3.jar 等等, 特分享出来供大家一起学习...

    基于Batik的java客户端程序

    **基于Batik的Java客户端程序** 在Java开发中,有时候我们需要处理SVG(Scalable Vector Graphics)这种矢量图格式的图像。SVG由于其可缩放性和清晰度,被广泛用于网页设计和图形用户界面。 Batik是Apache软件基金...

    batik 2.7 jars

    batik-anim-1.7.jar batik-awt-util-1.7.jar batik-bridge-1.7.jar batik-codec-1.7.jar batik-css-1.7.jar batik-dom-1.7.jar batik-ext-1.7.jar batik-gvt-1.7.jar batik-js-1.7.jar batik-parser-1.7.jar batik-...

    org.apache.batik包

    6. **Rasterizer**: Batik的Rasterizer工具可以将SVG图像转换为位图格式,如JPEG、PNG或TIFF,这对于在不支持SVG的环境中展示图形非常有用。 7. **Transcoder API**: Batik提供了通用的Transcoder API,用于将SVG...

    Batik 1.7 API CHM格式

    Batik是使用svg格式图片来实现各种功能的应用程序以及Applet提供的一个基于java的工具包。 通过Batik,你可以在JAVA可以使用的地方操作SVG文档,您还可以在你的应用程序使用Batik模块来生成 , 处理和转码SVG图像。...

    batik源码(包含sample)

    6. **Graphics2D渲染**: Batik利用Java2D API将SVG图形渲染到屏幕或输出到其他格式。 **使用Batik进行SVG开发** 1. **集成到Java应用**: Batik的API可以直接在Java应用中导入,用于读取、修改和生成SVG内容。 2...

    Batik详细教程

    Batik 是为想使用 svg 格式图片来实现各种功能的应用程序和 Applet 提供的一个基于 java 的工具包。 工程创建的目的是为开发者提供一系列可以结合或单独使用来支持特殊的 svg 解决方案的核心模块。模块主要有 ...

    javaHighcharts 导出图表的batik 等资源包

    import org.apache.batik.transcoder.Transcoder; import org.apache.batik.transcoder.TranscoderException; import org.apache.batik.transcoder.TranscoderInput; import org.apache.batik.transcoder....

    batik-all.jar

    batik-all.jar

    Eclipse 的svg插件batik-plugin

    Batik是为想使用svg格式图片来实现各种功能的应用程序和Applet提供的一个基于java的工具包。 工程创建的目的是为开发者提供一系列可以结合或单独使用来支持特殊的svg解决方案的核心模块。模块主要有SVGParser,...

    org.apache.batik.transcoder-1.6.0.jar

    org.apache.batik.transcoder-1.6.0.jar

    batik-all-1.7.jar

    batik-all-1.7.jar包含了batik-1.7.jar

    batik-1.5-fop-0.20-5.zip batik-1.5-fop-0.20-5.jar

    标题中的"batik-1.5-fop-0.20-5.zip"与描述中的重复信息表明,这里关注的是Apache Batik项目的一个特定版本,即1.5版的FOP( Formatting Object Processor)模块,版本号为0.20-5。FOP是Apache Batik的一部分,它是...

Global site tag (gtag.js) - Google Analytics