batik详解(1) 转载

一、概述
Batik是为想使用svg格式图片来实现各种功能的应用程序和Applet提供的一个基于java的工具包。
工程创建的目的是为开发者提供一系列可以结合或单独使用来支持特殊的svg解决方案的核心模块。模块主要有SVGParser,SVGGernerator,SVGDOM。Batik工程的其他目的是使它具有高度的扩展性----举个例子,Batik
允许开发者使用自定义的SVG元素。即使工程的目标是提供一系列核心模块,但是还是提供了一个完整的SVG浏
览器,以便证实各个模块的有效性和交互性。
二、batik的用途
通过Batik,你可以在任何使用到java的地方操作SVG文档。你也可以使用各种Batik模块来在你的应用程序和Applet
中来生成,操作和转换你的svg图像。
batik使通过java处理SVG内容变的简单。举个例子,通过使用batik的SVGGernerate模块,java应用程序和Applet
可以非常简单的使输出图像的格式为SVG。使用batik的SVG viewing component, 应用程序或者Applet可以非常容
易的整合SVG查看和交互功能。另外还可以使用Batik的模块将SVG转换为其他格式,比如说JPEG等图像格式和
PDF等其他向量格式.
Batik工具包包含如下各项:
模块 

工具和应用程序

三、SVG DOM API

DOM API定义了一个接口叫做DOMimplementation,这个接口用来表现任意DOM implementation之间的连
接。这个类的作用是通过提供方法创建一个document来连接一个指定的DOM实例。然后具体的Document
表现为一个XML Document 并且跟各种各样的DOM对象工厂比如Element,Attr,Text那样动作。

那么怎样才能获得一个依赖于你使用的DOM Implementation的DOMImplementation 实例呢?在Batik中DOM
Implementation存在于包org.apache.batik.dom.svg中,类名为SVGDOMImplementation。以下例子表示怎
样获取一个具体的DOMImplementation对象:

import org.w3c.dom.DOMImplementation;
import org.apache.batik.dom.svg.SVGDOMImplementation;

DOMImplementation impl = SVGDOMImplementation.getDOMImplementation();
一旦你已经拥有了一个DOMImplementation 实例,你将不能再依赖于batik的指定代码而要准备好使用
DOM API了。
1.创建一个Doucument
使用DOMImplementation,你现在将可以创建一个Document。下面将举例说明怎么创建一个SVG Document。
注意Batik的
DOM implementation可以被用来表现一个SVG Document片断或者任意的XML Document。注意通过选择
命名空间URI和
SVG根元素本地名,我们将创建一个SVG Document。
import org.apache.batik.dom.svg.SVGDOMImplementation;
import org.w3c.dom.Document;

// 在SVGDOMImplementation中我们使用了一个不变的常量
// but we could have used "http://www.w3.org/2000/svg".
String svgNS = SVGDOMImplementation.SVG_NAMESPACE_URI;
DOMImplementation impl = SVGDOMImplementation.getDOMImplementation();
Document doc = impl.createDocument(svgNS, "svg", null);
 当我们已经创建了一个SVG Document时,如果需要的话,我门可以映射这个document到一个SVGDocument。
2.创建一个SVG Document
最后使用Document对象,我们现在将构造SVG内容。注意上边创建的document,同时支持通用的XML和SVG。
虽然Batik的DOM implementation是一个SVG DOM implementation,但是依赖于已经呈现的Document
的指定的SVG方法,不能用于此点。
Document 可以使用DOM Leve2核心方法创建。以下的例子显示怎样在一个(400,450)范围的SVG屏幕中在
(10,20)点创建一个大小为(100,50)的红色矩形。
 
import org.apache.batik.dom.svg.SVGDOMImplementation;
import org.w3c.dom.Document;
import org.w3c.dom.Element;

DOMImplementation impl = SVGDOMImplementation.getDOMImplementation();
String svgNS = SVGDOMImplementation.SVG_NAMESPACE_URI;
Document doc = impl.createDocument(svgNS, "svg", null);

// 获得根元素('svg' 元素).
Element svgRoot = doc.getDocumentElement();

// 设置'svg'根元素的宽,高属性.
svgRoot.setAttributeNS(null, "width", "400");
svgRoot.setAttributeNS(null, "height", "450");

// 创建矩形
Element rectangle = doc.createElementNS(svgNS, "rect");
rectangle.setAttributeNS(null, "x", "10");
rectangle.setAttributeNS(null, "y", "20");
rectangle.setAttributeNS(null, "width", "100");
rectangle.setAttributeNS(null, "height", "50");
rectangle.setAttributeNS(null, "fill", "red");

