php導出pdf(二)

在導出pdf時遇到了一個問題,就是在頁面上用Highcharts畫出的圖如何導出到pdf上(不用Highcharts原生的導出pdf操作)

經過不斷的努力終於成功了

1.先在頁面上畫出highcharts圖

function drawlHighCharts(fdate,sdate,ydata,bdata,len){
	Highcharts.setOptions({ 
	    colors: ['#45A43E', '#BF0A0A'] 
	}); 
	var chart = new Highcharts.Chart({
		chart: { 
			renderTo: "jianbao",
            type: 'spline',
            marginBottom:30
		},
		title: {
            text: ''
        },
		xAxis: {
			categories: eval(fdate),
//			tickInterval:6,
			labels: {
            	step:len,
            	rotation: -10,
                align: 'right',
                style: {
                    fontSize: '8px',
                    fontFamily: 'Verdana, sans-serif'
                }
             }  
		},
		yAxis: {
			min:0,
			gridLineColor: "#f5f5f5"
		},
		tooltip: {
			crosshairs: true,
			shared: true
		},
		plotOptions: {
			spline: {
				lineWidth: 1,
				states: {
					hover: {
						lineWidth: 1
					}
				},
				marker: {
					enabled: false
				}
				
			}
		},
		
        legend : {
			layout : 'vertical',
			align : 'right',
			verticalAlign : 'top',
			x : 10,
			y : 30,
			borderWidth : 1,
			enabled : false
		},
		series: [{
			name: '預警',
			data: eval(ydata)

		}, {
			name: '報警',
			data: eval(bdata)
		}]
	});
}

2.Highcharts在頁面上是一個svg格式的xml,通過js取得svg內容,並使用Highcharts服務器生成圖片

function getHighCharts(pdf,type){
	var svg = $("#jianbao > div").html(); //document.getElementById("highcharts-4").innerHTML;
	$.ajax({
		url:'index.php?m=ExportPdf&a=getImage',
		type:'POST',
		data:{svg:svg,name:pdf},
		dataType:'text',
		success:function(data){
			if(data == '1'){
				//導出圖片到PDF
				exportImage(type,pdf);
			}
		}
	});
}

function exportImage(val,pdfname){
	$.ajax({
		url:'xxx.php?type='+val+'&pdfname='+pdfname,
		type:'GET',
		dataType:'text',
		success:function(data){
			if(data == '0'){
				alert("成功!");
			}
		}
	});
}

3.php實現向Highcharts提交svg數據並生成圖片

public function getImage(){
 		$path = 'd:/data';
                 if(!is_dir($path)) {
			mkdir($path);
		}
		$name = $_POST['name'];
		$svg = $_POST['svg'];
		$type = "image/jpeg";
		$url = "http://export.highcharts.com/";
		
		$postdata = http_build_query(
			array(
				'svg' => $svg,
				'type' => $type
			)
		);
		
		$opts = array('http' =>
			array(
				'method'  => 'POST',
				'header'  => 'Content-type: application/x-www-form-urlencoded',
				'content' => $postdata
			)
		);
		
		$context  = stream_context_create($opts);
		
		$result = file_get_contents($url, false, $context);
		file_put_contents($path.'/'.$name.'.jpg', $result);
		echo '1';
	
	}

4.最後再將圖片導出到pdf上
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章