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

batik详解(2) 转载

    博客分类:
  • SVG
阅读更多
四、解析器模块
SVG有很多没有属性值的微型语法使用,比如SVGTransformable元素中的transform属性,path元素中的
path data d属性等。以前这些属性不能很好的被解析,现在必要时可以通过SVG进程应用程序来使用。
1.解析器,操作者,生产者
在解析模块中,每个微语法通过一对类来支持---解析器和操作者。解析器是一个用来执行解析接口
(用来从一个reader或者一个String中来解析值的接口)的类。操作者是微型语法的一个特殊接口,这
个接口当相应元素的输入被解析后将调用接口中的相应的方法。在这些操作者接口中多种方法和适应类被提供。
解析器还包含一个错误操作,当输入解析错误时,错误操作的错误方法将被调用。如果错误处理没有跟
解析器关联,那么当发生异常时将抛出ParseException。
解析模块支持的微语法如下:
Angles
Clock values

Fragment identifiers

这个解析器被用来解析Fragment identifiers(片断定义)的svg允许的各种格式。

Lengths

解析SVG长度值

Length lists

用来解析逗号或者空格分隔的SVG长度列表。

Numbers

用于解析SVG数字值.

Number lists

用来解析逗号或者空格分隔的SVG数字值.

Path data

通过 PathParser执行, 通过 PathHandler处理. 用来解析 SVG path data, 就象path 元素中的d 属性一样.

Points

通过 PointsParser执行, 通过 PointsHandler处理. 用来解析 point 列表, 就象 polygon 元素中的points 属性那样.

Preserve aspect ratio values (保持屏幕比率值)

通过 PreserveAspectRatioParser执行, 通过 PreserveAspectRatioHandler处理. 用来解析在svg元素中的preserveAspectRatio 属性的值。

Transform lists

通过TransformListParser执行, 通过 TransformListHandler处理. 用来解析transform 列表, 就象在
任意可以变换元素中的变换属性那样。

一些微型语法同样也有一个相应的生产者类,这个类是在解析的同时生成对象的一个处理接口的执行。

2.举例

下面例子用来举例怎么用一个解析器来解析一个点列表 

import java.awt.geom.Point2D;
import java.util.LinkedList;
import java.util.List;

import org.apache.batik.parser.DefaultPointsHandler;
import org.apache.batik.parser.ParseException;
import org.apache.batik.parser.PointsHandler;
import org.apache.batik.parser.PointsParser;

public class PointsParserExample {

    public List extractPoints(String s) throws ParseException {
        final LinkedList points = new LinkedList();
        PointsParser pp = new PointsParser();
        PointsHandler ph = new DefaultPointsHandler() {
            public void point(float x, float y) throws ParseException {
                Point2D p = new Point2D.Float(x, y);
                points.add(p);
            }
        };
        pp.setPointsHandler(ph);
        pp.parse(s);
        return points;
    }
}

这个例子使用 AWTTransformProducer 类来从一个SVG transform列表中生成一个 AffineTransform 对象:

import java.awt.geom.AffineTransform;

import org.apache.batik.parser.AWTTransformProducer;
import org.apache.batik.parser.ParseException;
import org.apache.batik.parser.TransformListParser;

public class TransformParserExample {

    public AffineTransform parseTransformList(String s) throws ParseException {
        TransformListParser p = new TransformListParser();
        AWTTransformProducer tp = new AWTTransformProducer();
        p.setTransformListHandler(tp);
        p.parse(s);
        return tp.getAffineTransform();
    }
}
分享到:
评论

相关推荐

    batik框架 jar包

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

    apache Batik.zip

    2. **batik-all-1.14.jar**:这是Batik的核心库,包含了所有必需的组件,包括SVG解析器、DOM实现、CSS引擎、Rasterizer和Transcoder等。1.14版本意味着它是 Batik的较新版本,提供了更稳定和功能丰富的SVG支持。 3....

    使用batik转换svg文件

    2. ** Batik工具类的使用**: Batik提供了一系列的Java工具类,如`SVGGraphics2D`用于绘制SVG图形,`SVGConverter`用于转换SVG文件。这些工具类可以通过Java API直接调用,集成到你的项目中。例如,你可以创建一个`...

    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-1.13.rar

    2. SVG渲染器: Batik的渲染引擎能够将AST转换成像素图像,可以在屏幕上显示或输出到其他图像格式,如JPEG、PNG等。 3. SVG小部件: Batik提供了Swing组件,可以将SVG图像集成到Java应用程序或Applet中,用户可以...

    batik-ttf2svg-1.7.jar

    官方版本,亲测可用

    batik的相关jar包

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

    基于Batik的java客户端程序

    2. **解析SVG**:使用`SVGGeneratorContext`和`SVGGraphics2D`来解析SVG文件,创建SVG图形对象。 3. **绘制SVG**:将SVG对象与Java的图形组件(如Swing的`JComponent`或JavaFX的`Node`)关联,通过重写`...

    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 等等, 特分享出来供大家一起学习...

    org.apache.batik包

    2. **SVG解析器(SVG Parser)**: Batik提供了对SVG规范的全面支持,包括解析SVG XML文件,生成SVG Document Object Model (DOM)树。 3. **SVG DOM实现**: Batik提供了完整的SVG DOM API实现,允许通过编程方式...

    batik源码(包含sample)

    2. **SVG渲染引擎**: Batik的渲染引擎负责将解析后的SVG对象转换为可视化的像素图像,支持在各种目标上下文中显示,如屏幕、打印机或PDF文档。 3. **SVG到其他格式的转换**: Batik不仅限于处理SVG,还支持将SVG...

    batik-all.jar

    batik-all.jar

    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-...

    Batik 1.7 API CHM格式

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

    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-1.8 (1).jar

    org.apache.batik包 batik包,用于生成svg格式的文件,实现svg,swf转png ,提供word to html

    batik-util-1.7.jar

    (GodFish)JAVA WEB JAR包分享: batik-util-1.7.jar

    batik-all-1.7.jar

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

    Eclipse 的svg插件batik-plugin

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

Global site tag (gtag.js) - Google Analytics