У меня возникли проблемы с экспортом моих диаграмм в PDF.Chartjs + jsPDF = Размытое изображение
Я это Диво
<div id="chart-area">
<button type="button" id="btnPrint_" onClick="Print1()">Print</button>
<?php echo '<h2 id="title">'.$_SESSION['team_name'].'</h2>'; ?>
<canvas id="myChart" width="800" height="400"></canvas>
<div id="legend"></div>
</div>
и я создаю мой график, используя ChartJS
$(document).ready(function(){
var helpers = Chart.helpers;
var canvas = document.getElementById('myChart');
var data = {
labels: unique_dates,
datasets: [
{
label: "Ticket Count",
fillColor: "rgba(107, 110, 111, 0.6)",
strokeColor: "rgba(107, 110, 111, 0.6)",
highlightFill: "rgba(107, 110, 111, 0.6)",
highlightStroke: "rgba(151,137,200,1)",
data: ticket_count
},
{
label: "Subsidy Count",
fillColor: "rgba(8, 126, 210,0.5)",
strokeColor: "rgba(8, 126, 210,0.8)",
highlightFill: "rgba(220,220,220,0.75)",
highlightStroke: "rgba(220,220,220,1)",
data: subsidy_count
}
]
}
var bar = new Chart(canvas.getContext('2d')).Bar(data, {
tooltipTemplate: "<%if (label){%><%=label%>: <%}%><%= value %>kb",
animation: true,
});
//
var legendHolder = document.createElement('div');
legendHolder.innerHTML = bar.generateLegend();
document.getElementById('legend').appendChild(legendHolder.firstChild);
});
Когда я нажимаю btnPrint_ кнопку Я хочу, чтобы экспортировать свою таблицу в формате PDF
function Print1() {
var title = $("#title").text();
var doc = new jsPDF('l', 'mm',[210, 297]);
html2canvas($("#myChart"), {
onrendered: function(canvas) {
var imgData = canvas.toDataURL('image/png',1.0);
doc.text(130,15,title+" GT Log");
doc.addImage(imgData, 'PNG',20,30,0,130);
doc.addHTML(canvas);
doc.save(title+'gt_log.pdf');
}
});
}
Проблема в том, что моя диаграмма полностью размыта в файле pdf.
Любая идея, как исправить это?
это первый раз, когда я использую ChartJS и jsPDF, поэтому, вероятно, я делаю что-то неправильно.
Спасибо!
Я знаю, что прошло какое-то время, но вы когда-нибудь пытались выводить файлы PNG, а не файлы JPEG? Я задаю вопрос о схеме сжатия, которая используется для генерации файлов JPEG, а также о том, что они теряют прозрачность, встроенную в графики. – Ecksters
@ Ecksters, я, вероятно, использую png в большинстве случаев, он работает хорошо. Плюс, как вы уже упоминали, он сохранит прозрачность графика. https://jsfiddle.net/crabbly/kL68ey5z/380 – crabbly