我有一个用C ++编写的简单应用程序,用于打印Html的文档。该程序基于MSDN的RawPrinter c ++示例。
当我使用带有PostScript驱动程序的LEXMARK打印机时,我已经成功但是当我使用HP LaserJet P3015时,它不起作用,我的文档打印了html标签。
我尝试了一些HP打印机的设置,但我没有成功。
我正在使用数据类型“RAW”。
为什么Lexmark打印机工作且HP打印机无法正常工作?
我的S.O是Windows 7x 64。
int main()
{
HANDLE hPrinter;
BOOL lOpen = OpenPrinter((LPSTR)printerName,&hPrinter,NULL);
if( !lOpen )
{
printLastSOError(os_errorMsg);
return -3;
};
// prepare printer to send data (RAW)
DOC_INFO_1 DocInfo;
DocInfo.pDocName = "teste printer";
DocInfo.pOutputFile = NULL;
DocInfo.pDatatype = "RAW";
// Start Job Printer
DWORD dwJob = StartDocPrinter( hPrinter, 1, (LPBYTE)&DocInfo );
if( dwJob == 0 )
{
printLastSOError( os_errorMsg );
ClosePrinter(hPrinter);
return -4;
};
// Execute JOB
char buff[bufferSize];
DWORD nReaded;
while( ReadFile(hFile,buff,bufferSize,&nReaded,0) )
{
if( nReaded ==0 )
break;
DWORD dwBytesWritten;
if( !WritePrinter( hPrinter, buff, nReaded, &dwBytesWritten ) )
{
printLastSOError(os_errorMsg);
break;
};
};
EndDocPrinter(hPrinter);
ClosePrinter(hPrinter);
return 0;
}
感谢。
最诚挚的问候。
圣保罗