2010-03-26 2 views
0

Предположим, я разработал веб-страницу, используя классный API визуализации Google, и он делает все, что хочет пользователь. Они могут изменять параметры, просматривать графики и распечатывать страницу, чтобы получить разумный отчет. Все хорошо.Как распечатать веб-страницу на сервере?

Теперь предположим, что я хочу сделать то же самое на сервере. Например, скажем, нам нужен набор отчетов, созданных в определенное время суток, напечатанных в формате PDF и отправляемых по электронной почте менеджеру. Это не инициированное пользователем действие, поэтому у нас нет браузера пользователя или принтера. У нас есть URL-адрес, который будет отображать отчет, если бы у нас был браузер, и все.

Есть ли хороший способ сделать это на стороне сервера? Это просто глупо? Кто-нибудь сделал что-нибудь подобное раньше? У любого из основных браузеров есть API, которые могут обеспечить такую ​​функциональность?

Имейте в виду, что это не просто статический HTML; вероятно, javascript будет работать первым, чтобы сменить DOM.

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

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

Я тоже не хочу делать это уродливо - то есть, запустив процесс браузера, а затем сразу же отсылающий нажатия клавиш непосредственно в окно - это просто связано с небольшим подталкиванием. Ответ был таким, как у only related question I found.

Любые советы приветствуются!

ответ

1

Сейчас я рекомендую wkhtmltopdf библиотеки. Он использует WebKit API для визуализации страницы, выполняет JavaScript и поддерживает современный CSS. Все можно экспортировать в PDF. Существует оболочка .NET, которая называется TuesPechkin.

Старый ответ

Вы можете написать простое приложение WinForms, который будет использовать System.Windows.Forms.WebBrowser и print метода. Если драйвер принтера pdf настроен правильно, у вас будет файл на диске, готовый к отправке. Вы можете запланировать его выполнение в определенную часть дня.

1

Древняя нить, но я наткнулся на нее, исследуя альтернативы этой точной проблемы. У меня до сих пор были неплохие результаты с Essential Objects ASPX to PDF. Я не могу сказать, что я использовал его достаточно, чтобы сказать, что это окончательный ответ, но до сих пор он, кажется, делает все, что я хочу. Вышеуказанная ссылка относится к странице справки, и у нее есть пример кода. Вы просто ссылки на несколько библиотек DLL, добавить некоторые ссылки и вызвать код, подобный:

ASPXToPDF1.RenderAsPDF(false); 

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

Смежные вопросы