【问题标题】:Send MVC actionresult to printer将 MVC 操作结果发送到打印机
【发布时间】:2012-01-07 23:33:45
【问题描述】:

我有一个带有动作的控制器:

SomeController/ActionToBePrinted

ActionToBePrinted() 返回一个 html 视图。

当按下按钮时,从普通的 mvc razor 视图中调用此操作 - 当按下按钮时,我将如何将视图的内容发送到打印机?

阿罗哈, 雨果

【问题讨论】:

  • 修改您的模板,使window.print() 在正文中触发。然后,在加载时,它会告诉浏览器应该打印该页面。
  • 我最终按照您的提示打开了。在新窗口中打开视图并在页面中添加 window.print() - 非常感谢您的快速回答!

标签: c# javascript .net asp.net-mvc


【解决方案1】:

您不能直接发送到打印机。

  1. 我建议您创建一个自定义 ActionResult,它会返回一个 PDF 文件或类似的文件。 ASP.NET MVC Action Results and PDF Content

  2. 您也可以显示一个 html 页面,并像这样使用 javascript 打开打印对话框

<a href="javascript:window.print()">Click to Print This Page</A>

但用户总是必须启动打印过程,您不能以编程方式执行此操作。

【讨论】:

  • 非常感谢您的快速回答!
【解决方案2】:

您可以执行 GET 请求(例如,使用 window.open() 并传入 URL 或使用 AJAX)并将返回的 HTML 内容放入新窗口。然后使用

Window.print()。完成后只需关闭窗口即可。

您可以通过在正文中添加一些内容将其直接绑定到单个视图中,但在这些情况下我更喜欢使用 JavaScript。这使设计成为可重复使用的对象或服务,可以跨多个视图使用。换句话说,您设置了控制器模型,但没有视图。相反,JavaScript 作为视图介入。

请记住,HTML 不是打印格式。因此,如果您需要控制布局,您应该使用 PDF 等打印技术。 XSLT 提供了一种使用相同数据创建 HTML 和 PDF 输出的极好方法,尽管创建 XSLT 模板的工作量要多于打击window.print

就我个人而言,我有一个 MVC 页面作为接受 URL 参数的服务。页面挂钩到 Adob​​e XSL-FO 并使用参数来驱动输出。

【讨论】:

  • 非常感谢您的快速回答!
猜你喜欢
  • 2018-09-27
  • 2022-07-15
  • 2016-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多