无法使用jspdf和chartjs向画布添加背景颜色

时间:2017-01-04 20:52:00

标签: javascript jquery chart.js jspdf

我使用jspdf插件将条形图导出为pdf。图表上的条形为白色,因此当我导出为pdf(作为png图像)时,条形图在pdf中的透明背景上不可见。我在容器上添加了灰色背景颜色,以便清晰可见白色条纹。当我将图形导出为pdf时,它仍然显示透明背景而不是灰色。有人能告诉我我错过了什么吗?

的javascript:

    $(document).ready(function(){

    $('#hyppdf').click(function(){
    var canvasImg = document.getElementById("myChart").toDataURL("image/png",     
    1.0);
    var doc = new jsPDF();
    doc.setFontSize(33);
    doc.setFillColor(135, 124,45,0);
    doc.addImage(canvasImg, 'png', 10, 10, 150, 100);
    doc.save('sample.pdf');
    })

    var ctx = document.getElementById("myChart").getContext('2d');

  var myChart = new Chart(ctx, {
  type: 'bar',
  data: {
    labels: ["M", "T", "W", "T", "F", "S", "S"],
    datasets: [{
      label: 'apples',
      data: [12, 19, 3, 17, 28, 24, 7],
      backgroundColor: "rgba(255,255,255,1)"
    }, {
      label: 'oranges',
      data: [30, 29, 5, 5, 20, 3, 10],
      backgroundColor: "rgba(255,153,0,1)"
    }]
  }
});

})

HTML:

    <div class="container" style="background-color:#ccc">
  <h2> <a id="hyppdf" href="#">download</a></h2>
  <div>
    <canvas id="myChart"></canvas>
  </div>
</div>

https://jsfiddle.net/2gnajnz4/5/

由于

1 个答案:

答案 0 :(得分:4)

我认为您可以通过在将图像导出为pdf之前添加矩形来解决您的问题:

  doc.setFillColor(204, 204,204,0);
  doc.rect(10, 10, 150, 160, "F");

请参阅更新的fiddle