PrintDocument добавляет дополнительную пустую страницу к заданию на печать

Когда я когда-либо печатаю этикетку с изображением на принтере zebra, этикетка печатается нормально, а затем подается дополнительная пустая этикетка, что впоследствии приводит к смещению верхнего поля каждой отпечатанной этикетки.

Я просмотрел онлайн и рассмотрел множество вопросов, которые уже были опубликованы (например, printdocument добавляет пустую страницу), без решения.

Я успешно протестировал печать файла изображения непосредственно из Windows Photo Viewer, а также из самой программы этикеток. Проблема возникает только при запуске программы с помощью PrintDocument. Ниже мой код

    var printDoc = new PrintDocument {PrinterSettings = {PrinterName = printerName}};
    printDoc.PrintPage += (sender, args) =>
    {
        using(Image img = Image.FromFile(filePath))
        {   //file is 900x300, DPI 300, and print page is 3x1 inches
            args.Graphics.PageUnit = GraphicsUnit.Document;
            args.Graphics.DrawImage(img, 0, 0, img.Width, img.Height);
            args.HasMorePages = false;
        }
    };

    printDoc.Print();

Я попытался установить для ширины и высоты гораздо меньшие значения, когда рисую изображение, но оно все равно будет печатать пустую этикетку! Любая помощь будет принята с благодарностью.


person lilbean    schedule 06.12.2017    source источник
comment
Убедитесь, что ваш принтер не настроен для печати страницы-разделителя. Опубликованный код не дублирует проблему для меня. Если вы печатаете в PrintPreviewDialog, получаете ли вы дополнительную страницу?   -  person LarsTech    schedule 06.12.2017
comment
Размер бумаги имеет значение, он должен соответствовать материалу для этикеток, загруженному в принтер. Трудно догадаться, почему это будет хорошо работать в PhotoViewer, а не в программе, которая, кажется, не выбирает какой-либо размер бумаги.   -  person Hans Passant    schedule 06.12.2017
comment
@LarsTech, спасибо! Я дважды проверил, не задана ли страница-разделитель, и даже безуспешно пытался удалить настройку чтения носителя на основе пробелов в метках. Я попробую открыть диалоговое окно предварительного просмотра, чтобы увидеть, что произойдет.   -  person lilbean    schedule 06.12.2017
comment
@HansPassant Я попытался установить PaperSize, но безуспешно. Спасибо за ваше предложение!   -  person lilbean    schedule 07.12.2017
comment
Позвоните в Zebra для получения поддержки, если вы используете их драйвер принтера.   -  person Hans Passant    schedule 07.12.2017


Ответы (1)


Я понял проблему. Это происходит только при запуске программы как службы Windows. Он переопределит любые настройки, которые у вас есть для локально подключенного принтера, и будет использовать настройки сетевого принтера по умолчанию. Запуск программы как консольного приложения работал должным образом. Решением было настроить принтер по умолчанию из его сетевого расположения!

Огромное спасибо всем, кто оставлял комментарии и помогал :)

person lilbean    schedule 08.12.2017