【问题标题】:Persisting Printer Settings保留打印机设置
【发布时间】:2008-10-04 03:44:21
【问题描述】:

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

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

【问题讨论】:

    标签: .net serialization printing settings


    【解决方案1】:

    我使用dumping the current DEVMODE and overwriting it back when they want to use it again 的一个漂亮的贫民区方法将一些专有的打印机设置发送到工作中的复印机。我找不到更好的方法来获取一些根本没有通过打印 API 公开的属性(例如旧 Fiery 控制器上的专有装订和折叠选项......我认为新的 XPS 打印机型号支持对于这些,但上帝只知道我们什么时候才能开始看到业界对此的支持)。

    主要需要注意的是,它不能跨机器移植,也不能跨同一打印机驱动程序的不同版本移植。对我来说,这没什么大不了的,因为它是一个受控的办公环境。对你来说,我想这取决于你的用户如何使用该程序。

    祝你好运!

    【讨论】:

    • 优秀的文章。非常感谢您的完整撰写!
    • 随着 XPSDrv 打印机和 PrintTickets 的出现,更好、更便携的解决方案是获取打印票证并使用它。打印票是 devmode 结构的 XML 序列化形式。参考这个[这个][1][1]:msdn.microsoft.com/en-us/library/…
    • @dirkgently 感谢您的提示。我们当时在 2.0 上。实际上,我详细说明的方法在您拥有一台旧 GDI 打印机且不通过 GetDeviceCaps 公开内容且没有 ExtEscape() 的文档/功能的情况下最有用。
    • 这看起来很棒。您知道是否可以将这些设置写为打印机默认值,而不必为每个打印作业进行设置?
    • '那确实是很久以前的事了。多亏了 Wayback Machine,它仍然存在。 web.archive.org/web/20130826203749/http://…
    【解决方案2】:

    你应该使用PrinterSettings这个类。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

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

        如果您想保存报表查看器的打印机设置

        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。

        【讨论】:

          猜你喜欢
          • 2012-08-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-07-26
          • 2015-07-07
          • 1970-01-01
          • 2010-11-08
          相关资源
          最近更新 更多