ITEM: BE6511L

How to use troff to orientate in landscape



Question:

   Env: AIX 325
        model 530

   Desc: The customer is trying to run the following:

   troff \ | hplj -landscape | qprt \

   Action: This is not working for the customer and he would like to
  know how to make the -landscape flag work.  This gives an error:

  hplj: -landscape is not valid choice.
  
 The troff itself does not support landscape.
 Cust's repsonse was yes it does he is looking at the man page right now.
 He said hplj option supports -l for landscape.
 I said the hplj is a postprocessor for troff and yes it does support
 the flag but it needs to be run seperatly, or in other piped to hplj 
 and them piped to a printer command.

 troff -mm -T hplj foo | hplj -landscape | lp -dhp -o -dp

 The hplj command man page shows that there is a -landscape
 flag, but the flag doesn't work.

Tried:

 troff -mm -T hplj file | hplj | qprt -z+ -dp

 But this didn't work.  Bet that -z+ is inserting the PCL
 sequence for landscape, but perhaps hplj is resetting this
 later in the data stream.

 I don't get the error in my AIX 4 system for
     hplj -landscape

Here is the problem. This was a change that was made for 4.1 and the
documentation for 3.2 accidentally got changed. The original
documentation for 3.2 does not have this -landscape flag in its
documentation. So, use what I showed you above until they go to aix 4.1
 I tested this at AIX 4.1 and it DOES work.

 To find a solution at AIX 3.2.5 I did the following test:
  1.  Disabled the queue
  2.  printed with:
     troff -mm -Thplj sample.txt | hplj  | qprt -Bnn -dp -Ppcl
  3.  Examined the file.  There were NO orientation commands
     such as \\033&0O to designate portrait, however the first
     command in the file was a PCL reset command \\033E.
     which does a reset of the printer and which would put it
     into Portrait mode.

I have something that now works:   (Assuming you use a virtual 
printer).  A different filter would be needed without a virtual printer.

1.  First create a filter - I call this one norset - for no_reset

/* norset.c,  compile 'cc -o norset norset.c'                   */
/* filter to remove ESC E printer reset from data stream        */
\#include        "stdio.h"
int main(void)
{        int c, c1;
        while ( (c = getc(stdin)) != EOF)
        {
                if (c==27)
                {
                  c1 = getc(stdin);
                  if (c1 != 'E')              /* Ignore the reset command */
                  {
                  putc(c, stdout);
                  putc(c1, stdout);
                  }
                  else
                     printf("\\033&1O");        /* Landscape command *//
                }
                else
                  putc(c, stdout);
        }
        exit(0);
}
 Copy the file to /bin - or anywhere with access permissions for all.
 Next I add the filter to the virtual printer
 lsvirprt
   Select the PCL virtual printer
   fl=/bin/norset (enter)
   (enter) to exit lsvirprt.
  
 Next print:
  troff -Thplj exmp.1 | hplj | qprt -dp -fl -z+ -Bnn -Ppcl   
  where pcl is the pcl queue name.

This prints in landscape and is formatted per troff.  User must take
care of the length and width of the page.

Is it possible to do this to a PostScript printer.  The answer is
that this is not supported at AIX 3.2 or AIX 4.1  The only possibility
would be to change mediasizes and that does not rotate the
page, and in fact does not really work at all for most options.

For PostScript you can't even do this:
tbl \ | troff -Tpsc -me | psc | qprt -ds -P \ -z 1
because the virtual printer assumes the file will contain orientation.


Support Line: How to use troff to orientate in landscape ITEM: BE6511L
Dated: February 1996 Category: N/A
This HTML file was generated 99/06/24~13:30:22
Comments or suggestions? Contact us