Send an Image File Directly to Printer

Universal Document Converter is the software based on virtual printering. With Universal Document Converter practically any document can be saved as a PDF file or an image file. You can use a post-print feature of Universal Document Converter to apply additional processing to every output file. The example below is just one of many post-print processing solutions.

// Some professional printers allow you send image files directly
// without opening in graphics viewer. In some cases you can receive
// better results if you print your drawing to high-resolution
// image file using Universal Document Converter and then send this
// image file to the printer directly.

#include "Winspool.h"
#include <io.h>

BOOL Img2Printer(char* filePath, char* prnName)
{
  HANDLE     prnHandle;
  DOC_INFO_1 di;
  DWORD	     cWritten, len;
  BOOL	     retCode;
  FILE       *fp;
  char       *buff;
////
  fp = fopen( filePath, "rb" );
  if( !fp ) return 0;

  len = _filelength( fileno(fp) );
  buff = new char[len];

  fread( buff, len, 1, fp );
  fclose( fp );
////
  if( !::OpenPrinter( prnName, &prnHandle, 0 ) )
  {
    delete buff;
    return 0;
  }
////
  di.pDocName = "My Image File";
  di.pOutputFile = 0;
  di.pDatatype = "RAW";

  if( !::StartDocPrinter( prnHandle, 1, (LPBYTE)&di ) )
    return 0;

  retCode = ::WritePrinter( prnHandle, buff, len, &cWritten );

  ::EndDocPrinter( prnHandle );
  ClosePrinter( prnHandle );

  delete buff;
  return retCode;
}


  • Marc Crames

    Marc Crames

    Student, Germany

    «The tool completely meets all of my expectations. It even allows me to precisely adjust the resolution of the created image file. In addition, as a pleasant side effect, the file is relatively immune to alteration.»