Отправка PDF на термопринтер (Zebra) с помощью С#

Я пытаюсь отправить PDF на термопринтер с помощью С#. Я просмотрел класс RawPrinterHelper здесь http://support.microsoft.com/kb/322091. но SendFileToPrinter не печатает файл.

Ошибки нет, и кажется, что файл печатается из очереди печати, но ничего не происходит.

Принтер работает нормально, так как я мог печатать на нем другие предметы.

Кто-нибудь знает, как я могу отправить PDF для печати или как я могу использовать SendFileToPrinter для работы на меня.

Я работаю на Windows 7.

Вот пример кода, который я использую для вызова метода SendFileToPrinter.

try
        {
            RawPrinterHelper.SendFileToPrinter(PrinterName,@"C:\test.pdf");

        }
        catch (Exception ex)
        {
            Console.WriteLine(" EXCEPTION: {0}", ex.Message);
        }

Обновление: Хорошо, может быть, я говорил слишком рано. Я могу распечатать PDF-файл на термопринтере, но проблема в том, что печать занимает пару секунд, и я ищу что-то «быстрое». Причина его медленности в том, что Adobe нужно сначала открыть.

У кого-нибудь есть идеи, как это обойти?


person Nollaig    schedule 12.06.2014    source источник
comment
Я понятия не имею, какую модель принтера вы используете, но маловероятно, что он изначально понимает формат PDF. Вы захотите печатать с помощью драйвера принтера Zebra.   -  person David Crowell    schedule 12.06.2014
comment
@DavidCrowell, я могу печатать на принтере Zebra (GK420d), используя экран предварительного просмотра PDF.   -  person Nollaig    schedule 12.06.2014
comment
Экран предварительного просмотра PDF, вероятно, печатается с использованием Windows API. Он не отправляет необработанный файл PDF на принтер.   -  person David Crowell    schedule 12.06.2014
comment
@DavidCrowell, есть идеи, как я могу печатать на драйвере принтера Zebra?   -  person Nollaig    schedule 12.06.2014
comment
Печать — это самая легкая часть. Найдите пространства имен System.Drawing и System.Drawing.Printing. Трудная часть — загрузить PDF-файл и нарисовать его на поверхности. Возможно, вам лучше использовать приложение, которое может выполнять печать PDF для вас, и вызывать его из своего приложения.   -  person David Crowell    schedule 12.06.2014
comment
Я думаю, что pdfsharp.com/PDFsharp имеет встроенный материал для простой печати PDF.   -  person CSharpie    schedule 12.06.2014


Ответы (1)


Хорошо, на самом деле разобрались.

Я смог сделать следующее, и он отлично работает.

string tempFile = @"C:\test.pdf";
            try
            {
                ProcessStartInfo gsProcessInfo;
                Process gsProcess;
                string printerName = PrinterName; 

                gsProcessInfo = new ProcessStartInfo();
                gsProcessInfo.Verb = "PrintTo";
                gsProcessInfo.WindowStyle = ProcessWindowStyle.Hidden;
                gsProcessInfo.FileName = tempFile;
                gsProcessInfo.Arguments = "\"" + printerName + "\"";
                gsProcess = Process.Start(gsProcessInfo);
                if (gsProcess.HasExited == false)
                {

                    gsProcess.Kill();
                }
                gsProcess.EnableRaisingEvents = true;

                gsProcess.Close();
            }
            catch (Exception)
            {
            }

@DavidCrowell, это за помощь.

Ноэль.

person Nollaig    schedule 12.06.2014