Сбросьте принтер на принтер по умолчанию в Adobe Reader JavaScript API

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

Код печати выглядит следующим образом:

var pp = getPrintParams(); // get printing parameters
pp.interactive = pp.constants.interactionLevel.automatic; // do not prompt user
pp.printerName = 'barcode_printer'; // set printer name
this.print(pp); // print

Согласно JavaScript API Ссылка (стр. 314, 583), getPrintParams() возвращает параметры печати по умолчанию, а pp.printerName, установленное на '' (пустая строка), означает принтер по умолчанию. Я понял, что все это неправда. На самом деле getPrintParams() возвращает последние использованные параметры (не новые/по умолчанию), а pp.printerName = '' не сбрасывает принтер на значение по умолчанию, вместо этого он использует последний выбранный принтер.

Кроме того, объект PrintParams, похоже, используется в разных открытых документах, поэтому я не могу сохранить имя принтера по умолчанию (прочитанное с первого вызова getPrintParams()) в какой-либо переменной, потому что на самом деле я не знаю, относится ли прочитанное значение к принтеру по умолчанию или он уже был изменен другими открытыми документами.

Поведение одинаково в разных версиях Adobe Reader (9, 10, 11) и Foxit Reader.

Помогите пожалуйста, как программно сбросить принтер на заводской?


person tomash    schedule 07.02.2013    source источник


Ответы (2)


На самом деле эту проблему можно решить с помощью объекта global, который является общим для нескольких открытых документов в одном экземпляре Adobe Reader.

В первый раз, когда документ загружается, я проверяю, содержит ли объект global (мое собственное) свойство defaultPrinter, если только я не вызываю getPrintParams(), читаю поле printerName и назначаю его global.defaultPrinter. Затем я могу просто прочитать поле, чтобы получить имя принтера по умолчанию. Код выглядит следующим образом:

if (global.defaultPrinter === undefined) {
    global.defaultPrinter = getPrintParams().printerName;
}
person tomash    schedule 18.02.2013

Установка pp.printerName = '##NameOfAPrinterThatDoesntExists##' приведет к сбросу принтера по умолчанию. Не принимайте близко к сердцу.

person Bella Gita    schedule 26.10.2017