我正在dashaboard統計我的項目之一,我使用C3js到圖表添加到我的儀表盤,以及所有它工作正常,如何從json獲取請求加載數據時將c3js導出爲PDF?
,但是當我想這個儀表盤的PDF文件使用產生Rotativa插件和wkhtmltopdf,但它不能正常工作,它會生成一個包含數據但沒有顯示圖表的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>
}
渲染網頁(index動作):
但是,當我執行打印操作,這是samply空白無圖。
更新
我也想解決這個問題以不同的方式,但沒有成功: 我用一個簡單的Ajax請求retreive數據,並將數據存儲在一個變量,之後我畫圖表,而不調用ajax進入c3圖表函數。 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>
}
我確信問題與第三條建議有關,而我試圖以另一種方式解決問題。請看上面的內容,如果你能告訴我任何關注的方法。非常感謝 –
所以基本上你的AJAX調用有問題。檢查我在(2)中發佈的鏈接,插件需要服務器允許CORS才能工作,檢查這是否是問題的最好方法是在處理AJAX請求的方法中放置一個斷點並查看它是否被調用當您嘗試獲取PDF頁面時。 – damianmr