Печать прямо на принтер

Один вопрос, который часто встречается на различных форумах 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 см x 25 см (плюс-минус 80%).

Потребности в печати

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

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

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

Javascript

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

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

Intranets

Конечно же, интрасети – это совсем другое дело. В интрасети вы знаете, что каждый, кто обращается к странице, использует определенный браузер (обычно последнюю версию Internet Explorer) и имеет определенное разрешение экрана и доступ к определенным принтерам. Это означает, что в интрасети имеет смысл иметь возможность печатать непосредственно на принтере без отображения диалогового окна печати, потому что человек, пишущий веб-страницу, знает, на каком принтере она будет напечатана.

Заменитель Javascript в Internet Explorer (называемый JScript) поэтому содержит немного больше информации о браузере и операционной системе, чем сам Javascript. Отдельные компьютеры в сети, на которых запущена интрасеть, можно настроить так, чтобы команда JScript window.print () могла записывать данные непосредственно на принтер без отображения диалогового окна печати. Эта конфигурация должна быть настроена индивидуально на каждом клиентском компьютере и выходит далеко за рамки статьи о Javascript.

Когда дело доходит до веб-страниц на в Интернете нет абсолютно никакого способа настроить команду Javascript для отправки напрямую на принтер по умолчанию. Если ваши посетители захотят это сделать, им придется настроить собственную кнопку «быстрой печати» на панели инструментов своего браузера..

Оцените статью
recture.ru
Добавить комментарий