1. printer question follow up
- Posted by George Walters <gwalters at sc.rr.com> Aug 07, 2003
- 457 views
Is it possible to print to a printer in a non graphics/bitmap way..... Like a non windows OS does? george
2. Re: printer question follow up
- Posted by George Walters <gwalters at sc.rr.com> Aug 07, 2003
- 417 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! > >
3. Re: printer question follow up
- Posted by Pete Lomax <petelomax at blueyonder.co.uk> Aug 07, 2003
- 404 views
On Thu, 7 Aug 2003 11:11:28 -0400, George Walters <gwalters at sc.rr.com> wrote: > > >Is it possible to print to a printer in a non graphics/bitmap way..... = Like >a non windows OS does? f=3Dopen("lpt1","wb") puts(f,"...") etc, close(f) Pete
4. Re: printer question follow up
- Posted by eugtk at yahoo.com Aug 07, 2003
- 397 views
--- George Walters <gwalters at sc.rr.com> wrote: > thanks, but that's way over me... i'm not a "C" > person... George: Perhaps I misunderstood the question - but can't you just print to the LPT in the same way as DOS programs do? Using puts() and printf()? Regards, Irv
5. Re: printer question follow up
- Posted by George Walters <gwalters at sc.rr.com> Aug 07, 2003
- 406 views
well, maybe it's just that simple, the demo's seem'd to be bit map approaches. i'll give that a try. thanks george ----- Original Message ----- From: <eugtk at yahoo.com> To: "EUforum" <EUforum at topica.com> Subject: Re: printer question follow up > > > --- George Walters <gwalters at sc.rr.com> wrote: > > > thanks, but that's way over me... i'm not a "C" > > person... > > George: > > Perhaps I misunderstood the question - but can't you > just print to the LPT in the same way as DOS programs > do? Using puts() and printf()? > > Regards, > Irv > > > > TOPICA - Start your own email discussion group. FREE! > >
6. Re: printer question follow up
- Posted by George Walters <gwalters at sc.rr.com> Aug 10, 2003
- 427 views
Irv, I did what you suggested and it was really puzzling. It printed things fine to the printer but the first 2-3 lines of the printout that should have been at the top of the page were at the bottom of the page. I had no idea what caused this....after opening lpt am I supposed to do something else to position the output to the top? george ----- Original Message ----- From: <eugtk at yahoo.com> To: "EUforum" <EUforum at topica.com> Subject: Re: printer question follow up > > > --- George Walters <gwalters at sc.rr.com> wrote: > > > thanks, but that's way over me... i'm not a "C" > > person... > > George: > > Perhaps I misunderstood the question - but can't you > just print to the LPT in the same way as DOS programs > do? Using puts() and printf()? > > Regards, > Irv > > > > TOPICA - Start your own email discussion group. FREE! > >
7. Re: printer question follow up
- Posted by eugtk at yahoo.com Aug 11, 2003
- 399 views
--- George Walters <gwalters at sc.rr.com> wrote: > Irv, I did what you suggested and it was really > puzzling. It printed things > fine to the printer but the first 2-3 lines of the > printout that should have > been at the top of the page were at the bottom of > the page. I had no idea > what caused this....after opening lpt am I supposed > to do something else to > position the output to the top? By printing directly to the printer you now have to deal with the peculiarities of each printer brand. Remember the "escape codes" which were often different for different brands and even different models of the same brand? You'll probably have to dig up some manuals, and find a reset or clear-the-buffer or top-of-page code to send to the printer. Perhaps also some codes to set the margins, fonts (if available), etc. etc. Then when your client changes printers, do it all over again. Printing is one area where Windows is actually a big improvement over what we had before. Regards, Irv