2

Я использую Firefox 23.0.1. Я хочу полностью отключить печать из Firefox, это возможно?

Я использовал about:config, чтобы установить следующие свойства:

  • print.always_print_silent = true
  • print.show_print_progress = false

Это дает мне половину пути, Firefox печатает тихо и не показывает никаких признаков печати. Однако задание все еще отправляется на принтер по умолчанию.

Затем я попытался установить print_printer в пустую строку, поскольку это, кажется, принтер по умолчанию, но он все равно отправляет задание на этот принтер.

Есть ли способ полностью отключить печать для Firefox, желательно через настройки в about:config?

Я хочу сделать это, так как у меня есть автоматические тесты с половинной нагрузкой (используя Selenium вместе с JMeter). В тестируемом приложении встроен файл PDF, в котором есть JavaScript, отправляющий файл PDF на принтер по умолчанию. Если печать невозможно отключить, на принтер будет отправлено много мусорных заданий.

2 ответа2

5

Вы можете отключить функцию печати JavaScript, чтобы предотвратить действия печати, инициированные JS.

Есть два способа отключить функцию JS:

  • Установите политики, чтобы запретить функцию
  • Замените его фиктивной функцией

  • Другой вариант - установить фиктивный принтер для всей системы.


Вариант 1: Политики безопасности

Вы можете установить Настраиваемые политики безопасности , добавив следующую строку в файл user.js (примечание: Firefox должен быть полностью закрыт перед изменением этого файла):

user_pref("capability.policy.default.Window.print", "noAccess");

Кроме того, вы можете перейти к about:config и добавить новый строковый ключ с тем же именем и значениями. Обратите внимание, что вы не сможете увидеть или удалить этот ключ из пользовательского интерфейса конфигурации.

Если вы хотите заблокировать это только на определенных сайтах, должно работать следующее (замените примеры доменов):

user_pref("capability.policy.blockPrinting.Window.print", "noAccess");
user_pref("capability.policy.blockPrinting.sites", "http://example.com http://something.example.com");

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


Вариант 2: фиктивная функция

Вы можете заменить функцию печати фиктивной JS-функцией следующим образом:

window.print = function(){};

Любые вызовы window.print после этого ничего не сделают. Вы можете выполнить это на требуемой странице, например, с помощью (Greasemonkey) usercript.


Вариант 3: Макетный принтер

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

Этот вопрос касается создания фиктивного принтера в Windows.

1

Я не понимаю, как это теперь связано с Firefox. Это больше о задании на печать.

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

Возможно, вам удастся создать «поддельный» принтер (просто установите драйверы и программное обеспечение, установите его по умолчанию, чтобы задание на печать никогда не выполнялось).

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .