`

Batik - 将svg转换成其他格式图片或PDF - [导出服务器配置] 导出服务器原理解析

 
阅读更多
导出服务器原理解析

Highcharts图表导出(或下载)本质上是将SVG代码转换为不同文件格式的过程,用到的工具是batik,所以所谓导出服务器,只不过是调用batik,将SVG代码转换并下载。下图说明此过程

<ignore_js_op style="word-wrap: break-word;"> 
图1-Highcharts导出服务器实现过程


所以配置导出服务器,关键是学习如何调用batik。

有image/png、image/jpeg、image/tiff、application/pdf可选
一、SVG

SVG即可缩放矢量图形,标准由W3C制定。Highcharts图表在现代浏览器上都是以SVG形式展现。下图为用浏览器调试工具查看图表内容

<ignore_js_op style="word-wrap: break-word;"> 
图2-Highcharts在页面上展现形式

如何获取HighchartsSVG代码
通过调用Highcharts提供的getSVG()函数,即可获取图表的SVG代码,实例代码如下

[JavaScript] 纯文本查看 复制代码
1
2
var chart = $('#container').highcharts();
var svg = chart.getSVG();


其结果为:

<ignore_js_op style="word-wrap: break-word;"> 
图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包。

2Batik使用(通过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文件可用的方法是用浏览器打开,如下图所示

<ignore_js_op style="word-wrap: break-word;"> 
图4-浏览器打开.svg文件


    此时,test目录的文件结构为:(所有文件在后面提供下载)

<ignore_js_op style="word-wrap: break-word;"> 
图5-测试目录文件结构

4)cd到test目录,执行java -jar batik-rasterizer.jar-m image/png test.svg,如图

<ignore_js_op style="word-wrap: break-word;">
图6-测试命令及结果

此时test目录就会生成test.png

<ignore_js_op style="word-wrap: break-word;"> 
图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一样,其关键代码如下:

[PHP] 纯文本查看 复制代码
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版

2JAVA调用Batik
Java通过调用org.apache.batik.apps.rasterizer.SVGConverter类提供的方法即可实现图像转换,本站将详细说明Java配置导出服务器的过程。

3ASP.net调用Batik
Asp.Net调用Batik的方法和PHP类似,通过调用系统命令形式。

四、资源下载
此次测试所用到的所有文件已打包并提供下载。
百度网盘:http://pan.baidu.com/s/1i3spVVJ

分享到:
评论

相关推荐

    batik将svg转成图片,并用itext将图片写在pdf里

    本话题主要涉及两个关键工具:Batik和iText,它们分别用于SVG到图片的转换和图片插入PDF的操作。让我们详细了解一下这两个工具及其使用方法。 首先,Batik是Apache软件基金会开发的一个开源项目,它是一个基于Java...

    php+batik 实现导出highchart图片功能

    然后,利用Batik的`SVGGraphics2D`和`RenderingHints`等类,将SVG文件渲染为PNG或其他位图格式。 5. **保存并返回图片**:将生成的位图图像保存到服务器,并返回URL或Base64编码的图片数据给前端。 在这个过程中,...

    HighCharts导出的Servlet

    10. `batik-codec.jar`:包含了图像编码和解码的工具,可能用于将SVG转换为其他图像格式。 在实现HighCharts导出Servlet的过程中,开发者会使用到这些Batik库,通过SVG渲染引擎将HighCharts生成的SVG字符串转换为...

    Batik 1.7 API CHM格式

    另一种可能性是使用Batik的模块转换成各种格式SVG的通过,如光栅图像(JPEG,PNG或TIFF格式 )或其它矢量格式(EPS或PDF格式 ,后两者由于转码器由Apache FOP提供 )。 Batik工程创建的目的是为开发者提供一系列...

    Jaspersoft生成条形码所需jar包

    `batik-bridge`模块主要处理SVG到其他格式(如PDF)的转换,确保条形码在PDF中的清晰度和可缩放性。 要使用这些库,你需要在Java项目的类路径中添加这两个jar文件。如果你使用的是Maven或Gradle,可以在pom.xml或...

    javaHighcharts 导出图表的batik 等资源包

    javaHighcharts 导出图表引用的资源包 import org.apache.batik.transcoder.Transcoder; import org.apache.batik.transcoder.TranscoderException; import org.apache.batik.transcoder.TranscoderInput; import...

    用flying saucer将html生成pdf的例子

    【flying saucer】是一个开源项目,主要用于将HTML文档转换为PDF、PostScript或SVG等格式,以便于打印或者分发。它支持多种CSS样式,能够很好地保持HTML页面的原始布局和设计。在Web开发中,这个工具尤其有用,因为...

    highcharts相关的包,batik相关包

    2. **batik-svggen.jar**:SVG Generator是Batik的一部分,用于将Java图形(如Java2D API绘制的图形)转换为SVG格式。在Highcharts的场景下,如果需要将图表以SVG形式导出,这个库可能会被用到。 3. **batik-codec....

    batikall1.7.jar包官方免费版

    batikall1.7.jar包是一款非常实用的jar包,是在java开发中经常用到的jar包,如果没有batikall1.7.jar包,java lib或php... 处理highcharts导出图片出现中文乱码所用到的jar包,Batik是一个基于Java技术的SVG(可扩展矢

    highcharts本地导出图片_服务端代码

    这些JAR包通常包括用于处理SVG到其他格式转换的工具库,例如Batik(Apache的一个项目,提供了强大的SVG支持)。 #### 修改Exporting.js中的URL 为了确保图表能够正确地在本地服务器上导出,我们需要修改Highcharts...

    用java实现word统计报表和图形统计的导出

    首先,我们需要创建一个JFreeChart对象,配置其数据源,样式,然后将其转换为图片流,以便于插入到Word文档中。 例如,创建一个简单的柱状图: ```java import org.jfree.chart.ChartFactory; import org.jfree....

    amcharts 图片导出格式解读

    这篇博客文章“amcharts 图片导出格式解读”探讨了如何利用AmCharts的功能将图表导出为图片,这对于报告、分享或离线查看很有用。本文将深入讲解这一功能的实现原理,并通过`ChartImageExporter.java`这个源码文件来...

    史上最全的SVG例子

    阿生空间.mht`、`Batik(四)---3-涛涛 - 新浪BLOG.mht`:这些MHT文件是关于SVG和Batik技术的文章或教程, Batik是Apache软件基金会的一个项目,提供了一套处理SVG的工具集,包括将SVG转换为其他图像格式、渲染SVG到...

    highcharts-图表导出到word 代码.docx

    2. `batik-transcoder`:Apache Batik的转换器模块,用于将SVG(Scalable Vector Graphics)转换为其他格式,如PDF或图片。 3. `xml-apis-ext` 和 `xercesImpl`:这两个库提供了XML处理的API,用于解析和操作XML数据...

    WMFTOPNG.zip

    Batik也提供了这样的功能,通过其`SVGTranscoder`类,可以将SVG图像转换为PNG、JPEG或其他位图格式。在转换过程中,可以指定输出图像的尺寸、质量等参数。 **项目结构与运行** `WMFTOPNG.zip`压缩包内的文件可能...

    batik-开源

    1. **SVG渲染引擎**: Batik的SVG渲染引擎能够将SVG文档转换成像素图像,可以在Java AWT或Swing组件中显示,或者导出为位图格式(如JPEG、PNG)。 2. **SVG解析器**:负责读取SVG文件并将其转换为内部表示,以便...

    hightcharts导出svg图到excel中所用到的jar包.rar

    xercesImpl-2.12.1.jar xml-apis-1.4.01.jar xml-apis-ext-1.3.04.jar xmlgraphics-commons-2.6.jar batik-all-1.7.jar batik-dom-1.7.jar poi-ooxml-4.1.0.jar poi-4.1.0.jar

    java:将html生成图片的所有方法比较

    - 优点:Batik是Apache的一个项目,可以将SVG(Scalable Vector Graphics)转换为位图图像。如果HTML可以被转换为SVG,这种方法可以获得高质量的结果。 - 缺点:不适用于非SVG的HTML,且HTML到SVG的转换可能不准确...

    SVGEditor1.3源代码

    Batik是Apache软件基金会的一个项目,提供了一个完整的SVG生态系统,包括解析、渲染、转换和生成SVG文档的工具。在SVGEditor中,GLIPS引擎负责解析SVG文件,将它们转化为可交互的图形对象,并实现编辑操作。 3. **...

Global site tag (gtag.js) - Google Analytics