Javascript 将Highcharts导出到jsPDF-canvg错误

Javascript 将Highcharts导出到jsPDF-canvg错误,javascript,canvas,highcharts,jspdf,canvg,Javascript,Canvas,Highcharts,Jspdf,Canvg,我正在寻找一个关于highcharts导出到PDF与jsPDF的解决方案。 我使用此解决方案将图形作为图像导出到pdf-> 它工作正常,但对于某些图形,由于以下错误,我无法生成图像: Uncaught TypeError: undefined is not a function -- canvg.js:2000 svg.Element.text.getAnchorDelta -- canvg.js:2010 svg.Element.text.renderChild -- canvg.js:198

我正在寻找一个关于highcharts导出到PDF与jsPDF的解决方案。 我使用此解决方案将图形作为图像导出到pdf->

它工作正常,但对于某些图形,由于以下错误,我无法生成图像:

Uncaught TypeError: undefined is not a function -- canvg.js:2000
svg.Element.text.getAnchorDelta -- canvg.js:2010
svg.Element.text.renderChild -- canvg.js:1989
svg.Element.text.renderChildren -- canvg.js:679
svg.Element.ElementBase.render -- canvg.js:698
svg.Element.ElementBase.renderChildren -- canvg.js:679
svg.Element.ElementBase.render -- canvg.js:698
svg.Element.ElementBase.renderChildren -- canvg.js:679
svg.Element.ElementBase.render -- canvg.js:2723
svg.loadXmlDoc.draw -- canvg.js:2733
svg.loadXmlDoc -- canvg.js:2646
svg.loadXml -- canvg.js:62
canvg -- indicateurs.js:3237
$.bind.H.Chart.createCanvas -- indicateurs.js:3171
(anonymous function) -- jquery-1.10.2.min.js:4
x.extend.each -- indicateurs.js:3164
_indicateurs.hightcharts.graph_to_pdf -- indicateurs.js:3262
(anonymous function) -- jquery-1.10.2.min.js:5
x.event.dispatch -- jquery-1.10.2.min.js:5
x.event.add.v.handle
下面是抛出错误的canvas方法(canvg.js):

this.getAnchorDelta=函数(ctx、父级、startI){
var textAnchor=this.style('text-anchor')。valuerDefault('start');
如果(textAnchor!=“开始”){
var宽度=0;
for(var i=startI;i startI&&child.attribute('x').hasValue())break;//新建组
宽度+=子.measureTextRecursive(ctx);//此行上的问题
}
返回-1*(textAnchor=='end'?宽度:宽度/2.0);
}
返回0;
}

关于可能导致此错误的原因有什么初步想法吗?

使用此bower软件包:

"canvg-gabelerner": "*"
并确保包含以下3个依赖项:

<script src="bower_components/canvg-gabelerner/rgbcolor.js"></script>
<script src="bower_components/canvg-gabelerner/StackBlur.js"></script>
<script src="bower_components/canvg-gabelerner/canvg.js"></script>

canvg bower包是旧的。它之所以创建,是因为原始回购协议存储在谷歌代码服务上(现在已经死了)


我希望有帮助!:)

使用此bower软件包:

"canvg-gabelerner": "*"
并确保包含以下3个依赖项:

<script src="bower_components/canvg-gabelerner/rgbcolor.js"></script>
<script src="bower_components/canvg-gabelerner/StackBlur.js"></script>
<script src="bower_components/canvg-gabelerner/canvg.js"></script>

canvg bower包是旧的。它之所以创建,是因为原始回购协议存储在谷歌代码服务上(现在已经死了)


我希望有帮助!:)

这是海图中常见的问题之一。这是由于
标记中的包装文本造成的。如果轴标签太长且被包装为多行,则通常会发生这种情况。解决此错误的简单方法是在导出为PDF之前删除所有
title
元素。这不会影响图表的任何部分

要删除图表容器中的title元素,请使用
JQuery

("#chart_container_id title").remove();

在导出模块的开头插入此行。现在尝试导出,这将很好地工作。

这是HighCharts中常见的问题之一。这是由于
标记中的包装文本造成的。如果轴标签太长且被包装为多行,则通常会发生这种情况。解决此错误的简单方法是在导出为PDF之前删除所有
title
元素。这不会影响图表的任何部分

要删除图表容器中的title元素,请使用
JQuery

("#chart_container_id title").remove();

在导出模块的开头插入此行。现在尝试导出,这会很好。

您能告诉我们您收到的错误吗w.onerror:error:Uncaught TypeError:undefined不是第页的函数:/js/library\u bower/canvg/dist/canvg.js第2000行第22列对象:TypeError:undefined不是函数firefox错误看起来更可读:TypeError:child.measuretextrescursive不是一个函数canvg.js:2000:15如果您能提供一个fiddle就更好了,因为我无法在jsidle上重现它。我试着做一个更简单的例子。我复制了highcharts提供的svg,但它在JSFIDLE上没有失败。。。。您能告诉我们您收到的错误吗w.onerror:error:Uncaught TypeError:undefined不是第页的函数:/js/library\u bower/canvg/dist/canvg.js on line:2000 on column:22 on object:TypeError:undefined不是函数firefox错误看起来更可读:TypeError:child.measuretexrecursive不是函数js:2000:15如果您可以提供一个fiddle,那就更好了,因为我无法在JSFIDLE上复制它。我试着做一个更简单的例子。我复制了highcharts提供的svg,但它在JSFIDLE上没有失败。。。。哇!回答得好!删除标题不起作用。getSVG()仍然返回带有标题元素的SVG图像。我必须执行svg.replace(/[\w\d\s]*/g')。我做错了什么?哇!回答得好!删除标题不起作用。getSVG()仍然返回带有标题元素的SVG图像。我必须执行svg.replace(/[\w\d\s]*/g')。我做错了什么?