Batik - 将svg转换成其他格式图片或PDF - [导出服务器配置] 导出服务器原理解析
Highcharts图表导出(或下载)本质上是将SVG代码转换为不同文件格式的过程,用到的工具是batik,所以所谓导出服务器,只不过是调用batik,将SVG代码转换并下载。下图说明此过程
图1-Highcharts导出服务器实现过程
所以配置导出服务器,关键是学习如何调用batik。
有image/png、image/jpeg、image/tiff、application/pdf可选
一、SVG
SVG即可缩放矢量图形,标准由W3C制定。Highcharts图表在现代浏览器上都是以SVG形式展现。下图为用浏览器调试工具查看图表内容
图2-Highcharts在页面上展现形式
如何获取Highcharts的SVG代码
通过调用Highcharts提供的getSVG()函数,即可获取图表的SVG代码,实例代码如下
|
1
2
|
var chart = $( '#container' ).highcharts();
var svg = chart.getSVG();
|
其结果为:
图3-获取Highcharts图表的SVG代码
二、Batik
Batik是将SVG转换为常见图形文件的工具,其开发语言是Java。
Batik官网: http://xmlgraphics.apache.org/batik/
1、Batik下载
通过 http://mirrors.cnnic.cn/apache/xmlgraphics/batik/下载batik-1.7.zip ,可以得到全部的jar包。
2、Batik使用(通过cmd命令测试)
1)新建test目录,如D:\\test\
2)复制Batik所需的jar包,分别是batik-1.7.zip里的batik-rasterizer.jar及lib目录
3)获取任意图表的SVG代码,并保存为 test.svg,保存过程中请保证test.svg文件的编码为utf-8,否则会出错。(获取SVG代码的方法请参考上文)
检测SVG文件可用的方法是用浏览器打开,如下图所示
图4-浏览器打开.svg文件
此时,test目录的文件结构为:(所有文件在后面提供下载)
图5-测试目录文件结构
4)cd到test目录,执行java -jar batik-rasterizer.jar-m image/png test.svg,如图
此时test目录就会生成test.png
图7-测试成功生成PNG文件
测试成功!
同样的,运行相应的命令即可实现将SVG转换为JPG、PDF文件。下面说明执行java - jar batik-rasterizer.jar命令的参数
3、Batik参数
上述执行命令java -jar batik-rasterizer.jar -m image/png test.svg等用到的参数命令都可以在文档中查到,主要用到的参数如下
| 参数 | 含义及取值 |
| -d | 指定生成文件的路径或文件名,不设置则生成在当前目录下 |
| -m | 指定转换类型,有image/png、image/jpeg、image/tiff、application/pdf可选 |
| -w | 指定生成文件宽度 |
| -h | 指定生成文件高度 |
| -font-family | 指定字体 |
更多参数请参考 http://xmlgraphics.apache.org/batik/tools/rasterizer.html
三、动态语言调用Batik
1、PHP调用Batik
PHP通过exec函数调用系统命令,从而调用Batik,命令和cmd一样,其关键代码如下:
|
1
2
|
define ( 'BATIK_PATH' , 'batik-rasterizer.jar' );
$output = shell_exec( "java -jar " . BATIK_PATH . " $typeString -d $outfile $width temp/$tempName.svg" );
|
PHP配置导出服务器过程详见 《 Highcharts导出服务器配置——PHP版》
2、JAVA调用Batik
Java通过调用org.apache.batik.apps.rasterizer.SVGConverter类提供的方法即可实现图像转换,本站将详细说明Java配置导出服务器的过程。
3、ASP.net调用Batik
Asp.Net调用Batik的方法和PHP类似,通过调用系统命令形式。
四、资源下载
此次测试所用到的所有文件已打包并提供下载。
百度网盘: http://pan.baidu.com/s/1i3spVVJ
备注:
出现乱码可能原因:
1.字符编码
2.操作系统是否有中文库
Batik - 将svg转换成其他格式图片或PDF - [导出服务器配置] 导出服务器原理解析的更多相关文章
- FFMpeg笔记(一) 使用FFmpeg将任意格式图片转换成任意格式图片
void SrcToDest(char* pSrc, char* pDest,unsigned int nSrcWidth, unsigned int nSrcHeight, AVPixelForma ...
- 如何将.jpg图片 转换成.eps 格式图片
在使用latex写作论文的时候,需要插入一些图片,但是往往有些图片不是eps格式的.虽然网上有如何插入jpg格式的图片方法,但是经过我实验后发现都不太管用.最后找到一个比较靠谱的方法,使用latx本身 ...
- centos下 将(jgp、png)图片转换成webp格式
由于项目要求需要将jpg.png类型的图片 转换成webp格式,最开始使用了php gd类库里 imagewebp 方法实现,结果发现转换成的webp格式文件会偶尔出现空白内容的情况.像创建了一个透 ...
- JAVA:借用OpenOffice将上传的Word文档转换成Html格式
为什么会想起来将上传的word文档转换成html格式呢?设想,如果一个系统需要发布在页面的文章都是来自word文档,一般会执行下面的流程:使用word打开文档,Ctrl+A,进入发布文章页面,Ctrl ...
- OpenOffice Word文档转换成Html格式
为什么会想起来将上传的word文档转换成html格式呢?设想,如果一个系统需要发布在页面的文章都是来自word文档,一般会执行下面的流程:使用word打开文档,Ctrl+A,进入发布文章页面,Ctrl ...
- 实现同时将一批.bmp文件转换成.mat格式
%% 功能:实现同时对一批.bmp文件的转换成.mat格式PicFormat = {'*.bmp','Bitmap image (*.bmp)';... '*.jpg','JPEG image (*. ...
- asp.net dataTable转换成Json格式
/// <summary> /// dataTable转换成Json格式 /// </summary> /// <param name="dt"> ...
- [jquery]将当前时间转换成yyyymmdd格式
如题: function nowtime(){//将当前时间转换成yyyymmdd格式 var mydate = new Date(); var str = "" + mydate ...
- [转] 将DOS格式文本文件转换成UNIX格式
点击此处阅读原文 用途说明 dos2unix命令用来将DOS格式的文本文件转换成UNIX格式的(DOS/MAC to UNIX text file format converter).DOS下的文本文 ...
随机推荐
- GitHub详细教程
GitHub详细教程 Table of Contents 1 Git详细教程 1.1 Git简介 1.1.1 Git是何方神圣? 1.1.2 重要的术语 1.1.3 索引 1.2 Git安装 1.3 ...
- 微信分组群发图文40152,微信分组群发图文invalid group id hint
微信分组群发40152,微信分组群发invalid group id hint >>>>>>>>>>>>>>> ...
- springmvc获得项目根目录(绝对路径)
原文:http://www.bubuko.com/infodetail-790547.html 在项目中有时候我们需要记录日志或者上传图片,需要知道项目的具体路径,如果项目中使用了spring,那么获 ...
- git 分布式版本控制了解
今天也来了解一下这个版本控制神器,下面了解一些词语的意思 先说集中式版本系统,版本库是集中放在中央服务器的,干活的时候,都是用自己的电脑,从中央处理器取得最新的版本,干完活后,在把自己的活推送给服务器 ...
- java 子类重写父类的方法应注意的问题
若想实现一个合格重写方法,而不是重载,那么必须同时满足下面的要求! A.重写规则之一: 重写方法不能比被重写方法限制有更严格的访问级别.(但是可以更广泛,比如父类方法是包访问权限,子类的重写方法 ...
- xml--小结③DTD的基本语法(看懂即可)
四.DTD的基本语法(看懂即可)1.DTD:Document Type Definition2.作用:约束XML的书写规范.3.DTD文件保存到磁盘时,必须使用UTF-8编码 4.如何引入外部的DTD ...
- C#中隐式类型本地变量var
在新接触的项目中,看到很多声明变量时用var.只记得在javascript中声明变量用var.今天在家里看C#和.Net高级编程,看到隐式变量这一块,就总结一下C# 中隐式变量var的用法. 1.C# ...
- jquery validation插件
jQuery Validate验证框架详解 jQuery校验官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation 一.导 ...
- oracle sqlldr控制文件模板
Sqlldr userid=lgone/tiger control=a.ctl LOAD DATA INFILE 't.dat' // 要导入的文件 // INFILE 'tt.date' // 导入 ...
- 利用def生成dll文件
DLL中导出函数的声明有两种方式:一种为在函数声明中加上__declspec(dllexport),这里不再举例说明:另外一种方式是采用模块定义(.def) 文件声明,.def文件为链接器提供了有关被 ...