【问题标题】:disable print dialog popup禁用打印对话框弹出
【发布时间】:2013-08-15 09:46:41
【问题描述】:

我有一个基于 Web 的 POS 系统,它需要从服务器获取信息并打印客户端。

我花了 2 天时间搜索,但仍然无法实现我想要的。

收银员会生成一个随机序列号和密码,然后将其保存在数据库中,生成后应将收据打印到收银员默认打印机。每个收银员都有自己的默认打印机。

打印工作正常,但显示打印对话框,我将如何打印收据但不显示打印对话框?

我尝试了许多 VB 脚本、jquery 和 Javascripts。都失败了。 我正在打印 iFrame 的内容。

所有收银员都使用 Windows 7 和 Internet Explorer 10。

Following 按钮显示 iFrame。

protected void Generate_Click(object sender, EventArgs e)
    {
        myIFrame.Visible = true;
    }

当页面在 iFrame 中加载时运行 Javascript 将打印 Frames 内容

protected void Page_Load(object sender, EventArgs e)
    {
        Page.ClientScript.RegisterStartupScript(this.GetType(), "Print", "PrintVoucher();", true);
    }

Javascript

<script type="text/javascript" language="javascript">

    function PrintVoucher() {
        window.focus();
        window.print();
        return;
    }
</script>

【问题讨论】:

  • 看看这个答案(IE部分)是否可以帮助stackoverflow.com/questions/21908/…
  • 祝你在搜索中好运,但我认为这是一个出于安全原因故意被排除在 javascript 之外的功能,例如想想会滥用此功能并强制打印数千个的数字或恶作剧仅仅因为您访问了一个网站而获得的页面数

标签: c# asp.net


【解决方案1】:

您应该能够为此使用已经编写好的 ActiveX 控件。它包含在 Windows 中,因此可以免费使用。

<script language='VBScript'>
Sub Print()
   OLECMDID_PRINT = 6
   OLECMDEXECOPT_DONTPROMPTUSER = 2
   OLECMDEXECOPT_PROMPTUSER = 1
   call WB.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER,1)
End Sub
document.write "<object ID='WB' WIDTH=0 HEIGHT=0 CLASSID='CLSID:8856F961-340A-11D0-A96B-00C04FD705A2'></object>"
</script>

这实际上会覆盖您已经使用的原始打印事件。因此,如果你想打印一些东西,你可以继续使用

window.print();

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2010-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-24
    • 1970-01-01
    相关资源
    最近更新 更多