#php #svg #highcharts #mpdf #html2pdf
#php #svg #highcharts #mpdf #html2pdf
Вопрос:
Этот вопрос связан с HTMLtoPDF Converter.
mPDF converter отлично работает с включенным css, но не с какой-либо таблицей начальной загрузки или любыми элементами svg.
Как включить js в html для mPDF?
Ответ №1:
mPDF не поддерживает JavaScript. Однако вы можете использовать один из следующих подходов:
-
Извлеките SVG-код диаграммы, используя что-то вроде
$('svg')[0].outerHTML
, и отправьте его на сервер, чтобы вставить в сгенерированный PDF-файл в виде изображения. -
Используйте 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
withmychart
, внутри которого создается диаграмма. В вашем случае это может быть#mychart
или любой другой селектор, однозначно идентифицирующий контейнер диаграммы. Этот JS-код может находиться на странице или во включенном JS-файле. Идея состоит в том, чтобы сгенерировать изображение из диаграммы с помощью Highcharts server, а затем отправить его на ваш сервер, где mPDF создаст из него PDF-файл.