在.Net中保留/保存打印机设置的最佳方法是什么?
在PrinterSetting
对象的序列化中曾经存在.Net 1.1中的一个错误,并且有一些workarounds但是我想知道是否有更好或更简单的方法来执行此操作更新版本的框架。
主要用例是允许用户使用标准打印机设置用户界面定义给定打印机的所有打印详细信息(包括打印机特定选项),并将这些保存,以便下次用户恢复打印到该打印机。
答案 0 :(得分:4)
我做了dumping the current DEVMODE and overwriting it back when they want to use it again的一个非常贫民窟的方法,将一些专有的打印机设置发送到工作中的复印机。我找不到更好的方法来获得一些不通过打印API曝光的属性(例如旧Fiery控制器上的专有装订和折叠选项......我认为新的XPS打印机型号有支持对于这些,但主只知道什么时候我们会开始看到行业对此的支持。
主要的警告是,它不能跨机器或同一打印机驱动程序的不同版本移植。对我而言,这是一个没什么大不了的,因为它是一个受控制的办公环境。对您而言,我想这取决于您的用户如何使用该程序。
祝你好运!答案 1 :(得分:1)
您应该使用课程PrinterSettings
。
答案 2 :(得分:0)
没有程序化的答案是:使用2003 r2 server adminpack中的打印管理控制台来导出打印机配置。也许该功能有一个API,可以从.net。
调用答案 3 :(得分:0)
PrinterSetting对象的序列化问题与PrintFileName属性有关。
当您尝试反序列化对象时,此属性必须具有避免异常的值。
如果要保存reportviewer的PrinterSettings
Me.ReportViewer.PrinterSettings.PrintFileName = "abc"
My.Settings.PrinterSettings = Me.ReportViewer.PrinterSettings
My.Settings.Save()
让他们回来
If My.Settings.PrinterSettings IsNot Nothing Then Me.ReportViewer.PrinterSettings = My.Settings.PrinterSettings
无论如何保存PrinterSetting只会保留“标准”值。如果你想坚持每个司机所拥有的异国情调,你必须使用DEVMODE。