Проблема
1. Наш клиент имеет сетевой принтер, который настроен на печать в Duplex (это не может быть изменено).
2. Мы должны печатать листы А4 с этикетками на этом принтере, но он не должен быть в дуплексном режиме, когда этикетки обходят ролики и загрязняются.
3. Когда мы печатаем наши ярлыки, задание на печать по-прежнему находится в дуплексном режиме (проверяется путем проверки вывода PCL путем печати в файл).C# работа сила печати быть Simplex (принтер по умолчанию Duplex)
Линия
e.PageSettings.PrinterSettings.Duplex = Duplex.Simplex;
не имеет никакого эффекта.
Как заставить страницу печатать в Simplex?
Наш Кодекс
Мы печать на принтер формата А4 с использованием классов .Net PrintDocument/PrintController, как показано ниже. Этот код из тестового приложения, которое может воспроизвести проблему с помощью простого примера.
У нас есть пользовательский класс PrintDocument что:
а) Устанавливает параметры печати в OnQueryPageSettings
protected override void OnQueryPageSettings(QueryPageSettingsEventArgs e)
{
// This setting has no effect
e.PageSettings.PrinterSettings.Duplex = Duplex.Simplex;
}
б) Генерирует содержимое страницы в методе 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();
}
}
Спасибо, Адам