Как использовать 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!
                    }
                }
            });

Другие вопросы по тегам