Една заявка, която се появява много в различните Javascript форуми, пита как да изпратите страницата директно на принтера, без първо да се показва диалогов прозорец за печат.
Вместо да ви кажа само това това не може да се направи може би обяснението защо не е възможна такава опция би било по-полезно.
Кой диалогов прозорец за печат се показва, когато някой натисне бутон за печат в техния браузър или Javascript window.print () Изпълнението на метода зависи от операционната система и какви принтери са инсталирани на компютъра.
Тъй като повечето хора работят на Windows на своя компютър, нека първо да опишем как работи настройката за печат в тази операционна система. Операционните системи * nix и Mac се различават леко в детайлите, но като цяло са настроени сходно.
Диалогов прозорец за печат
В диалоговия прозорец за печат в Windows има две части. Първият от тях е част от Windows API (интерфейс за програмиране на приложения). API е набор от общи кодови парчета, които се съхраняват в различните DLL (
Библиотека с динамични връзки) файлове, които са част от Windows операционна система. Всяка програма на Windows може (и трябва) да извика API за изпълнение на общи функции, като показване на диалоговия прозорец за печат, така че да е така да работи по един и същи начин във всички програми и да няма различни опции на различни места по начина, по който опцията за печат се върна в програмата DOS дни. API за диалог на печат също осигурява общ интерфейс, позволяващ на всички програми по-скоро достъп до един и същ набор драйвери за принтер отколкото производителите на принтери, които трябва да създадат софтуер за драйвери за своя принтер за всяка отделна програма, която иска да използва то.Драйверите на принтера са другата половина на диалоговия прозорец за печат. Има няколко различни езика, които различните принтери разбират, че те използват за контролиране на отпечатването на страницата (напр. PCL5 и Postscript). Драйверът на принтера инструктира приложния API за това как да преведете стандартния вътрешен формат за печат че операционната система разбира на потребителски език за маркиране, който конкретният принтер разбира. Той също така настройва опциите, които диалоговият прозорец за печат показва, за да отразява опциите, предлагани от конкретния принтер.
Работа с принтера
На отделен компютър може да няма инсталирани принтери, може да има един локален принтер, може да има достъп до няколко принтера по мрежа, той дори може да бъде настроен да печата в PDF или предварително форматиран печат файл. Когато са дефинирани повече от един "принтер", единият от тях е обозначен като принтер по подразбиране, което означава, че той е този, който показва своите данни в диалоговия прозорец за печат, когато се появи за първи път.
Операционната система следи принтера по подразбиране и идентифицира този принтер към различните програми на компютъра. Това позволява на програмите да прехвърлят допълнителен параметър към приложния API, като му казват да печата директно на принтера по подразбиране, без да се показва първо диалоговия прозорец за печат. Много програми имат две различни опции за печат - запис в менюто, който показва диалоговия прозорец за печат и бутон за бърз печат на лентата с инструменти, който се изпраща директно до принтера по подразбиране.
Когато имате уеб страница в интернет, която посетителите ви ще отпечатват, вие нямате информация за какви принтери или съответни принтери разполагат. Повечето принтери по света са конфигурирани да печатат на хартия A4, но не можете да гарантирате, че принтерът е настроен по подразбиране. Една страна в Северна Америка използва нестандартен размер на хартията, който е по-къс и по-широк от A4. Повечето принтери са настроени за разпечатване в портретен режим (където по-тясната посока е ширината, но някои могат да бъдат зададени на пейзажа, където по-дългият размер е ширината. Разбира се, всеки принтер също има различни полета по подразбиране в горната, долната и страничната част на страница дори преди собствениците да влязат и да променят всички настройки, за да превърнат принтера по начина, по който те искате.
Като се имат предвид всички тези фактори, няма начин да разберете дали принтерът по подразбиране с неговата конфигурация по подразбиране ще разпечата вашата мрежа страница на A3 с пренебрежими маржове или на A5 с огромни маржове (оставяйки малко повече от площ с размер на пощенска марка в средата на страница). Вероятно можете да предположите, че повечето ще имат площ за печат на страницата с приблизително 16 см х 25 см (плюс или минус 80%).
Нужди от печат
Тъй като принтерите варират толкова много между потенциалните ви посетители (спомена ли някой лазерни принтери, мастиленоструйни принтери, цветни или черно-бели) само, качество на снимката, режим на чернова и много други) няма как да кажете какво ще трябва да направят, за да разпечатат разумно страницата ви формат. може би имат отделен принтер или втори драйвер за същия принтер, осигуряващ напълно различни настройки специално за уеб страници.
На следващо място, идва въпросът какво могат да искат да отпечатват. Искат ли цялата страница или са избрали само част от страницата, която искат да отпечатват? Ако вашият сайт използва рамки, искат ли да отпечатват всички кадри по начина, по който се появяват на страницата, искат ли да отпечатват всеки кадър поотделно или просто искат да отпечатват определен кадър?
Необходимостта да се отговори на всички тези въпроси води до съществено значение, че диалоговият прозорец за печат се появява винаги, когато те са искате да отпечатате нещо, така че да могат да се уверят, че настройките са правилни, преди да ударят печата бутон. Повечето браузъри също така предоставят възможност за добавяне на бутон за "бърз печат" към една от лентите с инструменти на браузъра, за да позволят страницата, която ще бъде отпечатана на принтера по подразбиране, като се използват настройките на браузъра по подразбиране относно това, което трябва да се отпечата и как.
Javascript
Браузърите не правят това множество настройки на браузъра и принтера достъпни за Javascript. Javascript се занимава основно с промяна на тока уеб страница и така уеб браузърите предоставят минимална информация за самия браузър и до никаква информация за наличната за тях операционна система Javascript тъй като Javascript не трябва да знае тези неща, за да изпълнява тези неща, които Javascript е предназначен да прави.
Основната сигурност казва, че ако нещо като Javascript не трябва да знае за операционната система и конфигурация на браузъра, за да се манипулира уеб страницата, тогава тя не трябва да бъде снабдена с това информация. Не е като Javascript трябва да може да променя настройките на принтера на подходящи стойности за отпечатване на текущата страница, защото за това не е Javascript - това е работата на печата диалоговия прозорец. Следователно браузърите предоставят на Javascript само онези неща, които Javascript трябва да знае, като например размера на екрана, налично пространство в прозореца на браузъра за показване на страницата и подобни неща, които помагат на Javascript да разбере как е разположена страницата. Настоящата уеб страница е единствената грижа на Javascript.
Интранет
Интранетите са, разбира се, съвсем различен въпрос. С интранет знаете, че всички достъп до страницата използва конкретен браузър (обикновено това е скорошна версия на Internet Explorer) и има специфична разделителна способност на екрана и достъп до конкретни принтери. Това означава, че има смисъл в интранета да може да печата директно на принтера без показване на диалоговия прозорец за печат, защото човекът, който пише уеб страницата, знае на кой принтер ще бъде отпечатано на.
Следователно заместителят на Internet Explorer за Javascript (наречен JScript) има малко повече информация за браузъра и операционната система, която прави самият Javascript. Отделните компютри в мрежата, работеща с интранета, може да могат да бъдат конфигурирани така, че да позволяват JScript window.print () команда запис директно на принтера, без да се показва диалогов прозорец за печат. Тази конфигурация трябва да бъде настроена поотделно на всеки клиентски компютър и е далеч извън обхвата на статия за Javascript.
Когато става въпрос за уеб страници в интернет, няма абсолютно никакъв начин да настроите Команда Javascript да изпратите директно до принтера по подразбиране. Ако вашите посетители желаят да направят това, те ще трябва да настроят свой собствен бутон за „бърз печат“ на лентата с инструменти на браузъра си.