【发布时间】:2018-03-06 07:59:10
【问题描述】:
我正在处理我的一个项目的仪表板统计信息,我正在使用 C3js 将图表添加到我的仪表板,一切正常,
但是当我想使用 Rotativa Plugin 和 wkhtmltopdf 生成此仪表板的 pdf 时,它无法正常工作,它会生成包含数据但不显示图表的 pdf。
只有在我使用 Json 时才会出现这种情况,但是当我直接插入数据时它可以正常工作。
Conf 申请:
服务器端:ASP.Net MVC5
客户端:Javascript、Rotativa、C3js
示例
控制器:
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult Print()
{
return new ViewAsPdf("Index");
}
public JsonResult Data()
{
var d1 = new ArrayList() { "Data1", 1, 4, 7, 8, 10 };
return Json( d1 , JsonRequestBehavior.AllowGet);
}
}
观点:
<div id="chart" style="width:500px;height:300px"></div>
@section scripts{
<script>
var chart = c3.generate({
bindto: '#chart',
data: {
url: "http://localhost:58762/Home/Data",
mimeType: 'json',
type: 'bar',
}
});
</script>
}
在网页中呈现(索引操作):
但是,当我执行打印操作时,它是没有图表的示例。
更新
我也在尝试以不同的方式解决问题,但没有成功: 在我绘制图表而不将 ajax 调用到 c3 图表函数中之后,我使用简单的 ajax 请求检索数据并将数据存储在一个变量中。 html 渲染绝对没问题,但 pdf 打印不起作用。下面是我的文件:
<div id="chart" style="width:500px;height:300px">Example 1</div>
@section scripts{
<script>
dataT= $.ajax({
method:'GET',
url: 'http://localhost:58762/Home/Data',
context: document.body,
global: false,
async: false,
success: function (result) {
return result;
}
}).responseJSON;
datad = [
['data1', 30, 200, 100, 400, 150, 250],
['data2', 130, 100, 140, 200, 150, 50]
];
console.log('Datad: ' + datad);
console.log('DateT: ' + dataT);
var chart = c3.generate({
data: {
columns: dataT,
type: 'bar'
},
bar: {
width: {
ratio: 0.5
}
}
});
</script>
}
【问题讨论】:
标签: javascript asp.net json pdf c3.js