使用JavaScript在word文件中导出带有HighChart Js的Html元素
我正在尝试将包含高位图表的html元素导出到word文件中。这是HTML代码:使用JavaScript在word文件中导出带有HighChart Js的Html元素,javascript,highcharts,Javascript,Highcharts,我正在尝试将包含高位图表的html元素导出到word文件中。这是HTML代码: <div> <div id="exportContent"> <h2> What is Lorem Ipsum?</h2> Lorem Ipsum is simply dummy text of the printing and typesetting industry.
<div>
<div id="exportContent">
<h2> What is Lorem Ipsum?</h2>
Lorem Ipsum is simply dummy text of the printing and typesetting industry.
<div id="container3">Placeholder for chart</div>
<br />
Test
</div>
<button onclick="Export2Doc('exportContent');">Export as .doc</button>
<br />
</div>
什么是Lorem Ipsum?
Lorem Ipsum只是印刷和排版行业的虚拟文本。
图表占位符
试验
导出为.doc
当我单击按钮时,它将调用javascript中的Export2Doc()方法,并将导出“exportContent”div的文本和高位图表。为此,我使用了以下javascript代码:
<script type="text/javascript">
$(function () {
$('#container3').highcharts({
title: {
text: 'Client-Side Download Example'
},
chart: {
type: 'area'
},
xAxis: {
categories: ['Jan', 'Feb', 'Mar']
},
series: [{
data: [29.9, 71.5, 106.4]
}]
});
});
function Export2Doc(element, filename = '') {
var preHtml = "<html><head><title>Export HTML To Doc</title></head><body>";
var postHtml = "</body></html>";
var svg = $('#container3').highcharts().getSVG();
var imageD1 = document.createElement('img');
imageD1.setAttribute("align", "middle");
imageD1.setAttribute("style", "text-align: center");
var width = parseInt(svg.match(/width="([0-9]+)"/)[1]), height = parseInt(svg.match(/height="([0-9]+)"/)[1]);
var canvas = document.createElement('canvas');
widthTemp = 500; //500
heightTemp = (height / width) * widthTemp;
canvas.setAttribute('width', widthTemp);
canvas.setAttribute('height', heightTemp);
canvas.getContext("2d").drawImage(canvas, 0, 0, widthTemp, heightTemp);
var image = "";
if (canvas.getContext && canvas.getContext('2d')) {
canvg(canvas, svg, {
ignoreDimensions: true,
scaleWidth: widthTemp,
scaleHeight: heightTemp
});
image = canvas.toDataURL("image/jpeg");
}
imageD1.src = image;
var doc2 = document.createElement("div");
doc2.appendChild(imageD1);
var html = preHtml + document.getElementById(element).innerHTML + "<br>"+ doc2.innerHTML + postHtml;
var blob = new Blob(['\ufeff', html], {
type: 'application/msword'
});
var url = 'data:application/vnd.ms-word;charset=utf-8,' + encodeURIComponent(html);
filename = filename ? filename + '.doc' : 'document.doc';
var downloadLink = document.createElement("a");
document.body.appendChild(downloadLink);
if (navigator.msSaveOrOpenBlob) {
navigator.msSaveOrOpenBlob(blob, filename);
} else {
downloadLink.href = url;
downloadLink.download = filename;
downloadLink.click();
}
document.body.removeChild(downloadLink);
}
</script>
$(函数(){
$(“#container3”)。高图({
标题:{
文本:“客户端下载示例”
},
图表:{
类型:“区域”
},
xAxis:{
类别:[一月、二月、三月]
},
系列:[{
数据:[29.9,71.5,106.4]
}]
});
});
函数Export2Doc(元素,文件名=“”){
var preHtml=“将HTML导出到文档”;
var postHtml=“”;
var svg=$('#container3').highcharts().getSVG();
var imageD1=document.createElement('img');
imageD1.setAttribute(“对齐”、“中间”);
设置属性(“样式”,“文本对齐:居中”);
var width=parseInt(svg.match(/width=“[0-9]+)”/)[1]),height=parseInt(svg.match(/height=“[0-9]+)”/)[1]);
var canvas=document.createElement('canvas');
宽度温度=500;//500
高度温度=(高度/宽度)*宽度温度;
canvas.setAttribute('width',widthTemp);
canvas.setAttribute('height',heightTemp);
canvas.getContext(“2d”).drawImage(canvas,0,0,widthTemp,heightTemp);
var image=“”;
if(canvas.getContext&&canvas.getContext('2d')){
canvg(画布、svg、{
忽略维度:对,
缩放宽度:宽度温度,
刻度高度:高度温度
});
image=canvas.toDataURL(“image/jpeg”);
}
imageD1.src=图像;
var doc2=document.createElement(“div”);
doc2.追加子项(图像D1);
var html=preHtml+document.getElementById(element.innerHTML+“
”+doc2.innerHTML+postHtml;
var blob=new blob(['\ufeff',html]{
键入:“应用程序/msword”
});
var url='data:application/vnd.ms word;charset=utf-8',+encodeURIComponent(html);
filename=filename?filename+'.doc':'document.doc';
var downloadLink=document.createElement(“a”);
document.body.appendChild(下载链接);
if(navigator.msSaveOrOpenBlob){
msSaveOrOpenBlob(blob,文件名);
}否则{
downloadLink.href=url;
downloadLink.download=文件名;
downloadLink.click();
}
document.body.removeChild(下载链接);
}
但是当我导出“exportContent”div的元素时,只导出文本。不会导出highchart。虽然在将highchart导出到word文件之前,我已经将highchart转换为svg格式,但它仍然不起作用您可以用代码发布一个示例JSFIDLE吗?您不能只导出图像并将其粘贴到word文件中?