`
tw198611
  • 浏览: 18007 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

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

    博客分类:
  • php
阅读更多
最近有个导出需求需要将highchart的图片和数据报表一起生成。
折腾了几天,终于搞定。
1、首先你需要安装JAVA环境。不需要设置环境变量什么的。
2、下载相关的batik jar包,这个我下载了好多次都是错误的。附件里面有我整理好的。
3、调用官方写的PHP程序,我整理成一个函数了。
function svgToImg($type, $svg, $filename){
	clearFile(SAVE_PATH);//删除过期文件
	ini_set('magic_quotes_gpc', 'off');
	$svg = (string) $svg;
	$filename = (string) $filename;
	
	// prepare variables
	if (!$filename or !preg_match('/^[A-Za-z0-9\-_ ]+$/', $filename)) {
		$filename = 'chart';
	}
	if (get_magic_quotes_gpc()) {
		$svg = stripslashes($svg);
	}
	// check for malicious attack in SVG
	if(strpos($svg,"<!ENTITY") !== false || strpos($svg,"<!DOCTYPE") !== false){
		exit("Execution is stopped, the posted SVG could contain code for a malicious attack");
	}
	
	$tempName = md5(rand());
	
	// allow no other than predefined types
	if ($type == 'image/png') {
		$typeString = '-m image/png';
		$ext = 'png';
	
	} elseif ($type == 'image/jpeg') {
		$typeString = '-m image/jpeg';
		$ext = 'jpg';
	
	} elseif ($type == 'application/pdf') {
		$typeString = '-m application/pdf';
		$ext = 'pdf';
	
	} elseif ($type == 'image/svg+xml') {
		$ext = 'svg';
	
	} else { // prevent fallthrough from global variables
		$ext = 'txt';
	}
	
	$outfile = SAVE_PATH.$tempName.'.'.$ext;
	
	if (isset($typeString)) {
	
		// size
		$width = '';
		if ($_POST['width']) {
			$width = (int)$_POST['width'];
			if ($width) $width = "-w $width";
		}
	
		// generate the temporary file
		if (!file_put_contents(SAVE_PATH."$tempName.svg", $svg)) {
			die("Couldn't create temporary file. Check that the directory permissions for
			the /temp directory are set to 777.");
		}

		if(IS_WIN){
			$output = shell_exec("java -jar ". BATIK_PATH ." $typeString -d $outfile $width ".SAVE_PATH."$tempName.svg");
		}else{
			$output = shell_exec("/usr/local/jdk1.8.0_66/bin/java -jar ". BATIK_PATH ." $typeString -d $outfile $width ".SAVE_PATH."$tempName.svg");
		}
		 

		// catch error
		if (!is_file($outfile)) {
 			echo "<pre>$output</pre>";
			echo "Error while converting SVG. ";

		}
		else {
			return $outfile;
		}
		
	} else if ($ext == 'svg') {
		header("Content-Disposition: attachment; filename=\"$filename.$ext\"");
		header("Content-Type: $type");
		echo $svg;
	
	} else {
		echo "Invalid type";
	}
} 

文件保存到本地,然后就可以随便搞了。
你要是实在嫌安装JAVA环境麻烦,可以直接模拟提交请求官方的导出地址。然后会返回一个图片名称,你可以下载下来,服务器会保存30个小时,具体可以参考
http://www.highcharts.com/docs/export-module/export-module-overview
http://jsfiddle.net/6h8o16g0/
你只要按他的格式传递给他SVG参数就可以了。
分享到:
评论

相关推荐

    javaHighcharts 导出图表的batik 等资源包

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

    highcharts相关的包,batik相关包

    这里面有highcharts开发用到相关包,如:batik-xml.jar,batik-svggen.jar,batik-codec.jar,等等包,整理后的完整包,都在这里。

    Batik 1.7 API CHM格式

    Batik是使用svg格式图片来实现各种功能的应用程序以及Applet提供的一个基于java的工具包。 通过Batik,你可以在JAVA可以使用的地方操作SVG文档,您还可以在你的应用程序使用Batik模块来生成 , 处理和转码SVG图像。...

    batik相关 jar包大全

    Batik是为想使用svg格式图片来实现各种功能的应用程序和Applet提供的一个基于java的工具包, 包括:batik-all-1.11.jar,batik-anim-1.11.jar,batik-codec-1.11.jar,batik-constants-1.11.jar,batik-svgbrowser-1.11....

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

    NULL 博文链接:https://narutolby.iteye.com/blog/1605814

    apache Batik.zip

    Batik库

    Batik详细教程

    Batik 是为想使用 svg 格式图片来实现各种功能的应用程序和 Applet 提供的一个基于 java 的工具包。 工程创建的目的是为开发者提供一系列可以结合或单独使用来支持特殊的 svg 解决方案的核心模块。模块主要有 ...

    batik-1.13.rar

    Batik 是为想使用 svg 格式图片来实现各种功能的应用程序和 Applet 提供的一个基于 java 的工具包。

    batik-1.7batik-1.7batik-1.7

    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

    Eclipse 的svg插件batik-plugin

    Batik是为想使用svg格式图片来实现各种功能的应用程序和Applet提供的一个基于java的工具包。 工程创建的目的是为开发者提供一系列可以结合或单独使用来支持特殊的svg解决方案的核心模块。模块主要有SVGParser,...

    batik框架 jar包

    batik可以实现JAVA画SVG图,也可以将后台生成图表转换成png格式图片。配合iText等打印技术,可以实现word打印各类分析图表的功能。

    batik 2.7 jars

    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-...

    batik-all-1.6

    处理highcharts导出图片出现中文乱码所用到的jar包

    基于Batik的java客户端程序

    在java环境下,用Batik加载显示svg图片

    batik所有架包.rar

    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-...

    FractalKoch.svg

    java+opencv+batik 绘制Koch雪花并保存为SVG格式图片,感兴趣的同学可以下载看看效果~

    batik的相关jar包

    包括batik-all-1.6.jar、fop-0.20.5.jar、pdf-transcoder.jar、xerces-1.2.3.jar等相关jar包

    batik-all.jar

    batik-all.jar

    batik-all-1.7.jar

    batik-all-1.7.jar包含了batik-1.7.jar

Global site tag (gtag.js) - Google Analytics