在導出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上