首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法用DIV元素导出c3.js图表

无法用DIV元素导出c3.js图表
EN

Stack Overflow用户
提问于 2018-05-12 09:49:20
回答 1查看 637关注 0票数 1

我使用c3.js创建了这个图表

Top的两个文本/数字行位于Div中。左下角的两个按钮成功地将这个SVG图表转换成png和pdf。现在,我的客户想要使用PDF和JPG导出top的两个文本行。但是PDF和JPG程序只导出SVG元素。如何使用相同格式的SVG添加这两个文本行,以便它们可以用图表导出?

我尝试使用这个javascript代码将div添加到SVG元素中。

代码语言:javascript
复制
var ns = 'http://www.w3.org/2000/svg';
var svg = document.querySelector( 'svg' );
var foreignObject = document.createElementNS( ns, 'foreignObject');
foreignObject.setAttribute('height', 300);
foreignObject.setAttribute('width', '100%');
var div = document.createElement('div');
div.innerHTML = '<div><div class="export-text"><span class="export-text-heading">{{DISPLAY DATA HERE}}</span></div></div>';
foreignObject.appendChild( div ); 
svg.appendChild(foreignObject); 

输出中有多个div。但是JPG和PDF导出程序不允许导出div并显示此错误。

在以下SVG上将数据URI加载为图像时出错

我的PDF导出代码是

代码语言:javascript
复制
function export_pdf_tracker(){
  $('#chart-tracker').find('svg').attr('xmlns','http://www.w3.org/2000/svg');
  xepOnline.Formatter.Format('chart-tracker',{pageWidth:'20in', pageHeight:'15.5in',render:'download', srctype:'svg', filename:'Activity-Tracker-Report', resolution:'300', cssStyle:[{fontSize:'40px'},{fontWeight:'bold'}]});
}

我的PNG/JPG导出代码是

代码语言:javascript
复制
function svgToPng(chartID) {
    //fix weird back fill
    d3.select('#'+chartID).selectAll("path").attr("fill", "none");
    //fix no axes
    d3.select('#'+chartID).selectAll("path.domain").attr("stroke", "black");
    //fix no tick
    d3.select('#'+chartID).selectAll(".tick line").attr("stroke", "black");
    var svgElement = $('#'+chartID).find('svg')[0];
    saveSvgAsPng(svgElement, chartID+'.png');
}

这两种代码都成功地工作,但没有使用div元素。

当我在图上添加div时,它就是这样显示的。

但无法用div进行出口。请建议在SVG图中添加这两行的布局以便于导出,或者是否有将div转换为svg的代码?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-12 13:17:05

我找到了答案。我编写了这段代码来添加每个文本块。所以我创建了8个文本块。现在,他们正在完美地导出JPG和PDF。

代码语言:javascript
复制
d3.select("#chart-tracker svg").append("text")
 .attr("x", 780 )
 .attr("y", 50)
 .style("text-anchor", "left")
 .style("font-size", "17px")
 .text("Start Date");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50304910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档