C# 强制打印作业为单面(打印机默认为双面)

4

问题描述
1. 我们的客户使用网络打印机,并且将其配置为双面打印(无法更改此设置)。 2. 我们必须向该打印机打印A4标签,但不能使用双面打印模式,因为标签会绕过滚筒并导致故障。 3. 当我们打印标签时,打印作业仍处于双面打印模式(通过打印到文件的PCL输出进行验证)。

待翻译内容所在行:

e.PageSettings.PrinterSettings.Duplex = Duplex.Simplex;  

没有影响。

如何强制页面以Simplex模式打印?

我们的代码
我们正在使用.Net PrintDocument / PrintController类打印到A4打印机,如下所示。这段代码来自一个测试应用程序,可以用一个简单的例子重现这个问题。

我们有一个自定义的PrintDocument类:
a) 在OnQueryPageSettings中设置打印设置

protected override void OnQueryPageSettings(QueryPageSettingsEventArgs e)
{
    // This setting has no effect
    e.PageSettings.PrinterSettings.Duplex = Duplex.Simplex;
}
b) 在 OnPrintPage 方法中生成页面内容:
在 OnPrintPage 方法中生成页面内容。
protected override void OnPrintPage(PrintPageEventArgs e)
{
    Graphics g = e.Graphics;

    int fs = 12;
    FontStyle style = FontStyle.Regular;
    Font baseFont = new Font("Arial", fs, style);

    PointF pos = new PointF(10, 10);

    g.DrawString("This is a test page", baseFont, Brushes.Black, pos);

    e.HasMorePages = false;
}

要开始操作,我们需要创建一个PrintDocument实例并将其分配给StandardPrintController,然后调用Print()方法:
void DoPrint()
{
    MyPrintDocument mydoc = new MyPrintDocument();

    PrinterSettings ps = ShowPrintDialog();
    if (ps != null)
    {
        mydoc.PrinterSettings = ps;
        StandardPrintController cont = new StandardPrintController();
        mydoc.PrintController = cont;
        mydoc.Print();
    }
}

感谢您,Adam。
1个回答

2

在OnQueryPageSettings中设置PrinterSettings.Duplex属性无效,您需要在调用Print()之前设置此属性。(现在想想似乎很明显!)

这样做可以:

void DoPrint()
{
    MyPrintDocument mydoc = new MyPrintDocument();

    PrinterSettings ps = ShowPrintDialog();
    if (ps != null)
    {
        ps.Duplex = Duplex.Simplex; // This works

        mydoc.PrinterSettings = ps;
        StandardPrintController cont = new StandardPrintController();
        mydoc.PrintController = cont;
        mydoc.Print();
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接