【问题标题】:C# How to print a web page, without using javascript window.print() method?C# 如何在不使用 javascript window.print() 方法的情况下打印网页?
【发布时间】:2016-06-20 14:48:28
【问题描述】:

我想在 asp.net 应用程序中打印网页而不使用 javascript 函数 window.print()。

谁能告诉我一个简短的 c# 代码来实现我的目标?

我也不想打印文档,我的要求是打印网页上的所有内容。打印应该类似于 javascript Window.print() 所做的。

【问题讨论】:

  • 我知道在不使用系统对话框的情况下进行打印的唯一方法是通过 Google 云打印,这比仅仅触发 window.print() 之类的内容要复杂得多,并且需要特定的兼容硬件或GCP客户端的设置。您没有提供任何打印方式的要求,但您可以根据需要导出为 PDF 而不是打印。如果您有更具体的要求,您可能会得到更好、更全面的答案。
  • thnx @Chris : 我的要求很简单,无论我的网页需要打印什么,保持所有对齐和数据不变。
  • C# 代码在 server 上执行,而不是在 client 上执行,所以这不是一个选项。你对Window.Print()的反感是什么?
  • 您的研究结果如何? “您无法在没有用户交互的情况下从 Web 浏览器打印” 的哪一部分您不理解?或者您想在连接到网络服务器的打印机上打印?
  • @Stanley,window.print 的问题是因为我们无法强制打印机以横向布局打印。而且我们当前的点网框架是 2.0,它不支持 css3,所以我们不能在打印时使用 css 来改变页面的方向。所以我认为我们可以使用 c# 打印属性来制作打印机布局:默认为横向

标签: c# asp.net printing


【解决方案1】:

希望我能理解您的问题,听起来您想使用 C# 代码打印网页 (HTML)。

我之前使用过 wkhtmltopdf (http://wkhtmltopdf.org/),在同一个站点上,有 wkhtmltoimage。该实用程序作为命令行工具运行,因此很容易在 C# 中使用。有了图片或 PDF 文件(我会选择图片版本)后,应该很容易打印出来。

您最关心的是将 HTML 呈现为页面,这就是 wkhtmltopdf/image 为您做的事情。

【讨论】:

  • thnx @jacob,但我们不能使用第三方工具,因为我们需要获得批准,而且我们在使用此类第三方软件/工具时存在许可问题。
【解决方案2】:

你在那里要求很多。打印是客户端(网络浏览器)必须做的事情。 window.print() 函数告诉浏览器打印页面,如果你不能使用javascript,那么你必须''服务器上的页面。如果要在服务器端打印页面,则必须获取 HTML 并将其转换为一些可打印的格式,例如 PDF 或渲染图片。

试试selenium webdriver。您可以获得像PhantomJS(在服务器上运行)这样的无头浏览器来将页面“截屏”为PNG。然后,您可以将其发送到浏览器。不幸的是,selenium 网络驱动程序不支持 PDF 的“截图”。

如果你喜欢这种东西,还有一个用于 selenium 的 nuget 包。

【讨论】:

  • 谢谢您的意见,问题是我在一家金融公司工作,我们有点不愿意使用第三方软件。它只是客户有这样的要求,所以我无能为力:(。不得不这样做。
  • @Sidharh 你要求 SO 上的其他人基本上为你编写复杂的功能,这真的有那么不同吗?
  • @Kritner :问题是我正在使用旧框架,我已经尝试了所有的东西,但不知何故我无法改变方向。我尝试在打印前将页面移动到 90 度并在打印后恢复正常,但不知何故 css 变得一团糟。
  • 如果您需要特定样式的打印媒体,请使用@media 打印查询
猜你喜欢
  • 1970-01-01
  • 2017-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多