Re: printer question follow up
- Posted by George Walters <gwalters at sc.rr.com> Aug 07, 2003
- 416 views
thanks, but that's way over me... i'm not a "C" person... george ----- Original Message ----- From: "Kenneth Roger" <kennethroger at comcast.net> To: "EUforum" <EUforum at topica.com> Subject: RE: printer question follow up > > > > Is it possible to print to a printer in a non > > graphics/bitmap way..... Like a non windows > > OS does? --george > > Here is an example in C. It could be translated into E for exw. > > // lhp.c --link with winspool.lib > > #include <stdio.h> > #include <string.h> > #include <windows.h> > #include <winspool.h> > > char msg1[] = "usage: lhp file1 file2 .."; > char prname[] = "\\\\kenneth\\hp"; > char set[] = "\033E\033(s12H\033&l6d6e54F\033&a9l90M\033&k2G"; > // EscE --reset > // Esc(s12H --12 cpi > // Esc&l6D --6 lpi > // Esc&l6E --6 line top mrgn > // Esc&l54F --54 lines per page > // Esc&a9L --col 9 end left mrgn > // Esc&a90M --col 90 begin right mrgn > // Esc&k2G --lf=cr+lf, ff=cr+ff > > void list(FILE *p1, FILE *f1); > > int main(int argc, char **argv) > { > FILE *f1, *p1; > DOC_INFO_1 di; > if(argc<2) { printf("%s\n",msg1); return 0; } > while(--argc) > { > printf(*++argv); > f1=fopen(*argv,"rb"); > if(f1) > { > OpenPrinter(prname,&p1,NULL); > di.pDocName=*argv; > di.pOutputFile=NULL; > di.pDatatype="RAW"; > if(StartDocPrinter(p1,1,&di) > 0) > { > StartPagePrinter(p1); > list(p1,f1); > printf(" is queued on %s\n",prname); > EndPagePrinter(p1); > EndDocPrinter(p1); > } > else printf("\ncan't open %s\n",prname); > ClosePrinter(p1); > fclose(f1); > } > else printf(" not found\n"); > } > return 0; > } > > void list (FILE *p1, FILE *f1) > { > DWORD nr, nw; > char buf[129], last='\0'; > WritePrinter(p1,set,strlen(set),&nw); > do > { > nr=fread(buf,1,128,f1); > if(nr==0) break; > buf[nr]='\0'; > WritePrinter(p1,buf,nr,&nw); > last=buf[nr-1]; > } while(nr==128); > if(last!='\f') WritePrinter(p1,"\f",2,&nw); > } > > > > > TOPICA - Start your own email discussion group. FREE! > >