问题
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 方法中生成页面内容:
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();
}
}
谢谢,亚当