Графики включены в Django PDF

У меня проблема, у меня есть страница отчета html с JS Highcharts, изображениями, таблицами и т. Д., И я искал экспортировать все в отчет в формате PDF (с таблицами, изображениями и т. Д.). Проблема в том, что поскольку Highcharts (и другие JS-диаграммы) отображаются в браузере, они не отображаются в сгенерированном PDF-файле. Я пробовал JSPdf и PhantomJS, но с этими генераторами скриншотов я теряю весь стиль и формат, которые я создал с помощью xhtml2pdf (обложка и задняя страница, водяные знаки и т. Д.). Можете ли вы помочь мне здесь?


person JuanMa    schedule 25.11.2020    source источник


Ответы (1)


Я решил это! .- Иметь шаблон с графикой HighchartsJS. .- Прочтите каждый холст диаграммы и сохраните их в их собственном скрытом вводе с помощью:

(function (H) {
    H.Chart.prototype.createCanvas = function (divId) {
        var svg = this.getSVG(),
            width = parseInt(svg.match(/width="([0-9]+)"/)[1]),
            height = parseInt(svg.match(/height="([0-9]+)"/)[1]),
            canvas = document.createElement('canvas');
        canvas.setAttribute('width', width);
        canvas.setAttribute('height', height);
        if (canvas.getContext && canvas.getContext('2d')) {
            canvg(canvas, svg);
            return canvas.toDataURL("image/jpeg");
        }
         else {
            alert("Your browser doesn't support this feature, please use a modern browser");
            return false;
        }
    }
}(Highcharts));
var imageData = $("#ausentismo_tot").highcharts().createCanvas();  
$('#aus_tot_image').val(imageData); //Hidden Input

.- Путешествует с опубликованной информацией и обрабатывает ее в views.py:

aus_tot_image = request.POST['aus_tot_image']

.- Распечатайте файл pdf с помощью render_to_pdf_response xhtml2pdf:

<img src="{{ aus_inc_image }}" >
person JuanMa    schedule 27.11.2020