Asp.net 如何在服务器上打印网页?

Asp.net 如何在服务器上打印网页?,asp.net,asp.net-mvc,pdf,printing,Asp.net,Asp.net Mvc,Pdf,Printing,假设我使用很酷的GoogleVisualization API开发了一个网页,它可以满足用户的所有需求。他们可以修改参数、查看图表并打印页面,以获得外观合理的报告。一切都好 现在假设我想在服务器端做同样的事情。例如,假设我们需要一组在一天中特定时间生成的报告,打印成PDF并通过电子邮件发送给经理。这不是用户发起的操作,因此我们没有用户的浏览器或打印机。我们有一个URL,如果我们有浏览器,它会呈现报告,就是这样 有没有一种好的方法可以在服务器端实现这一点?这只是愚蠢吗?以前有人做过类似的事情吗?是

假设我使用很酷的GoogleVisualization API开发了一个网页,它可以满足用户的所有需求。他们可以修改参数、查看图表并打印页面,以获得外观合理的报告。一切都好

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

有没有一种好的方法可以在服务器端实现这一点?这只是愚蠢吗?以前有人做过类似的事情吗?是否有任何主流浏览器都有可能提供这种功能的API

请记住,它不仅仅是静态HTML;可能会首先运行javascript来改变DOM

我知道我们可以在服务器端实现一个完全不同的报告引擎来实现这一点,但这将(a)生成看起来有点不同的报告,(b)需要我构建/维护两组功能

相反,如果我能在一个不可见的服务器端浏览器中呈现我想要的页面并将其打印成PDF,我会很高兴(让我们忽略这一步——我知道有很多PDF打印机驱动程序可以做到这一点)

我也不想做得太难看——比如启动浏览器进程,然后直接向窗口发送击键——只要轻轻一推,它就会崩溃。他们的回答是这样的

任何建议,谢谢

现在我推荐图书馆。它使用WebKitAPI呈现页面,执行JavaScript并支持现代CSS。所有内容都可以导出为PDF格式。有一个名为.NET的包装器

旧答案


您可以编写简单的WinForms应用程序,该应用程序将使用和方法。如果打印机的pdf驱动程序配置正确,则驱动器上的文件可以发送。你可以安排它在一天中的特定时间运行。

古老的线程,但我在研究解决这个问题的替代方案时偶然发现了它。到目前为止,我在这方面取得了不错的成绩。我不能说我已经用得够多,可以说这是最终的答案,但到目前为止,它似乎做了我想做的一切。上面的链接指向一个帮助页面,其中包含示例代码。您只需引用一些DLL,添加一些引用并调用类似以下内容的代码:

ASPXToPDF1.RenderAsPDF(false);
有页面大小、页眉/页脚、页边距等选项。目前看来效果不错