Как использовать highcharts с princeXML?
Я оцениваю princexml, и это пока очень хорошо. Одна небольшая проблема, хотя. Есть ли способ сохранить график, сгенерированный высокими диаграммами в princexml, в браузере?
Я понимаю, что мне нужно создать график в виде изображения на холсте, но я не уверен, как передать график в princexml. Есть идеи?
3 ответа
Я работаю в DocRaptor (API HTML в PDF, использую Prince XML для рендеринга PDF), и мы только что опубликовали пост в блоге о добавлении Highcharts в PDF:
Добавление Highcharts в PDF-файлы
По сути, вам просто нужно использовать наш механизм JavaScript (который отличается от механизма JavaScript Prince и работает до того, как мы передадим этот процесс Prince) и отключить анимацию в коде, который отображает ваши графики.
Единственное, что вы можете сделать, это просто передать SVG, сгенерированный HighCharts, принцу.
Одна из проблем, с которой вы столкнетесь в этом решении, заключается в том, что IE8 не будет генерировать SVG, а будет VML, который принц не может отобразить. Возможно, вы сможете передать свой javascript напрямую принцу, но нам еще предстоит проверить это решение.
Редактировать:
Я на самом деле только что проверил кормление Принса с помощью javascript, который генерировал бы SVG... но не повезло, поэтому мы застряли с подачей предварительно отрендеренного SVG. Возможно, придется сделать это на стороне сервера, используя среду выполнения javascript.
JavaScript-движок PrinceXML не кажется достаточно мощным для создания диаграмм с такими компонентами, как Highcharts.
Итак, что я сделал, так это запустил мою страницу в PhantomJS, чтобы он запустил JS и создал элементы SVG в DOM, а затем передал результат в PrinceXML.
Обязательно отключите анимацию, иначе вы напечатаете 0 кадр:
Highcharts.setOptions({
plotOptions: {
series: {
animation: false //Animations prevent proper PDF generation of charts!
}
}
});