使用WritePrinter将原始数据发送到打印机

时间:2012-01-30 18:51:02

标签: c# c++ winapi printing

我正在尝试将原始字节发送到打印机。我尝试过各种打印机,似乎没什么用。 OpenPrinter返回有效句柄,StartDocPrinterStartPagePrinter都成功。甚至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);
}

[编辑]打印机:佳能iP4200

0 个答案:

没有答案