【问题标题】:How can I print a web page on a server?如何在服务器上打印网页?
【发布时间】:2011-02-01 01:26:59
【问题描述】:

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

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

在服务器端有什么好的方法吗?这只是愚蠢吗?有没有人做过类似的事情?是否有任何主流浏览器具有可能提供此类功能的 API?

请记住,它不仅仅是静态 HTML;可能 javascript 将首先运行以移动 DOM。

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

相反,如果我可以在不可见的服务器端浏览器中呈现我想要的页面并将其打印到 PDF 中,我会很高兴(让我们大多忽略该步骤 - 我知道任何数量的 PDF 打印机驱动程序可以这样做)。

我也不想让它变得丑陋 - 即通过启动浏览器进程然后将击键直接发送到窗口 - 只需轻轻一推,它就会崩溃。 only related question I found 有这样的答案。

任何建议表示赞赏!

【问题讨论】:

    标签: asp.net asp.net-mvc pdf printing


    【解决方案1】:

    古老的线程,但我在研究这个确切问题的替代方案时偶然发现了它。到目前为止,我使用Essential Objects ASPX to PDF 取得了不错的成绩。我不能说我已经使用它足以说它是最终的答案,但到目前为止它似乎做了我想做的一切。上面的链接是一个帮助页面,它有示例代码。您只需引用几个 DLL,添加一些引用并调用类似于:

    ASPXToPDF1.RenderAsPDF(false);
    

    有页面大小、页眉/页脚、边距等选项。目前看来效果不错。

    【讨论】:

      【解决方案2】:

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

      旧答案

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

      【讨论】:

        猜你喜欢
        • 2011-01-15
        • 1970-01-01
        • 2012-01-21
        • 1970-01-01
        • 2021-02-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多