javascript – 为Plotly.js工作的SVG到PDF转换,但不适用于C3.js
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 为Plotly.js工作的SVG到PDF转换,但不适用于C3.js,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2850字,纯文字阅读大概需要5分钟。
内容图文
![javascript – 为Plotly.js工作的SVG到PDF转换,但不适用于C3.js](/upload/InfoBanner/zyjiaocheng/728/cb8d005961cc4e24bc29ba6963240db7.jpg)
我在onclick事件后使用css2pdf将我的svg图表保存为pdf.它适用于plotly.js,但不适用于c3.js – 请看我的小提琴:http://jsfiddle.net/3hs7cs4f/
我确信它必须对c3.js svg属性做一些事情,但我不知道如何解决这个问题.
这是代码:
<link href="https://cdnjs.cloudflare.com/ajax/libs/c3/0.4.10/c3.min.css" rel="stylesheet" />
<script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
<script src="http://www.cloudformatter.com/Resources/Pages/CSS2Pdf/Scrip /xeponline.jqplugin.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.5/d3.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/c3/0.4.10/c3.min.js"></script>
</head>
<body>
<br><br>
<!-- Source and on-click event for plotly.js -->
<div id="plotly_chart" style="width: 90%; height: 270px"></div>
<button onclick="return xepOnline.Formatter.Format('plotly_chart',{pageWidth:'11in', pageHeight:'8.5in',render:'download', srctype:'svg'});">Get plotly_PDF</button>
<!-- Source and on-click event for c3.js-->
<div id="c3_chart" style="width: 90%; height: 270px"></div>
<button onclick="return xepOnline.Formatter.Format('c3_chart',{pageWidth:'11in', pageHeight:'8.5in',render:'download', srctype:'svg'});">Get c3_PDF</button>
<!-- JAVASCRIPT for plotly.js chart -->
<script type="text/javascript">
Chart = document.getElementById('plotly_chart');
Plotly.plot( Chart, [{
x: [1, 2, 3, 4, 5],
y: [1, 2, 4, 8, 16] }], {
margin: { t: 0 } } );
</script>
<!-- JAVASCRIPT for j3.js chart -->
<script type="text/javascript">
var chart = c3.generate({
bindto: '#c3_chart',
padding: {
top: 10,
right: 70,
bottom: 50,
left: 75,
},
data: {
columns: [
['data1', 100, 200, 150, 300, 200],
['data2', 400, 500, 250, 700, 300],
]
}});
</script>
我尝试了很多其他方法来保存我的c3.js图表??,但没有一个能令人满意地工作.唯一有效的是来自annatomka的ng-c3导出器,它使用AngularJS模块(https://github.com/annatomka/ng-c3-export).但是,这个没有处理我手中的所有CSS设置,下载的png的质量受到屏幕分辨率的限制.因此,我真的想找一个pdf导出器,我找到的处理所有css设置的是css2pdf.但任何其他建议如何将c3图表保存为pdf工作也非常感谢.谢谢您的帮助!
解决方法:
正如我在上面的评论中所怀疑的那样,c3绘制的SVG缺少SVG名称空间. Css2PDF要求SVG位于此命名空间中.
请参阅http://www.cloudformatter.com/CSS2Pdf.APIDoc.FAQ,第一个FAQ,因为它是第一个问题.
为了解决这个问题,我在打印之前添加了一些hack来为这个绘图注入namespace属性.我确信有更好的方法,但这个小提示显示你的结果有效.
<script>
function addnsandprint(){
$('#c3_chart').find('svg').attr('xmlns','http://www.w3.org/2000/svg');
xepOnline.Formatter.Format('c3_chart',{pageWidth:'11in',
pageHeight:'8.5in',render:'download', srctype:'svg'});
}
</script>
小提琴:http://jsfiddle.net/3hs7cs4f/9/
结果:
注意:如果您的SVG使用xlink,您还需要添加“x00ns:xlink”属性“http://www.w3.org/1999/xlink”.为了安全格式化,我会在您的代码中添加两者.
内容总结
以上是互联网集市为您收集整理的javascript – 为Plotly.js工作的SVG到PDF转换,但不适用于C3.js全部内容,希望文章能够帮你解决javascript – 为Plotly.js工作的SVG到PDF转换,但不适用于C3.js所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。