Есть ли какой-либо способ, которым мы можем использовать Highcharts с mPDF converter?

#php #svg #highcharts #mpdf #html2pdf

#php #svg #highcharts #mpdf #html2pdf

Вопрос:

Этот вопрос связан с HTMLtoPDF Converter.

mPDF converter отлично работает с включенным css, но не с какой-либо таблицей начальной загрузки или любыми элементами svg.

Как включить js в html для mPDF?

Ответ №1:

mPDF не поддерживает JavaScript. Однако вы можете использовать один из следующих подходов:

  1. Извлеките SVG-код диаграммы, используя что-то вроде $('svg')[0].outerHTML , и отправьте его на сервер, чтобы вставить в сгенерированный PDF-файл в виде изображения.

  2. Используйте Highcharts export service для создания изображения (SVG или другого формата), которое можно вставить в PDF. Код выглядит следующим образом:

     var chart = $('.mychart').highcharts();
    var opts = chart.options;        // retrieving current options of the chart
    opts = $.extend(true, {}, opts); // making a copy of the options for further modification
    delete opts.chart.renderTo;      // removing the possible circular reference
    
    /* Here we can modify the options to make the printed chart appear */
    /* different from the screen one                                   */
    
    var strOpts = JSON.stringify(opts);
    
    $.post(
        'http://export.highcharts.com/',
        {
            content: 'options',
            options: strOpts ,
            type:    'image/svg xml',
            width:   '1000px',
            scale:   '1',
            constr:  'Chart',
            async:   true
        },
        function(data){
            var imgUrl = 'http://export.highcharts.com/'   data;
            /* Here you can send the image url to your server  */
            /* to make a PDF of it.                            */
            /* The url should be valid for at least 30 seconds */
        }
    );
      

    Вы можете поэкспериментировать с различными вариантами вызова наhttp://export.highcharts.com /. Смотрите также http://www.highcharts.com/docs/export-module/export-module-overview

Обратите внимание, что mPDF не поддерживает некоторые свойства SVG, поэтому вы можете рассмотреть возможность экспорта вашей диаграммы в виде растрового изображения.

Комментарии:

1. Привет, я действительно пытаюсь достичь того же, что и OP, и ваш ответ — лучший вариант, который у меня есть, но я не могу в этом разобраться. Не могли бы вы ответить на пару вопросов по этому поводу? — Где находится код (в 2)? каков .mychart идентификатор диаграммы, которую я создаю? должен ли это быть #mychart?

2. Привет @Gideon! Я надеюсь, что мой ответ не слишком запоздал. $('.mychart') относится к классу div with mychart , внутри которого создается диаграмма. В вашем случае это может быть #mychart или любой другой селектор, однозначно идентифицирующий контейнер диаграммы. Этот JS-код может находиться на странице или во включенном JS-файле. Идея состоит в том, чтобы сгенерировать изображение из диаграммы с помощью Highcharts server, а затем отправить его на ваш сервер, где mPDF создаст из него PDF-файл.