2010-03-26 51 views
0

假设我使用酷炫的Google可视化API开发了一个网页,并且它完成了用户所需的一切。他们可以查看参数,查看图表并打印页面以获得合理的报告。都好。如何在服务器上打印网页?

现在假设我想在服务器端做同样的事情。例如,假设我们需要在一天的特定时间生成一组报告,并将其打印到PDF并通过电子邮件发送给经理。这不是用户发起的操作,所以我们没有用户的浏览器或打印机。如果我们有浏览器,我们有一个URL来呈现报告,就是这样。

有没有一种很好的方法来做这个服务器端?这是愚蠢的吗?有没有人做过这样的事情?任何主流浏览器都有可能提供此类功能的API吗?

请记住,它不只是静态的HTML;可能JavaScript将首先运行以转移DOM。

我知道我们可以实现在服务器端做这一个完全不同的报表引擎,但将(一)生成报告,看上去有点不同,(B)要求我建立/维护两套功能。

相反,如果我只需在一个隐形的服务器端浏览器中呈现所需的页面/页面并将其打印到PDF(我们大多忽略该步骤 - 我知道任何数量的PDF打印机驱动程序这可以做到这一点)。

我真的不想做得很丑 - 即通过启动一个浏览器进程,然后将击键直接发送到窗口 - 这只会轻微推动而崩溃。 only related question I found有这样的答案。

任何意见赞赏!

回答

1

现在我推荐wkhtmltopdf库。它使用WebKit API呈现页面,执行JavaScript并支持现代CSS。一切都可以导出为PDF。有.NET包装叫TuesPechkin

老答案

你可以写简单的WinForms应用程序,这将使使用System.Windows.Forms.WebBrowserprint方法。如果打印机的pdf驱动程序配置正确,您将在驱动器上准备好发送文件。您可以安排它在一天中的特定部分运行。

1

古代的线程,但我偶然发现,而研究这个确切的问题的替代品。到目前为止,Essential Objects ASPX to PDF已经有相当不错的结果。我不能说我已经用它足以说这是最终的答案,但到目前为止,它似乎做我想做的一切。上面的链接是给帮助页面的,它有示例代码。你刚才提到的几个DLL文件,添加一些引用和调用类似代码:

ASPXToPDF1.RenderAsPDF(false); 

有对页面大小,页眉/页脚,页边距选项等。到目前为止,似乎运作良好。