Как я могу распечатать веб-страницу на сервере? - PullRequest
1 голос
/ 26 марта 2010

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

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

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

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

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

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

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

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

Ответы [ 2 ]

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

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

ASPXToPDF1.RenderAsPDF(false);

Существуют параметры для размера страницы, верхних и нижних колонтитулов, полей и т. Д. Пока что, похоже, все работает хорошо.

1 голос
/ 21 апреля 2010

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

Старый ответ

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

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