Ошибка команды Wkhtmltopdf: с отзывчивым Chart.js: опция false - PullRequest
0 голосов
/ 31 января 2019

Я генерирую графики Чарджса в рельсах с помощью wicked_pdf и wkhtmltopdf (версия 0.12.4).я обновил гем wkhtmltopdf с версии 0.12.3.1 до версии 0.12.4, потому что он использует много оперативной памяти и занимает слишком много времени при генерации длинных PDF-файлов, но графики charjs работали.Теперь в новой версии возникает ошибка, когда для параметра адаптивного графика установлено значение false:

Chart.js responsive option

wkhtmlerror command Error

Когда установлено значение true,не содержит ошибок, но не работает, даже если родительский блок имеет настройку ширины и высоты.

Я не знаю, как решить эту проблему с помощью новейшей версии wkhtmltopdf, и переход на gem downgrade не подходит.

Пожалуйста, помогите.

Я пытался установить ширину и высоту для родительского контейнера и холста chartjs, больше javascript_delay в wkhtmltpdf, без анимации в charjs, обратный вызов onbeforeprint с рекомендованной функцией charjs doc

html

<div class="canvas-holder" style="width: 800px; height: 1200px;">
  <canvas id="real-costs-bar-chart-1" width="800" height="1200" style="width: 800px; height: 1200px;"></canvas>
</div>

код charjs

var ctx = document.getElementById(canvas_id).getContext('2d');
    new Chart(ctx, {
      type: 'horizontalBar',
      data: {
        datasets: [{
          label: 'Real',
          data: data1,
          backgroundColor: backgroundColor1,
          borderColor: borderColor1,
          borderWidth: 1
        },
          {
            label: 'Proyectado',
            data: data2,
            backgroundColor: backgroundColor2,
            borderColor: borderColor2,
            borderWidth: 1
          }
        ],
        // These labels appear in the legend and in the tooltips when hovering different arcs
        labels: labels
      },
      options:{
        title: {
          display: true,
          text: title,
          fontSize: 10,
          fontColor: '#00397B',
          lineHeight: 3
        },
        responsive: false,
        legend:{
          position: 'bottom',
          fontSize: 10
        },
        scales: {
          xAxes: [{
            ticks: {
              // Include a dollar sign in the ticks
              callback: function(value, index, values) {
                return 'USD ' + number_to_cl(value);
              }
            }
          }]
        },
        tooltips: {
          callbacks: {
            label: function(tooltipItem, data) {
              var label = 
                data.datasets[tooltipItem.datasetIndex].label || '',
                value = 
    data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];

              if (label) {
                label += ': ';
              }
              label += 'USD ' + number_to_cl(value);
              return label;
            }
          }
        }
      }
    })

wicked_pdf config

pdf = WickedPdf.new.pdf_from_string(
    template,
    pdf: "Report_#{cost_report_type}", javascript_delay: 2000,
    header: { content: header, spacing: 10 },
    footer: { center: 'Pagina [page] de [topage]', spacing: 5 },
    margin: {
      top: 35,
      bottom: 15
    },
    encoding: 'UTF-8',
    zoom: 0.8,
    orientation: 'Portrait'
  )
...