我正在使用Windows后台处理程序API来打印简单的图片。 在“TEXT”模式下,我的打印机将图片打印为文本,就像将数据转换为char一样。所以我要使用“RAW”模式,但在这种情况下没有任何附加内容 这是代码:
void camgl::printShoot() {
HANDLE print_handle;
DOC_INFO_1 docinfo1;
DWORD bytes_written;
docinfo1.pDocName = (LPTSTR)L"Shot.jpg";
docinfo1.pOutputFile = NULL;
docinfo1.pDatatype = (LPTSTR)L"RAW";
BOOL bool1, bool2, bool3, bool4;
bool1 = OpenPrinter((LPTSTR)L"Canon MG6300 series Printer", &print_handle, NULL);
bool2 = StartDocPrinter(print_handle, 1, (LPBYTE)&docinfo1);
bool3 = StartPagePrinter(print_handle);
bool4 = WritePrinter(print_handle, (LPVOID)image->imageData, (DWORD)image->imageSize, &bytes_written);
EndPagePrinter(print_handle);
EndDocPrinter(print_handle);
ClosePrinter(print_handle);
}
变量“image”的定义如下:
其中IplImage是OpenCV类型的图像。
我尝试向打印机发送换页字符,但没有成功:
int iFF = 0x0c;
WritePrinter(print_handle, (LPVOID)&iFF, (DWORD)sizeof(iFF), &bytes_written);
在这两种情况下,打印队列都会显示与printShoot()方法相对应的作业,然后清除队列时没有错误,打印机也不会打印任何内容。
==============
我添加这篇文章我刚刚发现:
http://www.codeproject.com/Articles/8916/Printing-Architecture
答案 0 :(得分:0)
WritePrinter仅支持GDI打印。
打印JPEG图像需要更多代码。 如果紧急,您可以尝试调用命令行 MS Paint打印JPEG图像
C:\Windows\System32\mspaint.exe C:\image.jpg /p
答案 1 :(得分:0)