[comp.lang.postscript] Postscript printing small and mirrorimaged!!

raj@pollux.geog.ucsb.edu (Richard A Johnson) (12/07/90)

We have one postscript printer here which gets print jobs from all over a
little network.  (Mostly DOS machines)  If someone prints a graphics image
from a DOS program named "CorelDraw" to the printer and then someone sends
a normal text file (which gets converted to postscript via the transcript
program "pstext", but I've used "enscript" also with the same results), the
CorelDraw image comes out just fine but the text file gets printed in a
little tiny font and in mirror image fashion!

Has anyone seen this before?  Is there some command that I can put in the
header of all jobs going to the printer which would fix this?  If someone
can give me hint of what's happening (what CorelDraw is not resetting
correctly), I can call them and turn in a bug report.

HELP!

/raj

rokicki@Neon.Stanford.EDU (Tomas G. Rokicki) (12/07/90)

> If someone prints a graphics image
> from a DOS program named "CorelDraw" to the printer and then someone sends
> a normal text file, the
> CorelDraw image comes out just fine but the text file gets printed in a
> little tiny font and in mirror image fashion!

Your `spooler' (whoever is managing the printer) is not terminating each
job by a control-D.  It is the spooler's responsibility to do this.  This
control-D (which many programs mistakenly include in their PostScript
output) tells the printer that the job is over, reset back to initial
conditions for the next job.

-tom

ken@csis.dit.csiro.au (Ken Yap) (12/07/90)

>We have one postscript printer here which gets print jobs from all over a
>little network.  (Mostly DOS machines)  If someone prints a graphics image
>from a DOS program named "CorelDraw" to the printer and then someone sends
>a normal text file (which gets converted to postscript via the transcript
>program "pstext", but I've used "enscript" also with the same results), the
>CorelDraw image comes out just fine but the text file gets printed in a
>little tiny font and in mirror image fashion!

Yes, this happens when one job changes the transformation matrix and
then the next job follows without an intervening control-d (EOJ).

>Has anyone seen this before?  Is there some command that I can put in the
>header of all jobs going to the printer which would fix this?  If someone
>can give me hint of what's happening (what CorelDraw is not resetting
>correctly), I can call them and turn in a bug report.

Make sure all your jobs are properly terminated by control-d. Ideally
the spooling software should append this, but in PC environments
programs tack on a control-d at the end.

claus@suncvt13.verfahrenstechnik.uni-stuttgart.de (Claus Fleischer) (12/07/90)

In article <7699@hub.ucsb.edu> raj@pollux.geog.ucsb.edu (Richard A Johnson) writes:
>We have one postscript printer here ...

>                                  ... If someone prints a graphics image
>from a DOS program named "CorelDraw" to the printer and then someone sends
>a normal text file (which gets converted to postscript via the transcript
>program "pstext", but I've used "enscript" also with the same results), the
>CorelDraw image comes out just fine but the text file gets printed in a
>little tiny font and in mirror image fashion!
>

We have the same problem on our installation after sending PS-output
from LaTeX (converted with dvips 4.2) to the laser printer. The behavior
Richard described occures exactly for the first page of the next
print job. 

Our laser printer is a "QMS-PS810 turbo".

 *  Is the behavior a result of a bug in the printer software ( does it
    have to be configured differently)?

 *  Is it possible that some adjustments hafe to be made in the  
    "config.ps" file from the dvips?

Any help would be appreciated.

With thanks in advance

  Claus
  claus@suncvt13.verfahrenstechnik.uni-stuttgart.de

toms@fcs260c2.ncifcrf.gov (Tom Schneider) (12/08/90)

In article <7699@hub.ucsb.edu> raj@pollux.geog.ucsb.edu (Richard A Johnson) writes:

> ...but the text file gets printed in a
>little tiny font and in mirror image fashion!

>Has anyone seen this before?  Is there some command that I can put in the
>header of all jobs going to the printer which would fix this?

Yes, that happend to me before we installed 'transcript'.  To get around it
you should be able to simply:
   initgraphics
before (or between) each job.  This should get you going quickly.  Of course,
the better solution is to get the control-D solution working.

>/raj

  Tom Schneider
  National Cancer Institute
  Laboratory of Mathematical Biology
  Frederick, Maryland  21702-1201
  toms@ncifcrf.gov

ajcd@cs.edinburgh.ac.uk (Angus Duggan) (12/08/90)

In article <371@rusux1.rus.uni-stuttgart.de>, claus@suncvt13.verfahrenstechnik.uni-stuttgart.de (Claus Fleischer) writes:
> In article <7699@hub.ucsb.edu> raj@pollux.geog.ucsb.edu (Richard A Johnson) writes:
> >We have one postscript printer here ...
> 
> >                                  ... If someone prints a graphics image
> >from a DOS program named "CorelDraw" to the printer and then someone sends
> >a normal text file (which gets converted to postscript via the transcript
> >program "pstext", but I've used "enscript" also with the same results), the
> >CorelDraw image comes out just fine but the text file gets printed in a
> >little tiny font and in mirror image fashion!
> >
> 
> We have the same problem on our installation after sending PS-output
> from LaTeX (converted with dvips 4.2) to the laser printer. The behavior
> Richard described occures exactly for the first page of the next
> print job. 
> 
What is happening is that you are sending two jobs without an end of job
terminator (\004) between them. Dvips alters the current transformation matrix
to make it similar to DVI file coordinates (origin top-left,
resolution-dependent scaling on axes); this transformation is happening twice
for the second job. The solution is:

1) If you are using dvips 5.4 (and some earlier versions, I can't remember
   when this option was added), add the -F option to the command line. If you
   don't have dvips 5.4, upgrade to it, because it's a whole lot better.

2) If you aren't using dvips, create a file with a single EOF (\004) in it,
   and add it on to anything you send to the printer.

3) Send your second job after the job timeout has expired :-)

A.
-- 
Angus Duggan, Department of Computer Science,	| I'm pink, therefore I'm Spam.
University of Edinburgh, JCMB,			| JANET:  ajcd@uk.ac.ed.lfcs
The King's Buildings, Mayfield Road,		| VOICE:  (UK) 031 650 5126
Edinburgh, EH9 3JZ, Scotland.	| OR:  ajcd%lfcs.ed.ac.uk@nsfnet-relay.ac.uk

mzellers@starnet.uucp (Mark Zellers) (12/11/90)

In article <1971@fcs280s.ncifcrf.gov> toms@fcs260c2.ncifcrf.gov (Tom Schneider) writes:
>Yes, that happend to me before we installed 'transcript'.  To get around it
>you should be able to simply:
>   initgraphics
>before (or between) each job.  This should get you going quickly.  Of course,
>the better solution is to get the control-D solution working.
>

I would definitely advise against using initgraphics as a solution to
this problem.  If you take this approach, there is a good chance that if
you send many jobs to the printer one after the other that you will run
out of virtual memory.  That is because the VM consumed by the previous
job will not be reclaimed by the server loop unless it sees the end of
the job.  One alternative method that will work is to surround the job
with something along the lines:
    /SaveMe save def
    ..
    ..
    ..
    SaveMe restore

This will not only get the coordinate system back to the default but
also reclaim the VM.


Mark H. Zellers
1550 Cowper St
Palo Alto, CA 94301
decwrl.dec.com!batgirl!bwayne!mark

pipkinsj@cpqhou.uucp (Jeff Pipkins @Adv Dev@SE hou ) (01/03/91)

In article <371@rusux1.rus.uni-stuttgart.de> claus@suncvt13.verfahrenstechnik.uni-stuttgart.de (Claus Fleischer) writes:
>In article <7699@hub.ucsb.edu> raj@pollux.geog.ucsb.edu (Richard A Johnson) writes:
>>We have one postscript printer here ...
>
>>                                  ... If someone prints a graphics image
>>from a DOS program named "CorelDraw" to the printer and then someone sends
>>a normal text file (which gets converted to postscript via the transcript
>>program "pstext", but I've used "enscript" also with the same results), the
>>CorelDraw image comes out just fine but the text file gets printed in a
>>little tiny font and in mirror image fashion!
>>
>
>We have the same problem on our installation after sending PS-output
>from LaTeX (converted with dvips 4.2) to the laser printer. The behavior
>Richard described occures exactly for the first page of the next
>print job. 
>

Just send a control-D (ASCII 04) to the printer to reset it after running
CorelDraw.  You can use the DOS echo command "echo ^D>lpt1" (of course,
the ^D is what DOS displays when you hold down the ctrl key and hit D,
but it sends the correct code).

-- 
Jeff D. Pipkins (uunet!cpqhou!pipkinsj)

My disclaimer: My opinions do not necessarily reflect those of my employer.
Papaw's disclaimer: I've already told you more than I know.

brown@vidiot.UUCP (Vidiot) (01/03/91)

In article <1991Jan02.190554.5285@cpqhou.uucp> pipkinsj@cpqhou.UUCP (Jeff Pipkins @Adv Dev@SE hou ) writes:
<
<Just send a control-D (ASCII 04) to the printer to reset it after running
<CorelDraw.  You can use the DOS echo command "echo ^D>lpt1" (of course,
<the ^D is what DOS displays when you hold down the ctrl key and hit D,
<but it sends the correct code).

According to the new PostScript reference manual, the ^D character is device
dependent and should not be used (page 26).
-- 
      harvard\     att!nicmad\        spool.cs.wisc.edu!astroatc!vidiot!brown
Vidiot  ucbvax!uwvax..........!astroatc!vidiot!brown
      rutgers/  decvax!nicmad/ INET:<@spool.cs.wisc.edu,@astroatc:brown@vidiot>

pipkinsj@cpqhou.uucp (Jeff Pipkins @Adv Dev@SE hou ) (01/05/91)

In article <1196@vidiot.UUCP> brown@vidiot.UUCP (Vidiot) writes:
>In article <1991Jan02.190554.5285@cpqhou.uucp> pipkinsj@cpqhou.UUCP (Jeff Pipkins @Adv Dev@SE hou ) writes:
><
><Just send a control-D (ASCII 04) to the printer to reset it after running
><CorelDraw.  You can use the DOS echo command "echo ^D>lpt1" (of course,
><the ^D is what DOS displays when you hold down the ctrl key and hit D,
><but it sends the correct code).
>
>According to the new PostScript reference manual, the ^D character is device
>dependent and should not be used (page 26).

That's an interesting statement.  The ^D scheme is implemented in every
PostScript printer ever shipped.  What alternative, if any, is offered by
page 26?

-- 
Jeff D. Pipkins (uunet!cpqhou!pipkinsj)

My disclaimer: My opinions do not necessarily reflect those of my employer.
Papaw's disclaimer: I've already told you more than I know.

henry@angel.Eng.Sun.COM (Henry McGilton) (01/05/91)

In article <1991Jan04.173636.9674@cpqhou.uucp>,
    pipkinsj@cpqhou.uucp (Jeff Pipkins @Adv Dev@SE hou ) writes:

    ***  Just send a control-D (ASCII 04) to the printer to reset it after
    ***  running CorelDraw.  You can use the DOS echo command "echo
    ***  ^D>lpt1" (of course, the ^D is what DOS displays when you hold
    ***  down the ctrl key and hit D, but it sends the correct code).

In article <1196@vidiot.UUCP> brown@vidiot.UUCP (Vidiot) writes:
    **  According to the new PostScript reference manual, the ^D
    **  character is device dependent and should not be used (page 26).

Vidiot is correct in stating that Control-D characters are device
dependent.  That does not mean, however, that they should not be used
at all -- they can be used with printers that support Control-D.

In article <1991Jan02.190554.5285@cpqhou.uucp>
    pipkinsj@cpqhou.UUCP (Jeff Pipkins @Adv Dev@SE hou ) writes:

    *  That's an interesting statement.  The ^D scheme is implemented in
    *  every PostScript printer ever shipped.  What alternative, if any,
    *  is offered by page 26?

The Control-D character is a device dependent PROTOCOL that some
PostScript printers suport.  If your particular PostScript printer
supports this protocol, it's fine for you to use a Control-D character
to indicate End Of Job to the printer in question.

If your printer does not support this protocol, as for example,
a Linotronic connected via an Ethernet will not, you then must
use whatever the defined protocol is for indicating end of job
to the printer.

brown@vidiot.UUCP (Vidiot) (01/05/91)

In article <1991Jan04.173636.9674@cpqhou.uucp> pipkinsj@cpqhou.UUCP (Jeff Pipkins @Adv Dev@SE hou ) writes:
<In article <1196@vidiot.UUCP> brown@vidiot.UUCP (Vidiot) writes:
<>In article <1991Jan02.190554.5285@cpqhou.uucp> pipkinsj@cpqhou.UUCP (Jeff Pipkins @Adv Dev@SE hou ) writes:
<><
<><Just send a control-D (ASCII 04) to the printer to reset it after running
<><CorelDraw.  You can use the DOS echo command "echo ^D>lpt1" (of course,
<><the ^D is what DOS displays when you hold down the ctrl key and hit D,
<><but it sends the correct code).
<>
<>According to the new PostScript reference manual, the ^D character is device
<>dependent and should not be used (page 26).
<
<That's an interesting statement.  The ^D scheme is implemented in every
<PostScript printer ever shipped.  What alternative, if any, is offered by
<page 26?

Unusual for me to say or unusual for Adobe to say?  In any event that is what
the book says and they give no alternative.  Is the ^D supposed to clear all
of VM and restore the printer to a "power-up" state?
-- 
      harvard\     att!nicmad\        spool.cs.wisc.edu!astroatc!vidiot!brown
Vidiot  ucbvax!uwvax..........!astroatc!vidiot!brown
      rutgers/  decvax!nicmad/ INET:<@spool.cs.wisc.edu,@astroatc:brown@vidiot>

louie@sayshell.umd.edu (Louis A. Mamakos) (01/06/91)

<That's an interesting statement.  The ^D scheme is implemented in every
<PostScript printer ever shipped.  What alternative, if any, is offered by
<page 26?

Err, excuse me.. The two Ethernet attached DEC PostScript printers
that I use know nothing at all about control-D characters.  Please..
the control-D character IS NOT PART OF THE PostScript LANGUAGE.  It is
a mechanism for indicating ``end of file'' on most serially attached
PostScript printers; but that is not the case when you use Appletalk
or a TCP connection across an Ethernet to talk to your PostScript
printer.

louie

pipkinsj@cpqhou.uucp (Jeff Pipkins @Adv Dev@SE hou ) (01/08/91)

The question I responded to specified a parallel interface.  Ctrl-D's are
only for parallel and serial interfaces, and as many of you have pointed
out, have no place in network sessions such as Appletalk, Ethernet, or
whatevernet.  It is true that the Ctrl-D character is not part of the
PostScript language itself.  The PostScript language has no convention
for marking the end of a job!  If you are connected to a network, then
finding the end of the job is no problem, since the protocol implies that
information (end of file == end of job).  If you are connected to serial
or parallel, then the printer itself (or other graphics device) needs to
know when the job ends.  All Adobe PostScript implementations on every
device I have ever heard of use the Ctrl-D to mark the end of the job
on parallel or serial channels.  This does not mean that it's part of the
language -- but it seems to be a part of Adobe's implementation of the
PostScript language.

In reference to what actually happens: before running a job, the PostScript
interpreter's "server loop" does a "save".  When PostScript gets a
Ctrl-D (over the parallel or serial port) it does a "restore" (thereby
reclaiming VM) and then another "save" for the next job.  That's why
you have to exit the server loop to make changes that persist from job
to job.

BTW, the Ctrl-C character (over parallel or serial) "cancels" the current
job, but I'm not completely sure what is meant by that, nor whether it
is implemented the same in all cases.  On the serial channel only, you
can send a Ctrl-T and it will send a short status string back.  This is
also clearly not part of the PostScript language, but it is there in
most implementations.

Well, there's the can of worms.  Everybody dig in...



-- 
Jeff D. Pipkins (uunet!cpqhou!pipkinsj)

My disclaimer: My opinions do not necessarily reflect those of my employer.
Papaw's disclaimer: I've already told you more than I know.

louie@sayshell.umd.edu (Louis A. Mamakos) (01/08/91)

In article <1991Jan07.165702.26015@cpqhou.uucp> pipkinsj@cpqhou.UUCP (Jeff Pipkins @Adv Dev@SE hou ) writes:

>device I have ever heard of use the Ctrl-D to mark the end of the job
>on parallel or serial channels.  This does not mean that it's part of the
>language -- but it seems to be a part of Adobe's implementation of the
>PostScript language.

No, its an implementation of a communications facility that allows you
to submit jobs to the PostScript interpreter.  In my mind, the
distiction is importatnt.  On an Ethernet attached DEC LPS40, you send
an OP_EOJ (end of job) opcode on the TCP connection to distinguish
between different jobs of the same print session.  Normal PostScript
program text is transmitted to the printer across the TCP connection
using an OP_DATA opcode, for example.

>BTW, the Ctrl-C character (over parallel or serial) "cancels" the current
>job, but I'm not completely sure what is meant by that, nor whether it
>is implemented the same in all cases. 

A control-C character on a serial or parallel printer causes an
"interrupt" error condition for the currently executing job.  On an
Ethernet attached DEC LPS40, you send an OP_KILL opcode as TCP urgent
data to accomplish the same thing.

In the case of status messages, the DEC LPS40 printer transmits
logging and status messages on seperate TCP connecton(s) to one or
more management servers on the network.  It a bit of a different way
of looking at that particular issue, since multiple hosts can submit
jobs to the same printer.

In the case of my personal NEC LC-890 PostScript printer, control-T
doesn't do anything too useful on the parallel port.

If you make a distinction between the PostScript program which puts
marks on the page from the details of how you shove the bits from here
to there, you don't get yourself into too many problems.  Perhaps in
the future, PostScript printer on network can access NFS servers
directly, and we simply give them the name of the PostScript file to
print which resides somewhere on an insititutional filesystem.  

Or perhaps Adobe will implement the 8 bit transparent serial channel
on some PostScript printer products which specifies who to escape link
control character codes.  There's an interesting document on the Adobe
archive server that discusses how this might be done.

The wonderful thing about PostScript is that the applications which
generate PostScript files can be ignorant of the mechanisms used to
print them.

louie