打印Excel文档时设置打印机托盘

时间:2014-11-10 20:24:14

标签: c# printing interop

我在c#中为word文档设置了许多关于设置打印机托盘的帖子。我需要一个Excel解决方案。

如果可能,为任何文件提供更好的解决方案。某种方法我可以传递文件路径和托盘。

修改 到目前为止,我已尝试过以下操作,但打印机设置中未进行任何可见的更改。

PrinterSettings ps = new PrinterSettings();
ps.PrinterName = @"\\localhost\HP-4515n";
var dps = ps.DefaultPageSettings;
dps.PaperSource.RawKind = 260;

OR

PrinterSettings ps = new PrinterSettings();
ps.PrinterName = @"\\localhost\HP-4515n";
PaperSource psrc = new PaperSource();
psrc.RawKind = 260;
psrc.SourceName = "unknown";
dps.PaperSource = psrc;

编辑2

我对RawKind进行了硬编码,因为托盘不会在文件来源中显示。

目前,当我打印例如。 Excel文档我显示PrinterDialog,获取所选打印机的名称并将其传递给interop Excel活动打印机属性。但是现在我需要打印大量的文档,我需要以编程方式设置所选的打印机及其特性特征托盘。

3 个答案:

答案 0 :(得分:1)

@sysboard,我从MSDN page on the PrinterSettings class看到DefaultPageSettings属性没有set方法,只有get方法。我不确定这是否可以从外部类访问...您可能会查看PageSettings class,因为它看起来有一个重载的构造函数,允许您传递指定的打印机,并且它在PaperSource上有一个set方法

答案 1 :(得分:1)

您可以使用以下代码获取可用的文件来源:

PrintDocument printDoc1 = new PrintDocument();
List<PaperSource> psList = new List<PaperSource>();
PaperSource pkSource;
for (int i = 0; i < printDoc1.PrinterSettings.PaperSources.Count; i++)
{
    pkSource = printDoc1.PrinterSettings.PaperSources[i];
    psList.Add(pkSource);
}

现在向用户展示这些选项,并获取有关使用哪种纸张来源的输入,比如第一个,您可以这样做:

PrintDocument doc = new PrintDocument();
doc.DefaultPageSettings.PaperSource = psList[0];
doc.Print();

答案 2 :(得分:0)

为什么要硬编码psrc.RawKind = 260; 要为Paper Source设置RawKind,可以使用PaperSourceKind枚举。尝试以下代码

PrintDocument doc = new PrintDocument();
PaperSource pSource = new PaperSource();
pSource.RawKind = (int)PaperSourceKind.Middle;
doc.DefaultPageSettings.PaperSource = pSource;