Javascript печать без печати диалоговое окно - PullRequest
17 голосов
/ 27 ноября 2010

приведенный ниже фрагмент работает нормально, но открывает диалоговое окно,

но я не хочу открывать диалоговое окно печати,

просто печать должна быть сделана без диалогового окна,

какой фрагмент кода мне следует добавить в приведенный ниже фрагмент

И еще одно сомнение, я хочу распечатать на матричном принтере DOT, приведенный ниже фрагмент будет работать, знаете?

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;

Я разработал приложение для выставления счетов,

Если я покажу диалоговое окно печати, то потребуется несколько секунд, чтобы распечатать его, см. У меня больше принтера, у меня есть только один принтер, то есть матричный, когда я даю команду печати, он должен печатать БИЛЛ без открытия диалогового окна печати,

Ответы [ 5 ]

12 голосов
/ 11 июня 2012

Кажется, большинство людей сосредоточилось на негативных аспектах такой функции.

Да, в большинстве случаев нежелательно, чтобы веб-сайт мог блокировать диалоговое окно.

Но в некоторых случаях, например, в этом примере, когда он пытается распечатать квитанцию ​​о своей деятельности из браузера. Как я понимаю, в таком случае каждая секунда слишком драгоценна, чтобы тратить ее впустую, подтверждая, возможно, сотни поступлений в день.

В конце концов, это бизнес, где время - деньги!

Существует множество других случаев, когда необходимо закрыть диалоговое окно, например, продавцы eBay, распечатывающие свои этикетки перед отправкой.

Таким образом, в идеале разработчик веб-сайта должен иметь возможность указать некоторые основные параметры, такие как имя принтера, цвет / монохроматичность, качество, размер бумаги. И полностью распечатать команду из исходного кода без каких-либо действий со стороны пользователя, за исключением, конечно, настройки этих параметров только один раз.

К сожалению, большинства браузеров еще нет, поскольку их разработчики еще не осознали весь потенциал размещения ВСЕХ ВИДОВ приложений в облаке, включая приложения, использующие принтеры, такие как POS и программное обеспечение для печати этикеток! Кстати, вот отличная ниша для программного обеспечения как сервиса!

Хорошая новость заключается в том, что в Firefox уже возможно добиться чего-то похожего, где вы можете изменить настройки браузера, чтобы включить так называемую «Тихую печать», вам следует установить «Всегда», и все будет хорошо.

Уверен, у IE тоже есть способ сделать это, но я пока не нашел.

Кто-нибудь знает, каково состояние принтера и функций печати, предлагаемых другими основными браузерами, такими как Chrome и Opera?

9 голосов
/ 05 марта 2013

Это вполне возможно. Я работаю в банковской сфере, и у меня была веб-страница, которую кассиры должны были автоматически распечатывать при публикации транзакции. Так как они проводят транзакции весь день, это замедлит их, если у них будет отображаться диалоговое окно каждый раз. Этот код выберет ваш принтер по умолчанию и распечатает его напрямую без диалогового окна.

<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>
5 голосов
/ 11 февраля 2014

Загрузите Google Chrome Версии 18.xx.xx.xx, и вы можете использовать флаги для выключения диалогового окна принтера

- киоскового NOPRINT

Что-то в этом роде, что я не могу вспомнить до предела, но Google поможет в этом. Это позволит диалогу остаться в стороне, когда вы выберете то, что хотите напечатать.

0 голосов
/ 23 ноября 2013

Я думаю, что лучшим вариантом будет либо Flash, либо Java ....

Flash очень гибок в плане настройки элементов ОС ....

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

Таким образом, пользователь может определить принтеры через принтер, который он хочет распечатать, и вы можете просто передать имя принтера функции, и этот принтер начнет печатать .....

0 голосов
/ 27 ноября 2010

Это невозможно, и для этого есть несколько веских причин:

  • пользователь может сам выбрать принтер
  • пользователь может захотеть иметь возможность контролировать, когда его принтер активируется (представьте себе неприятные всплывающие окна с автопечатью, ARRGH! )
  • пользователь может указать параметры принтера (оттенки серого или цвет, разрешение, размер, ...)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...