Превращение диаграмм jQuery в PDF-файлы - PullRequest
8 голосов
/ 22 августа 2010

Я нашел два плагина jQuery для диаграмм, которые мне нравятся - flot и jqPlot.Я подумываю об использовании одного из них на внешнем интерфейсе моего веб-сайта.

Однако мне также необходимо иметь возможность разрешать пользователям экспортировать данные в формате PDF.В идеале я ищу чистое решение Python, но могу одним нажатием запустить на Java или PHP.Качество сгенерированных диаграмм является наиболее важным фактором.

Опции, которые я рассмотрел:

  • Создание диаграмм на сервере и создание PDF-файлов с использованием этих диаграмм.Я посмотрел на matplotlib и несколько других пакетов диаграмм python, но диаграммы не выглядят так же хорошо, как это делает flot или jqPlot.
  • Используйте Rhino и Env.js для запуска того же кода jQuery насервер, и как-то захватить сгенерированные диаграммы и вставить их в PDF-файлы.Это возможно с Rhino?Насколько сложно это может быть?Я видел проект Rhino-canvas, но он выглядит устаревшим.

Каков наилучший способ сделать это?Если бы я смог заставить работать решение Rhino, это было бы замечательно, поскольку оно поддерживало бы согласованность между интерфейсом и сгенерированными PDF-файлами.

Ответы [ 3 ]

4 голосов
/ 14 сентября 2010

Конвертировать график в изображение

Насколько я понимаю, flot рисует элемент canvas (если есть).Я гуглил примеры экспорта содержимого холста и нашел canvas2image , например.Это может быть, а может и нет, путь для изучения.

См. этот вопрос StackOverflow тоже.Исходя из этого, может быть довольно просто экспортировать изображение (используя Canvas.ToDataUrl(type), который принимает тип MIME. Я совершенно уверен, что он не будет делать ничего значимого с application / pdf, хотя ...).

Обновление : Ну, смотрите, модифицированная версия canvas2image находится в flotr source: http://flotr.googlecode.com/svn/trunk/flotr/flotr/prototype/lib/canvas2image.js

Создать PDF

Естьрешения для создания PDF из JavaScript на клиенте:

Конецрезультат

Объедините эти два, и у вас может быть решение.

1 голос
/ 14 сентября 2010

Вы можете запустить безголовый webkit (механизм рендеринга) с Python и Qt на сервере, который затем можно распечатать в PDF.Изменения, которые вам нужно внести, чтобы напечатать PDF с Qt, перечислены здесь , хотя они могут быть неполными.

Это решение просто отобразит страницу, и вы можете сохранить диаграммы как отдельные изображенияили перейдите к предлагаемому пути создания полного PDF страницы.

1 голос
/ 22 августа 2010

Предлагаю еще раз взглянуть на matplotlib .

Графики очень настраиваемы и могут выглядеть очень отточенными. Конечно, многие варианты могут пугать поначалу. Но если вы знаете, как это сделать, вы можете получить много приятных эффектов.

Если вы хотите тени, например, взгляните на учебник transforms .

Кроме того, matplotlib дает вам растровые изображения с высоким разрешением или даже векторную графику PDF. Я не знаю, насколько сложно использовать упомянутые библиотеки jQuery для графики с более высоким разрешением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...