apache 的batik生成svg文件和通过swing界面查看效果
apache的batik官网
Apache(tm) Batik SVG Toolkit - a Java-based toolkit for applications or applets that want to use images in the Scalable Vector Graphics (SVG)https://xmlgraphics.apache.org/batik/
maven依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.burns.batik.svg</groupId><artifactId>batik_svg_test1</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><dependencies><dependency><groupId>org.apache.xmlgraphics</groupId><artifactId>batik-all</artifactId><version>1.14</version></dependency><dependency><groupId>org.apache.xmlgraphics</groupId><artifactId>fop</artifactId><version>2.7</version></dependency></dependencies></project>
通过batik生成svg内容并通过界面展示生成效果
代码
package com.burns.batik.svg.test20220527_1;import org.apache.batik.anim.dom.SVGDOMImplementation;
import org.apache.batik.svggen.SVGGraphics2D;
import org.apache.batik.swing.JSVGCanvas;
import org.w3c.dom.DOMImplementation;
import org.w3c.dom.Element;
import org.w3c.dom.svg.SVGDocument;import javax.swing.*;
import java.awt.*;
import java.awt.geom.Line2D;
import java.io.OutputStreamWriter;
import java.io.Writer;public class ViewGeneratedSVGDemo1 {public static void main(String[] args) throws Exception{// Create an SVG document.DOMImplementation impl = SVGDOMImplementation.getDOMImplementation();String svgNS = SVGDOMImplementation.SVG_NAMESPACE_URI;SVGDocument doc = (SVGDocument) impl.createDocument(svgNS, "svg", null);// Create a converter for this document.SVGGraphics2D g = new SVGGraphics2D(doc);// Do some drawing.
// Shape circle = new Ellipse2D.Double(0, 0, 50, 50);
// g.setPaint(Color.red);
// g.fill(circle);
// g.translate(60, 0);
// g.setPaint(Color.green);
// g.fill(circle);
// g.translate(60, 0);
// g.setPaint(Color.blue);
// g.fill(circle);
// g.setPaint(Color.YELLOW);g.setPaint(Color.BLACK);
// g.fill(new Rectangle(10, 10, 100, 100));g.draw(new Rectangle(10, 10, 100, 100));g.draw(new Line2D.Float(110, 55, 200, 55));g.draw(new Rectangle(200, 10, 100, 100));g.setSVGCanvasSize(new Dimension(800, 300));// Populate the document root with the generated SVG content.Element root = doc.getDocumentElement();g.getRoot(root);//输出svg内容boolean useCSS = true; // we want to use CSS style attributesWriter out = new OutputStreamWriter(System.out, "UTF-8");g.stream(out, useCSS);// Display the document.JSVGCanvas canvas = new JSVGCanvas();JFrame f = new JFrame();f.getContentPane().add(canvas);canvas.setSVGDocument(doc);f.pack();f.setVisible(true);}
}
运行后效果
通过batik生成svg文件内容,并查看内容,我这里是输出到控制台,然后把内容复制放到svg文件中查看的效果
代码
package com.burns.batik.svg.test20220527_1;import org.apache.batik.anim.dom.SVGDOMImplementation;
import org.apache.batik.dom.GenericDOMImplementation;
import org.apache.batik.svggen.SVGGraphics2D;
import org.apache.batik.swing.JSVGCanvas;
import org.w3c.dom.DOMImplementation;
import org.w3c.dom.Document;
import org.w3c.dom.svg.SVGDocument;import javax.swing.*;
import java.awt.*;
import java.awt.geom.Line2D;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;public class TestSVGGen {public void paint(Graphics2D g) {
// g2d.setPaint(Color.red);
// g2d.fill(new Rectangle(10, 10, 100, 100));g.setPaint(Color.BLACK);
// g.fill(new Rectangle(10, 10, 100, 100));g.draw(new Rectangle(10, 10, 100, 100));g.draw(new Line2D.Float(110, 55, 200, 55));g.draw(new Rectangle(200, 10, 100, 100));g.draw(new Line2D.Float(155, 55, 155, 155));g.draw(new Rectangle(105, 155, 100, 100));}public static void main(String[] args) throws IOException {// Get a DOMImplementation.DOMImplementation domImpl =GenericDOMImplementation.getDOMImplementation();DOMImplementation domImpl1 =SVGDOMImplementation.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 attributesWriter out = new OutputStreamWriter(System.out, "UTF-8");svgGenerator.stream(out, useCSS);// Display the document.
// JSVGCanvas canvas = new JSVGCanvas();
// JFrame f = new JFrame();
// f.getContentPane().add(canvas);
// canvas.setSVGDocument((SVGDocument) document);
// f.pack();
// f.setVisible(true);}
}
运行后控制台输出
把内容复制放到svg文件
用浏览器查看svg文件
apache 的batik生成svg文件和通过swing界面查看效果相关推荐
- Apache batik 转换svg文件为jpeg/png/pdf
所需主要架包: <!-- https://mvnrepository.com/artifact/org.apache.xmlgraphics/batik-transcoder -->< ...
- java使用batik转换svg文件
svg是一种矢量图片格式,用来保存高保真的图片.我们可以用编辑器打开svg,我们可以看到svg文件其实就是一个xml文件,这种文件浏览器也可以识别.因此要查看svg用现成的浏览器就可以了.值得庆幸的是 ...
- python 绘制图表生成svg文件_python用Pygal如何生成漂亮的SVG图像详解
前言 SVG可以算是目前最最火热的图像文件格式了,它的英文全称为Scalable Vector Graphics,意思为可缩放的矢量图形.它是基于XML(Extensible Markup Langu ...
- 在线生成.SVG文件
原因:设计网站为了在不同分辨率的手机上达到最佳显示效果,就将图片转换成SVG矢量图,就上网找到了在线工具 1.SVG在线编译器 2.导入图片,再导出图片即可获得SVG文件
- 使用Batik操作SVG
Batik简介 Batik是为想使用SVG来实现各种功能的应用程序的JAVA工具包.通过Batik,可以在任何使用JAVA的地方操作SVG文档,也可以利用Batik模块来在应用程序中或者Applet中 ...
- 【嵌入式基础】Keil下编译代码并生成HEX文件
目录 一.Keil环境搭建 1.百度网盘分享下载 2.Keil安装 3.注册 4.支持包安装 二. 在Keil环境下创建新项目 1.创建新项目 2.命名新文件编辑 3.芯片选择和环境配置 4.添加源 ...
- 使用Apache XML项目FOP生成PDF文件(上)
使用Apache XML项目FOP生成PDF文件(上) 一.前言:在项目中遇到要把文档保存成PDF文件,在网上找了很久之方面的资料,终于发现了Apache的FOP项目有这个功能. 二.适合读者对象:想 ...
- android 生成 资源文件,SVG-Android开源库——SVG生成Vector资源文件的编辑预览工具...
Vector矢量图在Android项目中的利用愈来愈广泛,但是如果你想用Android Studio自带的工具将SVG图片转化成Vector资源文件却是相当麻烦,首先能支持的SVG规范较少,其次操作流 ...
- Aspose-Cells结合Apache POI生成excel文件以及转换为pdf
最近有个需求是需要将数据库中的符合条件的交易流水导出生成为excel,并转换为pdf,提供给客户下载,客户下载核对并签章. 需要用到的jar包依赖: <dependency><gro ...
- 1./app/logs/ 里面的日志只保留7天的(apache每天生成一个文件)
2019独角兽企业重金招聘Python工程师标准>>> 1./app/logs/ 里面的日志只保留7天的(apache每天生成一个文件) [root@centos6 ~]# vi ...
最新文章
- python3 中 is, is not ,==, != 的区别
- 习题1.9 有序数组的插入 (20 分)
- rabbitmq之partitions
- 数据增强,将数据增强后保存到本地
- 【赠书】新手速递!深度学习视频理解!
- Python3引号创建字符串
- java 简单事件的使用,如何正确的使用Java事件通知(1)
- 在html中标题字号一共有几种,HTML中常用的几种标签
- 基于自然语言识别下的流失用户预警
- 如何批量将 Txt 文本文档转换为 xlsx 格式的 Excel 文档
- 《人工智能:一种现代的方法》读书笔记之 智能Agent
- 2019CBA全明星周末举行正赛 南方明星队获胜
- 电路原理图(SCH)相关知识详解
- 【AR\VR开发基础】GLSL初步学习①
- MRS IoTDB时序数据库的总体架构设计与实现
- 珍惜在天堂和地狱溜达的每一天
- C语言简易程序设计————20、寻找完数
- 【转】如何让后端主动给web前端发数据
- CentOS删除文件且不删除/目录下所有
- 网络安全是怎样练成的.4——我们要到哪里去