【问题标题】:javascript print without print dialog boxjavascript打印不打印对话框
【发布时间】:2010-11-27 15:30:44
【问题描述】:

下面的 sn-p 工作正常,但它打开了对话框窗口,

但我不想打开打印对话框,

只打印应该没有对话框,

我应该在下面的 sn-p 中添加什么 sn-p ,

还有一个疑问,我想用点阵打印机打印出来,下面的sn-p可以用吗?

var prtContent = document.getElementById(strid);
var WinPrint =
window.open('','','left=0,top=0');
WinPrint.document.write(prtContent.innerHTML);
WinPrint.document.close();
WinPrint.focus();
WinPrint.print();
WinPrint.close();
prtContent.innerHTML=strOldOne;

我开发了计费应用程序,

如果我显示打印对话框,那么它会花费一些时间来打印,看看我已经有了更多的打印机, 我只有一台打印机,即点阵,每当我发出打印命令时,它应该在不打开打印对话框的情况下打印账单,

【问题讨论】:

  • 您希望用户如何选择要打印的打印机?
  • @Ignacio Vazquez-Abrams:大多数系统都有“默认打印机”的概念。然而,在没有用户确认的情况下从浏览器打印听起来不是一个好主意(“当然,我们网站的所有访问者都希望打印我们的新广告!” - 屏幕上的弹出窗口是够糟糕的)
  • Firefox 可以配置为直接打印而不显示对话框,见forums.mozillazine.org/viewtopic.php?t=48336
  • 对于托管在公司 Intranet 上的 Web 应用程序,您会知道打印机并希望能够进行这种控制。这就是我现在的情况。

标签: javascript


【解决方案1】:

下载 Google Chrome 版本 18.xx.xx.xx,您可以使用标志来关闭打印机对话框

--kiosk-noprint

那种时尚的东西我一时想不起来了,但谷歌会帮上忙的。当您选择要打印的任何内容时,这将使对话框不碍事。

【讨论】:

  • 这太好了,谢谢。工作参数是“--kiosk-printing”
【解决方案2】:

这是完全可能的。我在银行工作,有一个网页,当交易发布时,柜员需要自动打印。由于他们整天都在进行交易,如果他们每次都显示对话框,就会减慢他们的速度。此代码将选择您的默认打印机并直接打印到它,没有对话框。

<form>
<input type="button" value="Print Page" onClick="window.print()">
</form>


<script language="VBScript">
// THIS VB SCRIP REMOVES THE PRINT DIALOG BOX AND PRINTS TO YOUR DEFAULT PRINTER
Sub window_onunload()
On Error Resume Next
Set WB = nothing
On Error Goto 0
End Sub

Sub Print()
OLECMDID_PRINT = 6
OLECMDEXECOPT_DONTPROMPTUSER = 2
OLECMDEXECOPT_PROMPTUSER = 1


On Error Resume Next

If DA Then
call WB.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER,1)

Else
call WB.IOleCommandTarget.Exec(OLECMDID_PRINT ,OLECMDEXECOPT_DONTPROMPTUSER,"","","")

End If

If Err.Number <> 0 Then
If DA Then 
Alert("Nothing Printed :" & err.number & " : " & err.description)
Else
HandleError()
End if
End If
On Error Goto 0
End Sub

If DA Then
wbvers="8856F961-340A-11D0-A96B-00C04FD705A2"
Else
wbvers="EAB22AC3-30C1-11CF-A7EB-0000C05BAE0B"
End If

document.write "<object ID=""WB"" WIDTH=0 HEIGHT=0 CLASSID=""CLSID:"
document.write wbvers & """> </object>"
</script>

【讨论】:

  • 不确定。我只是在 Windows PC 上使用 IE。
  • 它在 IE 9.0.8112.16421 对我不起作用。有人知道这其中的原因吗?允许 ActiveX 控件..
  • 这是我一直在寻找的功能。我已经在一个页面上尝试了上面的代码,它要求安装一个附加组件。这似乎来自微软,但是,谁能告诉我:如果我安装这个,这会让其他网站能够使用相同的脚本自动打印吗?如果是这样,有没有办法将附加组件限制在一个域中?
  • 这在 IE 9 + 上也不起作用,我在 chrome 上也需要这样的东西。出于与此答案所述相同的原因。
  • 这是一个 OLD IE ONLY 解决方案。
【解决方案3】:

这是不可能的,有几个很好的理由:

  • 用户可能希望自己选择打印机
  • 用户可能希望能够控制他的打印机何时被激活(想象一下令人讨厌的自动打印广告弹出窗口,ARRGH!
  • 用户可能想要指定打印机设置(灰度或颜色、分辨率、尺寸……)

【讨论】:

  • 有可能。请看我的评论。我的用户是出纳员,需要在交易发布时自动打印。它们使用默认设置打印到同一台打印机。除了下一个走到柜员窗口的人之外,什么都没有改变。
  • -1 这不是答案。任何人都知道我们为什么需要对话。但是在很多情况下,没有对话的打印可以节省时间和金钱。例如,在银行业。
  • 我不买这个作为答案,更多的是“你不应该那样做”的评论。我确切需要 OP 的要求,因为我正在尝试编写一个打印支票的程序,并且我不能允许用户为此使用打印对话框。接受的答案与我正在寻找的答案很接近。
  • 我同意。餐馆、在线商店等的许多场景,这将是非常好的。
  • 这令人沮丧。兄弟,你要积极
【解决方案4】:

我认为最好的替代方案是 Flash 或 Java....

Flash 在自定义操作系统元素方面非常灵活......

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/printing/PrintJob.html

因此,用户可以通过他想要打印的方式定义打印机,您只需将打印机的名称传递给函数,该打印机就会开始打印.....

【讨论】:

  • 这在 2013 年可能是正确的,但 Flash 已经结束,我不记得上次看到安装了 Java 插件的浏览器是什么时候了。
猜你喜欢
  • 1970-01-01
  • 2013-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-05
  • 2015-07-05
  • 2019-06-18
  • 1970-01-01
相关资源
最近更新 更多