【问题标题】:Can I have JavaScript select printer to use? [duplicate]我可以使用 JavaScript 选择打印机吗? [复制]
【发布时间】:2011-10-25 14:56:02
【问题描述】:

可能重复:
Printing to a specific printer from a web app

我们的一个 Intranet 应用程序需要打印到非默认打印机。当然,人们经常忘记选择正确的打印机。

我知道您不能通过 JavaScript 正常执行此操作,但鉴于浏览器是 IE9,并且我可以将 webapp 添加到受信任区域(并随意摆弄安全设置),有什么办法可以编写将自动选择正确打印机的 JavaScript?也许使用一些 ActiveX 或其他 IE 特定的东西。

【问题讨论】:

  • 如果您有这种控件并且它是内部的,那么 ActiveX 控件可能会起作用。

标签: javascript internet-explorer activex


【解决方案1】:

不,Javascript 对象模型包含一个 window.print() 方法,该方法可以激活 Web 浏览器的标准打印对话,但这只是功能的扩展。 Javascript 代码无法检查连接到计算机的打印机、查找打印机属性或任意配置它们的设置是不合适或不安全的。

我建议在打印之前添加一个弹出窗口,提醒用户选择合适的打印机。

【讨论】:

  • 显然我并不清楚,我知道这“一般”是不可能的,但我希望如果放宽一些安全策略,可能会有一个特定于 IE 的解决方案(这个毕竟是一个内网应用)
  • 你说的够清楚了,答案还是一样,没办法。
  • 实际上,contam 的解决方案是有效的,即使它对我来说太贵了。
【解决方案2】:

如果您的浏览器是基于 IE 的,您可以使用 meadroid 的这个 activeX:

http://www.meadroid.com/scriptx/index.asp

我过去使用过它,它允许控制打印机属性。

这是来自 mmeadroid 文档的示例:

<script>
function printWindow() {
  factory.printing.SetMarginMeasure(2); // set inches
  factory.printing.header = "This is MeadCo";
  factory.printing.footer = "Printing by ScriptX";
  factory.printing.portrait = false;
  factory.printing.leftMargin = 1.0;
  factory.printing.topMargin = 1.0;
  factory.printing.rightMargin = 1.0;
  factory.printing.bottomMargin = 1.0;
  factory.printing.copies = 1;
  factory.printing.printBackground = true;
  factory.printing.Print(false);
  factory.printing.WaitForSpoolingComplete();
  // navigate or close browser here //
}
</script>

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-12
相关资源
最近更新 更多