// 绑定 rectangle 到'svg'根元素.
svgRoot.appendChild(rectangle);
3.从一个SVG文件中创建一个Document
使用Batik,你也可以从一个URI,一个InputStream或者一个Reader中使用SAXSVGDocumentFactory
创建一个SVG DOM树。下面的例子将举例说明怎么从一个URI中使用SAXSVGDocumentFactory类来创建|
一个SVG document。
 
import java.io.IOException;

import org.apache.batik.dom.svg.SAXSVGDocumentFactory;
import org.apache.batik.util.XMLResourceDescriptor;

import org.w3c.dom.Document;

try {
    String parser = XMLResourceDescriptor.getXMLParserClassName();
    SAXSVGDocumentFactory f = new SAXSVGDocumentFactory(parser);
    String uri = "http://www.example.org/diagram.svg";
    Document doc = f.createDocument(uri);
} catch (IOException ex) {
    // ...
}
Batik是使用svg格式图片来实现各种功能的应用程序以及Applet提供的一个基于java的工具包。 通过Batik,你可以在JAVA可以使用的地方操作SVG文档,您还可以在你的应用程序使用Batik模块来生成 , 处理和转码SVG图像。Batik很容易让基于Java的应用程序或小程序来处理SVG内容。 例如,使用Batik的SVG的发生器模块 ,Java应用程序或小程序可以很轻松地导出SVG格式的图形到。 用Batik的SVG的查看组件 ,应用程序或小程序可以很容易地集成SVG的浏览和交互功能。 另一种可能性是使用Batik的模块转换成各种格式SVG的通过,如光栅图像(JPEG,PNG或TIFF格式 )或其它矢量格式(EPS或PDF格式 ,后两者由于转码器由Apache FOP提供 )。 Batik工程创建的目的是为开发者提供一系列可以结合或单独使用来支持特殊的svg解决方案的核心模块。模块主要有SVGParser,SVGGernerator,SVGDOM。Batik工程的其他目的是使它具有高度的扩展性。 从之前发布其他chm文件下载用户的反映看,有不少朋友反映下载后打开无法显示,这一般不是chm文件的问题,这里统一说明一下解决办法: 如果文件打开看不到右边的内容,是因为你的操作系统为了安全对下载的chm文件进行了锁定,只需要在打开前右键单击该chm文件选择“属性”,然后在“常规”选项卡的下方单击“解除锁定”按钮就可以了。如果还是不能看,请再查看一下你的chm文件所存储的目录或文件名是否有特殊字符如“#”号字符等,去掉特殊字符即可。
Batik是一个Java开发的SVG工具库,可以将SVG文件转换为各种图形格式,其中包括PDF。SVG(可缩放矢量图形)是一种基于XML语法的图形格式,旨在描述二维矢量图形。由于SVG是一种矢量图形格式,因此它可以无限缩放而不会失去其清晰度。而PDF(便携式文档格式)是一种跨平台的文档格式,旨在以可靠和可重复的方式呈现文档。 要将SVG文件转换为PDF文件,可以使用Batik库中的一个名为"Transcoder"的类。利用Transcoder,开发者可以轻松地将SVG文件转换为PDF格式。以下是一个使用Batik Transcoder的简单示例: 1. 导入Batik库: ```java import org.apache.batik.transcoder.Transcoder; import org.apache.batik.transcoder.TranscoderException; import org.apache.batik.transcoder.TranscoderInput; import org.apache.batik.transcoder.TranscoderOutput; import org.apache.batik.transcoder.pdf.PDFTranscoder; ``` 2. 创建一个Transcoder对象: ```java Transcoder transcoder = new PDFTranscoder(); ``` 3. 从SVG文件中创建一个TranscoderInput对象: ```java TranscoderInput input = new TranscoderInput(new FileInputStream(new File("input.svg"))); ``` 4. 从PDF文件中创建一个TranscoderOutput对象: ```java TranscoderOutput output = new TranscoderOutput(new FileOutputStream(new File("output.pdf"))); ``` 5. 执行转换: ```java try { transcoder.transcode(input, output); } catch (TranscoderException ex) { ex.printStackTrace(); } ``` 通过Batik库,将SVG文件转换为PDF文件变得非常简单。无论您是为Web应用程序创建静态图像还是将SVG图像添加到PDF文件中,Batik库都提供了功能强大而灵活的解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值