2

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

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

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

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

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

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

以下按钮显示 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>
4

1 回答 1

0

您应该能够为此使用已经编写好的 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();

希望这可以帮助。

于 2013-08-26T12:19:31.037 回答