使用Winspool API打印Html文件错误

时间:2016-07-19 20:01:16

标签: c++ printing

我有一个用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;
}

感谢。

最诚挚的问候。

圣保罗

0 个答案:

没有答案