номер
Вы могли бы сделать все виды странного зависимого от ОС обнаружения (использует ли оно somedriver.dll
?) Или перехватывать имена («содержит ли оно« XPS »?»), Но в конце концов:
- 1) это не ваше дело, как я печатаю свои документы,
- 2) из-за задействованных абстракций практически невозможно определить, будет ли данный логический принтер печатать на физическом принтере или где-то еще;
- 3) это не говоря уже о сетевых драйверах (что на
\\joescomputer\someprinter
? Трудно сказать: может быть принтер, может быть генератор PDF, может быть тетя Матильда; сеть добавляет еще один уровень абстракции между вашей программой и физическое оборудование)
- 4) если мне действительно очень нужна не бумажная копия, я сделаю снимок экрана или даже реальную фотографию, или
- 5) возьмите чертову бумажную распечатку с физического принтера и пропустите ее через сканер, ругаясь на вас за бесполезную работу с моим рабочим процессом.
- Обратите также внимание на то, что 6) существуют средние и крупные решения для печати , которые предоставляют интерфейс «сетевого принтера», а затем позволяют пользователю многое делать с документом (что на тот момент существует только в виде файла спула где-нибудь на сервере): печатайте на любом из n принтеров, подключенных к системе, по электронной почте, факсу и т. д., поэтому вы не знаете заранее, будет ли документ физически печатать (или куда), даже если задание на печать покидает компьютер.
По сути, вы сражаетесь в битве DRM в несколько ином контексте (это не моральное суждение, а констатация факта: «Я хочу ограничить выбор, который имеют пользователи моего программного обеспечения»), это ядро DRM, и вашего вопроса - независимо от моего мнения по этому вопросу); как вы, наверное, знаете, они беспорядочные и имеют неприятные побочные эффекты («что вы имеете в виду, я не могу печатать на своем физическом принтере, потому что он называется WinXPStation?!?» «мой антивирус говорит, что ваше программное обеспечение пытается связываться с мои драйверы печати, вы запускаете программы-шпионы?!? "), и их невозможно победить - всегда есть обходной путь.
Даже не думайте о том, что на самом деле отключите что-то, что вы можете думаете - это драйвер печати в файл: обратите внимание на фиаско DRM от Sony и обратите внимание, что на вас могут подать иск за незаконное вмешательство в работу компьютера.
На более прагматичной ноте, если ваше программное обеспечение отключает какую-то другую часть системы, а затем эта другая часть не работает, потому что она отключена , слово выйдет. «Я установил SomeSoftware от NigelSoft, и он сломал мой принтер» - это плохая репутация, которую трудно стереть - люди будут жаловаться, и, что бы ни происходило в Интернете, они могут остаться там навсегда (обратите внимание на различные подобные инциденты, которые вы Выясните, выполнив поиск "(производитель антивирусов) ломает Windows"). Обратите внимание, что поставщик, о котором идет речь, будет недоволен: «Ваше программное обеспечение # @ $ @ преднамеренно ломает мой замечательный специальный радужный принтер (tm), вы должны нам деньги, которые нам пришлось вернуть, и вот пара судебных исков против вас». ».
Другими словами, я чувствую, что за этим стоит какое-то нетехническое требование, которое, к сожалению, не решаемо чисто техническими средствами (и определенно не с помощью глубоких абстракций Java). Возможно, вам придется пойти легальным путем, например, добавить «вам не разрешено сохранять распечатки в электронном виде» и показать это огромными мигающими красными буквами в каждой точке, где запрашивается печать. Это будет так же неэффективно, как и техническое решение, но может быть достаточно для CYA (так как вы будете явно переносить решение на пользователя).