代码之家  ›  专栏  ›  技术社区  ›  Renaud Bompuis

保持打印机设置

  •  4
  • Renaud Bompuis  · 技术社区  · 16 年前

    在.NET中保留/保存打印机设置的最佳方法是什么? 在.NET 1.1中,在 PrinterSetting 对象,还有一些 workarounds 但我想知道,在最新版本的框架中,是否没有更好或更简单的方法来实现这一点。

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

    4 回复  |  直到 9 年前
        1
  •  4
  •   Nicholas Piasecki    16 年前

    我做了一个相当贫民区的方法 dumping the current DEVMODE and overwriting it back when they want to use it again 把一些专有的打印机设置发送到工作中的复印机上。我找不到一种更好的方法来获得一些仅仅是通过打印API未公开的属性(例如旧的Firey控制器上的专有装订和折叠选项……我认为新的XPS打印机型号支持这些功能,但Lord只知道我们什么时候会开始看到行业对此的支持)。

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

    祝你好运!

        2
  •  1
  •   Dmitry Shechtman    16 年前

    你应该上课 PrinterSettings .

        3
  •  0
  •   Taran    16 年前

    非编程答案是:使用2003 R2 Server Adminpack中的打印管理控制台导出打印机配置。也许这个功能有一个API,可以从.NET调用wich。

        4
  •  0
  •   Marco Guignard    9 年前

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

    当试图取消对象的序列化时,此属性必须有一个值以避免出现异常。

    如果要保存ReportViewer的打印机设置

    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
    

    无论如何,保存打印机设置将只保留“标准”值。如果你想坚持每个驱动程序所拥有的异国情调,就必须使用devmode。