2010-11-27 2 views
14

Ниже фрагмент кода работает нормально, но открыть окно окно диалога,Javascript для печати без диалогового окна печати

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

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

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

А также один сомнения, я хочу взять распечатки в матричном принтере, ниже фрагмент кода будет работать знать?

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; 

я разработал приложение биллинга,

Если я показать диалоговое окно печати, то он потребляет несколько секунд, чтобы дать печать, см я сделал больше принтера, у меня есть только один принтер, который является матричный, когда-либо я дать команду распечатайте, то он должен напечатать ЗАКОНОПРОЕКТ без открытого диалогового окна печати,

+2

Как вы ожидаете от пользователя выбрать принтер для печати? – 2010-11-27 15:34:06

+1

@ Игнасио Васкес-Абрамс: В большинстве систем есть понятие «принтер по умолчанию». Тем не менее, печать из браузера без подтверждения пользователя звучит как не совсем отличная идея («но КУРС, все посетители нашего сайта захотят распечатать наше новое объявление!» - всплывающие окна на экране были достаточно плохо) – Piskvor 2010-11-27 15:39:17

+0

Firefox можно настроить для печати напрямую, не показывая диалоговое окно, см. http://forums.mozillazine.org/viewtopic.php?t=48336 – Nelson 2013-10-11 12:19:12

ответ

9

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

<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> 
2

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

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

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

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

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

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

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

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

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

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

Я уверен, что IE может также иметь некоторый способ сделать это, но я еще не нашел его.

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

0

Я думаю, что лучший альтернативный будет либо флэш или Java ....

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

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

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

2

Скачать Google Chrome версии 18.xx.xx.xx и вы можете использовать флаги, чтобы выключить диалога печати

--kiosk-NOPRINT

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

Смежные вопросы