0

I am trying to generate a PDF of a page made in HTML. This page has a chart created with Chart Js. I would like to click on the button to generate a PDF of the chart.

But, clicking the button nothing happens.

  • I'm using html2canvas (because I've been reading that it is necessary to first convert the file to PNG).

  • I am using jspdf to convert the file to PDF.

See the code:

$('#gerar-pdf').on('click', function() {
  html2canvas(document.querySelector("container-canvas"), {
    onrendered: function(canvas) {
      var imgData = canvas.toDataURL('image/png');
      var pdf = new jsPDF('p', 'mm');
      pdf.addImage(imgData, 'PNG', 10, 10);
      pdf.save('test.pdf');
    }
  });
});
<!DOCTYPE html>
<html lang="pt-BR">

<head>
  <!-- Required meta tags -->
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE-edge">
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  <title>Aprendendo</title>


  <link href="_bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet">
  <!-- ARQUIVO CSS DO BOOTSTRAP -->

  <link href="_chart/dist/Chart.css" rel="stylesheet">
  <script src="_chart/dist/Chart.js"></script>

</head>

<body>

  <div class="row">
    <div class="col-lg-12">
      <h1 class="text-center">Gráficos de Status das Atividades</h1>
    </div>
  </div>

  <div class="container-fluid" id="container-canvas">

    <div class="row">
      <div class="col-lg-8 offset-lg-2">
        <canvas id="canvas_status_atividades" width="400" height="400"></canvas>
      </div>
    </div>

    <div class="row">
      <div class="col-lg-8 offset-lg-2">
        <button class="btn btn-primary" id="gerar-pdf">Gerar PDF</button>
      </div>
    </div>

  </div>

  <script src="_jquery/jquery-3.3.1.min.js"></script>
  <!-- ARQUIVO JQUERY -->
  <script src="_bootstrap/4.3.1/js/bootstrap.min.js"></script>
  <!-- ARQUIVO BOOTSTRAP -->
  <script src="_jsPDF/dist/jspdf.min.js"></script>
  <!-- ARQUIVO jspdf -->
  <script src="_html2canvas/html2canvas.js"></script>
  <!-- ARQUIVO html2canvas -->
  <script src="scripts/script.js"></script>

</body>

</html>

NOTE: The Chart is generated without problems with Chart JS:

enter image description here

  • Can you help me ?

0 Answers0