自定义 Rhino 解释器
一个有用的Rhino解释器自定义的例子来自ECMAScript标准不提供任何预先确定的I/O设备来结合控制台的事实。无论如何,对于ECMAScript兼容语言来提供一个命名为打印输出信息到控制台的功能是非常通用的。在这我们将描述一个Batik Rhino 解释器自定义的例子来添加如下功能。
你应该首先将默认的Batik ECMAScript 解释器子集化以便象下边所示的那样添加功能import org.apache.batik.script.rhino.RhinoInterpreter;
import org.mozilla.javascript.Context;
import org.mozilla.javascript.Function;
import org.mozilla.javascript.Scriptable;
import org.mozilla.javascript.ScriptableObject;
import org.mozilla.javascript.PropertyException;
public class ExtendedRhinoInterpreter extends RhinoIntepreter {
public ExtendedRhinoInterpreter() {
// Array of functions to put in the global object.
final String[] names = { "print" }
try {
// Add the functions to the global object.
getGlobalObject().defineFunctionProperties
(names, ExtendedRhinoIntepreter.class,
ScriptableObject.DONTENUM);
} catch (PropertyException e) {
throw new Error(e);
}
}
public static void print(Context cx, Scriptable thisObj,
Object[] args, Function funObj) {
for (int i = 0; i < args.length; i++) {
if (i > 0) {
System.out.print(" ");
}
// Convert the ECMAScript value into a string form.
String s = Context.toString(args[i]);
System.out.print(s);
}
System.out.println();
}
}
现在,你需要告诉Batik使用这个解释器代替默认的那个。为了实现这个目的,你必须首先定义一个工厂来创建一个你的解释器实例。
import org.apache.batik.script.Interpreter;
import org.apache.batik.script.InterpreterFactory;
public class ExtendedRhinoInterpreterFactory implements InterpreterFactory {
public Interpreter createInterpreter() {
return new ExtendedRhinoInterpreter();
}
}
然后,你必须构建一个将使用这个工厂的IntepreterPool,并且在你的应用程序的 BridgeContext 上设定池
org.apache.batik.bridge.BridgeContext ctx = ...;
org.apache.batik.script.InterpreterPool pool =
new org.apache.batik.script.InterpreterPool();
pool.putInterpreterFactory("text/ecmascript",
new ExtendedRhinoInterpreterFactory());
ctx.setIntepreterPool(pool);
举个例子,如果你使用Batik SVG 浏览器程序,你应该可以使用在createBridgeContext()方法中的JSVGCanvas类中先前的代码片段。 更深的是用Rhino工作参考Rhino主页
分享到:
相关推荐
**Batik框架详解** Batik是Apache软件基金会开发的一个开源项目,主要专注于SVG(Scalable Vector Graphics)标准的实现。SVG是一种基于XML的矢量图形格式,它允许创建高质量、可缩放的图形,广泛应用于网页设计、...
5. **commons-io-1.3.1.jar**:Apache Commons IO是Java的实用工具库,提供了许多IO操作的便利功能,如文件操作、流操作等,对处理SVG资源和输出非常有用。 6. **commons-logging-1.2.jar**:Apache Commons ...
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-...
5. **SVG的动态渲染**: Batik的`BridgeContext`和`SVGGeneratorContext`类可以用于生成动态SVG。通过创建这些上下文对象,你可以控制SVG元素的生成过程,比如添加交互性或者根据运行时的数据动态改变图形。 6. **...
5. 基于XPath和XSLT的支持: Batik支持使用XPath查询SVG文档,并且可以结合XSLT进行文档转换。 6. 字体服务: Batik提供了字体子系统,支持SVG中的文本渲染,包括对嵌入式字体和外部字体的处理。 7. 基于Java的SVG...
**Batik相关jar包详解** 在Java开发中,Batik是一个非常重要的开源工具包,它由Apache软件基金会提供,主要用于处理SVG(Scalable Vector Graphics)格式的图像。SVG是一种基于XML的矢量图形标准,它允许开发者创建...
标题中的"batik-1.5-fop-0.20-5.zip"与描述中的重复信息表明,这里关注的是Apache Batik项目的一个特定版本,即1.5版的FOP( Formatting Object Processor)模块,版本号为0.20-5。FOP是Apache Batik的一部分,它是...
包括: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客户端程序** 在Java开发中,有时候我们需要处理SVG(Scalable Vector Graphics)这种矢量图格式的图像。SVG由于其可缩放性和清晰度,被广泛用于网页设计和图形用户界面。 Batik是Apache软件基金...
batik-all.jar
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-...
5. **SVG字体**: Batik包含了对SVG字体的支持,允许在SVG文档中使用自定义字体。 6. **Rasterizer**: Batik的Rasterizer工具可以将SVG图像转换为位图格式,如JPEG、PNG或TIFF,这对于在不支持SVG的环境中展示图形...
Batik是使用svg格式图片来实现各种功能的应用程序以及Applet提供的一个基于java的工具包。 通过Batik,你可以在JAVA可以使用的地方操作SVG文档,您还可以在你的应用程序使用Batik模块来生成 , 处理和转码SVG图像。...
5. **Rasterizer工具**: Batik的Rasterizer工具能够将SVG文件批量转换为位图图像,这在需要在不同设备上显示SVG内容时非常有用。 **Batik的架构与组件** Batik的架构分为多个模块,每个模块都专注于特定的任务:...
Batik 是为想使用 svg 格式图片来实现各种功能的应用程序和 Applet 提供的一个基于 java 的工具包。 工程创建的目的是为开发者提供一系列可以结合或单独使用来支持特殊的 svg 解决方案的核心模块。模块主要有 ...
import org.apache.batik.transcoder.Transcoder; import org.apache.batik.transcoder.TranscoderException; import org.apache.batik.transcoder.TranscoderInput; import org.apache.batik.transcoder....
org.apache.batik包 batik包,用于生成svg格式的文件,实现svg,swf转png ,提供word to html
Batik是为想使用svg格式图片来实现各种功能的应用程序和Applet提供的一个基于java的工具包。 工程创建的目的是为开发者提供一系列可以结合或单独使用来支持特殊的svg解决方案的核心模块。模块主要有SVGParser,...
org.apache.batik.transcoder-1.6.0.jar
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