2009-02-19 9 views
2

Кто-нибудь знает о технологии на стороне сервера, которая может печатать/сохранять веб-страницу в PDF, включая встроенные компоненты Flash?Серверная печать PDF с Flash?

По сути, я хотел бы симулировать печать на стороне клиента в функции PDF, но на сервере реализовать ссылку «Загрузить PDF», но я не верю, что решения HTML для PDF поддерживают Flash.

ответ

1

Возможно ... если вы можете открыть окно на сервере. Попробуйте это: Get SWT (он содержит компонент браузера). Используйте browser snippet, чтобы убедиться, что он может отображать Flash (см. Часто задаваемые вопросы ниже, чтобы узнать, как создавать плагины). Если это произойдет, то you can use JavaScript to print:

browser.execute("window.print();"); 

В Unix, это должно быть достаточно. В Windows вам придется установить драйвер принтера PDF и использовать инструмент автоматизации пользовательского интерфейса, чтобы нажать кнопку «ОК» диалогового окна печати.

Для получения подробной информации о том, как получить виджет браузера для работы в различных средах, см. На странице SWT FAQ.

Если это работает, вы можете попробовать создать оболочку, но не открывать ее (так что на экране не появляется окно). Печать должна работать без фактического рисования чего-либо на экране, но вам придется немного поэкспериментировать.

Я использовал эту технологию для создания скриншотов всех страниц нашего webapp, нажав кнопку (откройте URL-адрес, подождите, пока он загрузится, скопируйте основной чертеж, сохраните изображение в файл).

В качестве альтернативы вы можете использовать мост ActiveX для встраивания Internet Explorer в приложение Java через JDIC. Приложение может ждать запросов на удаленную печать.

[EDIT] Альтернативно, если у вас есть решение HTML-> PDF, в котором отсутствует поддержка Flash, просто откройте элемент Flash во встроенном браузере. Сохраните снимок экрана виджета браузера как изображение и измените HTML, чтобы использовать изображение вместо реального Flash (найдите тег embed и замените его на img).

[EDIT2] Если SWT не работает, взгляните на QtJambi (в котором содержится WebKit). Обратите внимание, что QtJambi в настоящее время переносится в LGPL. Я не уверен, работает ли плагин Flash в WebKit.

+0

Не уверен, что это сработает, но я дам ему шанс и посмотрю, что произойдет. –

+0

Это безумный хак, но это сработало для меня :) Удачи! –