Play Framework: создание PDF из шаблона, который использует Javascript для построения графиков - PullRequest
2 голосов
/ 29 ноября 2011

У меня есть шаблон, в котором есть некоторый Javascript, используемый для генерации графиков в браузере. Я хотел бы использовать этот же шаблон для создания PDF и отправки в виде вложения в электронное письмо. В этом случае взаимодействие между браузером и клиентом не будет.

Я использую модуль PDF, доступный на веб-сайте Play, и мне удалось заставить рендеринг PDF работать. Единственная проблема заключается в том, что графики не отображаются в PDF, но все остальные статические тексты. Я предполагаю, что графики не отображаются в PDF из-за того, что Javascript не был выполнен до создания PDF.

У кого-нибудь есть идеи, как обойти эту проблему?

Ответы [ 3 ]

1 голос
/ 29 ноября 2011

Поскольку вы используете платформу Play, самым простым способом, вероятно, будет использование Rhino. http://www.mozilla.org/rhino/ Это реализация Mozilla Javascript для запуска на JVM, и это то, на чем работает платформа Play. Возможно, вам придется внести некоторые изменения в Javascript, например, если он использует API-интерфейс браузера Canvas, вам придется создать фасадный объект, который отправляет эти команды рисования в чертежный объект PDF вместо экрана. Или в оба места, если вы этого хотите.

Вы можете получить более подробный ответ, если дадите больше информации о графическом коде Javascript.

0 голосов
/ 11 апреля 2014

Я не знаю, поможет ли это вам, но вот что сработало очень быстро для меня.

Я преобразовал холст в PNG с:

var datastring = document.getElementById('myCanvas').toDataURL("image/png");

Затем я отправилэта строка данных на сервер, так что Play генерирует PDF, и я передал переменную в PDF Generator

public static void reportPDF(String graphData){
    PDF.renderPDF(graphData);
}

Мой код PDF выглядит так:

    <body>
        <img width="100%" src="${graphData}"/>
    </body>
0 голосов
/ 06 декабря 2011

Если вы не найдете лучших вариантов, подумайте об использовании itext напрямую. Это библиотека рендеринга PDF, которая используется в pdf-плагине. Вам придется вручную переписать шаблон с точки зрения генерации PDF, но вы будете иметь полный контроль над результатом.

...