Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在隐藏DIV上渲染Chartjs_Javascript_Charts_Chart.js_Chartjs 2.6.0 - Fatal编程技术网

Javascript 在隐藏DIV上渲染Chartjs

Javascript 在隐藏DIV上渲染Chartjs,javascript,charts,chart.js,chartjs-2.6.0,Javascript,Charts,Chart.js,Chartjs 2.6.0,我试图在一个隐藏的div上呈现许多图表,然后将它们转换为图像以在PDF报告中使用 我的问题是:如果图表没有在DOM上呈现,我就无法捕获它并在画布上绘制它。在显示图表之前,它不会渲染。我曾尝试使用chart.js中的draw和render方法,但它们没有产生预期的结果 下面是我的HTML示例: 以及我对应的JavaScript: var canvas:any=document.getElementById('myChart'); var ctx:any=canvas.getContext('2

我试图在一个隐藏的div上呈现许多图表,然后将它们转换为图像以在PDF报告中使用

我的问题是:如果图表没有在DOM上呈现,我就无法捕获它并在
画布上绘制它。在显示图表之前,它不会渲染。我曾尝试使用
chart.js
中的
draw
render
方法,但它们没有产生预期的结果

下面是我的HTML示例:


以及我对应的JavaScript:

var canvas:any=document.getElementById('myChart');
var ctx:any=canvas.getContext('2d');
var图表=新图表(ctx{
//我们要创建的图表类型
键入:“行”,
//我们的数据集的数据
数据:{
标签:[“一月”、“二月”、“三月”、“四月”、“五月”、“六月”、“七月”],
数据集:[{
标签:“我的第一个数据集”,
背景颜色:“rgb(255,99,132)”,
边框颜色:“rgb(255,99,132)”,
数据:[0,10,5,2,20,30,45]
}]
},
//配置选项在这里
选项:{}
});
for(Chart.instances中的变量id){
Chart.instances[id].resize();
Chart.instances[id].draw('1s');
Chart.instances[id].render('1s');
console.log(Chart.instances[id].toBase64Image());
}

有没有办法在不显示图表的情况下手动渲染图表,然后将输出捕获为图像?

最快的方法是替换:

<div style="display: none;">


它将起作用:)


PS:如果需要渲染图表服务器端(例如在批处理中),以便将其嵌入PDF报告中,那么您可能需要考虑专用服务,如

这与角度有什么关系?@ Dean My Bad,错误标记,它是按角度编码的,但不适用,现在,具体地说,正在发生什么?你有错误吗?图像是否出现但有误?看一看。另外,在我的头顶上,您可能可以在可见但不在视口中的画布上渲染它。@用于渲染图表的画布始终在0的高度和宽度上,并且当我尝试从图表中获取base64值时,该画布为空
<div style="position:absolute;left:-9999px;top:-9999p">