4

在.Net中保留/保存打印机设置的最佳方法是什么?.Net 1.1 在PrinterSetting对象的序列化中曾经存在一个错误,并且有一些解决方法,但我想知道在框架的更新版本中是否没有更好或更简单的方法来执行此操作。

主要用例是允许用户使用标准打印机设置用户界面定义给定打印机的所有打印详细信息(包括特定于打印机的选项)并保存这些信息,以便下次用户打印到该打印机时恢复它们打印机。

4

4 回答 4

3

当他们想再次使用它以将一些专有的打印机设置发送到工作中的复印机时,我做了一个非常漂亮的方法来转储当前的 DEVMODE 并覆盖它。我找不到更好的方法来获取一些根本没有通过打印 API 公开的属性(例如旧 Fiery 控制器上的专有装订和折叠选项......我认为新的 XPS 打印机型号支持对于这些,但上帝只知道我们什么时候会开始看到行业对此的支持)。

主要的警告是它不能跨机器或跨同一打印机驱动程序的不同版本移植。对我来说,这没什么大不了的,因为它是一个受控的办公环境。对您而言,我想这将取决于您的用户如何使用该程序的上下文。

祝你好运!

于 2009-02-13T04:57:25.557 回答
1

你应该使用类PrinterSettings

于 2008-10-04T09:17:32.663 回答
0

不是程序化的答案是:使用 2003 r2 服务器管理包中的打印管理控制台导出打印机配置。也许该功能有一个 API,可以从 .net 调用。

于 2008-10-31T10:57:20.917 回答
0

PrinterSetting 对象的序列化问题与 PrintFileName 属性有关。

当您尝试反序列化对象时,此属性必须具有一个值以避免异常。

如果要保存报表查看器的 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。

于 2015-11-18T16:02:53.017 回答