Отправка необработанных данных на принтер с помощью WritePrinter - PullRequest
1 голос
/ 30 января 2012

Я пытаюсь отправить необработанные байты на принтер. Я пробовал различные принтеры, и ничего не работает. OpenPrinter возвращает действительный дескриптор, и StartDocPrinter и StartPagePrinter успешны. Даже WritePrinter завершается успешно и записывает столько байтов, сколько было передано, и задание печати появляется в окне диспетчера очереди печати. Все выглядит как успех, и все равно ничего не печатается.

Я знаю, что запись необработанных байтов на принтер действительно зависит от принтера, поэтому я попытался распечатать в файл и отправить содержимое этого файла на WritePrinter. Все выглядит нормально и все еще нет распечатки. Что может быть не так? Все примеры кода, которые я нашел до сих пор, делают это на 100% так же, как и я. Вот код:

if (OpenPrinter(printerName, &printer, NULL))
{
    DOC_INFO_1 docInfo = {L"Print Job", NULL, L"RAW"};

    DWORD printJob = StartDocPrinter(printer, 1, (LPBYTE) &docInfo);

    if (printJob != 0)
    {
        if (StartPagePrinter(printer))
        {
            DWORD written = 0;

            if (WritePrinter(printer, (LPVOID) (LPCSTR) str, str.GetLength(), &written))
            {
            }

            EndPagePrinter(printer);
        }

        EndDocPrinter(printer);
    }

    ClosePrinter(printer);
}

[Редактировать] Принтер: Canon iP4200

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...