问题描述
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。