Nig*_*gel 8 java printing cross-platform
我们有一个用Java编写的现有跨平台(Mac,Windows,Linux)应用程序,它以编程方式将文档发送到默认打印机而不显示打印对话框.
在不同平台上,可以设置打印机以打印到文件.例如,在Windows中,可以将XPS Document Writer设置为默认打印机,或者更改打印机上的属性,使其保留所有文档的文件副本.
有可能检测到这个吗?我对任何建议持开放态度,但解决方案必须跨平台工作.我假设这些细节太低(并且依赖于平台),因此Java解决方案可能不可行,但如果可能的话,这将是理想的.
我们不一定在寻找防弹解决方案,所以任何建议都会有所帮助,无论多么古怪!
编辑:
我意识到这里存在大量非技术问题,这可能引发很多讨论(谁曾想过它?).我想说清楚我不是DRM的粉丝(因为这已被比作)并且不想成为邪恶的:).
我很欣赏这些问题是真实的,在提出建议时我会非常清楚.但是,在我能够做到这一点之前,我必须调查技术解决方案.
Pis*_*3.0 10
没有.
你可以做各种奇怪的操作系统相关检测(是使用somedriver.dll?),还是名字嗅探("它包含'XPS'?")但最后:
\\joescomputer\someprinter?很难说:可能是打印机,可能是PDF生成器,可能是Matilda阿姨;网络在程序和物理硬件之间增加了另一层抽象)你本质上是在一个稍微不同的环境中与DRM战斗(这不是道德判断,而是事实陈述:"我想限制我的软件用户的选择"是DRM的核心,以及你的问题 - 无论我对此主题有何看法; 正如你可能知道的那样,这些都是凌乱的并且有令人不快的副作用("你是什么意思,我不能在我的物理打印机上打印,因为它被命名为WinXPStation?!?""我的防病毒软件说你的软件试图弄乱我的打印驱动程序,你是在推动间谍软件?!?"),它们是无法取胜的 - 总有一种解决方法.
甚至不要想到实际上禁用你认为是打印到文件驱动程序的东西:注意索尼的DRM惨败,并注意你可能因非法篡改计算机而被起诉.
更务实的说明,如果你的软件禁用了系统的其他部分,然后由于它被禁用而其他部分无效,那么word就会消失."我安装了NigelSoft的SomeSoftware,它打破了我的打印机"并不是一个很好的声誉,并且难以抹去 - 人们会抱怨,而且,互联网上的任何内容都可能永远留在那里(注意各种类似的事件你通过搜索"(防病毒供应商)打破Windows"来发现.另请注意,有问题的供应商不会高兴:"你的#@ $ @软件故意破坏我的Wonderful Special Rainbow Printer(tm),你欠我们退款的钱,aaand这里有几个针对你的诉讼".
换句话说,我觉得这背后有一些非技术要求,不幸的是,它不能完全通过技术手段解决(绝对不能用Java的深层抽象).您可能需要走合法路线,例如包括"您不允许以电子方式保存打印输出",并在要求打印的每个点都以巨大的红色闪烁字母显示.这与技术解决方案同样无效,但对于CYA来说可能已经足够了(因为您将明确地将决定转移给用户).