从C#修改打印机默认设置

时间:2009-07-17 05:13:06

标签: c# printing revit-api

这是我的情况:

  • 我正在为第三方程序开发一个C#加载项
  • 此程序(Revit)使用自己的打印方法并通过其API
  • 公开它们
  • 我正在编写一个打印实用程序,它使用这些方法打印到各个位置,包括PDF打印机
  • 我正在使用PDF995作为打印机并修改其.ini文件以使其自动化。
  • 基本上我在API中调用print方法,将活动图形打印到指定的打印机。

我的问题是,在PDF995上,如果你转到Windows中的打印首选项,默认情况下将方向设置为“纵向”。我需要风景。这些设置似乎覆盖了我在Revit API中设置的任何内容,因此我需要一种更改Windows设置的方法。

我试过这段代码:

PrintDocument printDocument = new PrintDocument();
printDocument.PrinterSettings.PrinterName = "PDF995";
printDocument.DefaultPageSettings.Landscape = true;

在API中调用print函数之前,它没有任何区别。我看不到编辑pdf995 ini来设置这些设置的方法。这是我需要覆盖的Windows设置。

我在网上看到了一些C ++代码,我可以调用它来处理打印机,但找不到更改默认设置的示例。

有人能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:2)

我使用这些组件取得了很大的成功:

http://www.merrioncomputing.com/Download/PrintQueueWatch/index.htm http://printqueuewatch.codeplex.com/Wiki/View.aspx?title=Home

此系列提供各种有用的打印选项。它主要集中在监视打印队列,但是从内存中可以选择更改打印机设置和作业属性。

答案 1 :(得分:0)

我认为使用Autodesk.Revit.DB.PrintManager的许多设置都是“占位符”,但如果打印机控制这些设置,则会忽略Revit移植到它的值。我尝试使用完整路径设置.PrintToFileName,但在BlueBeam中制作PDF仍然会将文件发送到MyDocuments,我必须从中复制它。您是否尝试将PDF995复制到PDF995X(例如)并将其修改为默认为横向(而PDF995保留默认的纵向)?过去,当打印机坚持使用存储的默认值而不是请求的默认值时,我使用过这种方法。