Need username printed at top of page

Helge Blischke h.blischke at srz.de
Tue Mar 20 10:32:59 PDT 2007


Patrick Young wrote:
> Things are going well. Thank you, Helge! Now I just have a couple PostScript questions. I added (Username: ) show before _WM_str show and (, Job ID: ) show after it. It prints Username: somename, Job ID: so I haven't blown things up yet. I tried making a call to the job-id variable but couldn't get it to work. How do I do that. Also, now the text begins in the center but moves towards the right side of page. How can it be truly centered again after I added those extra lines?
> 
> Thank you!
> --Patrick
> 
> 
>>Create a directory
>>	$CUPS_DATADIR/watermarks
>>(The environment variable CUPS_DATADIR usually is /usr/share/cups
>>or /usr/local/share/cups, depending on your installation)
>>and put the following PostScript routine there
>>---snip---
>>%%BeginFile: label_user 1.0 0
>>
>>userdict begin
>>/CUPS_label_user where
>>{pop}
>>{       % first call: do necessary initialisations
>>         currentglobal true setglobal
>>         globaldict begin
>>         /CUPS_label_user true def               % say not yet called
>>         end
>>         setglobal
>>
            /appstr         % <str1> <str2> appstr <str3>
            {
                    exch dup length 2 index length add string
                    dup dup 4 2 roll copy
                    length 4 -1 roll putinterval
            }bind def

>>         % Define the BeginPage stuff to render the watermark to appear
>>         % beneath the contents of every page
>>         <<
>>                 /BeginPage
>>                 {
>>                         pop
>>                         gsave
>>                         % job-originating-user-name contains the user name you want to put onto
>>                         % the bottom of the page
                            /_WM_str (Username: ) CUPS_ENV_OPT/job-originating-user-name get 
appstr def
>>                         % Instead of Courier, use any font you know is resident on the printer
>>                         % the first 12 is the horizontal, the second the vertical scale factor
>>                         % in printers points (1/72 inch)
>>                         /Courier [12 0 0 12 0 0] selectfont
>>                         0 setgray               % assuming the user  name is to be written in black
>>                         currentpagedevice/PageSize get aload pop % pagewidth pageheight
>>                         pop                     % don't need this
>>                         % the username will be written 20 points above the lower paper edge and
>>                         % horizontally centered
>>                         newpath
>>                         _WM_str stringwidth pop sub 2 div 20 moveto
>>                         _WM_str show
>>                         grestore
>>                }bind
>>         >>setpagedevice
>>
>>}ifelse
>>
>>
>>end %userdict
>>
>>%%EndFile
>>---snip---
>>and name it, e.g. "User_goes_here".
>>
>>Then, with the option
>>	page-label=User_goes_here
>>  the name of the user requesting the job will be printed
>>near the bottom of the page (see the comments in the PostScript
>>snippet, that are the strings beginning with a percent sign.
>>
>>Feel free to ask if you have more queestions.
>>
>>Helge
>>
>>
>>
>>--
>>Helge Blischke
>>Softwareentwicklung
>>
>>H.Blischke at acm.org
> 
> 

To adjust the whole thing including your prefix string centered, see the
modification using the appstr procedure above.

As for the job ID, I didn't pass this to the PostScript job, as the job ID is
not unique if the print job is routed to a remote CUPS server. You might use
the job-name variable instead.

If you really need to use the job ID, let me know, I'll then givbe you
some hints where to insert the necessary C code inot pstops.c

Helge


-- 
Helge Blischke
Softwareentwicklung

H.Blischke at acm.org




More information about the cups mailing list