xref: /dflybsd-src/share/examples/printing/make-ps-header (revision 86d7f5d305c6adaa56ff4582ece9859d73106103)
186d7f5d3SJohn Marino#!/bin/sh
286d7f5d3SJohn Marino#
386d7f5d3SJohn Marino#  make-ps-header - make a PostScript header page on stdout
486d7f5d3SJohn Marino#  Installed in /usr/local/libexec/make-ps-header
586d7f5d3SJohn Marino#
686d7f5d3SJohn Marino
786d7f5d3SJohn Marino#
886d7f5d3SJohn Marino#  These are PostScript units (72 to the inch).  Modify for A4 or
986d7f5d3SJohn Marino#  whatever size paper you are using:
1086d7f5d3SJohn Marino#
1186d7f5d3SJohn Marinopage_width=612
1286d7f5d3SJohn Marinopage_height=792
1386d7f5d3SJohn Marinoborder=72
1486d7f5d3SJohn Marino
1586d7f5d3SJohn Marino#
1686d7f5d3SJohn Marino#  Check arguments
1786d7f5d3SJohn Marino#
1886d7f5d3SJohn Marinoif [ $# -ne 3 ]; then
1986d7f5d3SJohn Marino    echo "Usage: `basename $0` <user> <host> <job>" 1>&2
2086d7f5d3SJohn Marino    exit 1
2186d7f5d3SJohn Marinofi
2286d7f5d3SJohn Marino
2386d7f5d3SJohn Marino#
2486d7f5d3SJohn Marino#  Save these, mostly for readability in the PostScript, below.
2586d7f5d3SJohn Marino#
2686d7f5d3SJohn Marinouser=$1
2786d7f5d3SJohn Marinohost=$2
2886d7f5d3SJohn Marinojob=$3
2986d7f5d3SJohn Marinodate=`date`
3086d7f5d3SJohn Marino
3186d7f5d3SJohn Marino#
3286d7f5d3SJohn Marino#  Send the PostScript code to stdout.
3386d7f5d3SJohn Marino#
3486d7f5d3SJohn Marinoexec cat <<EOF
3586d7f5d3SJohn Marino%!PS
3686d7f5d3SJohn Marino
3786d7f5d3SJohn Marino%
3886d7f5d3SJohn Marino%  Make sure we do not interfere with user's job that will follow
3986d7f5d3SJohn Marino%
4086d7f5d3SJohn Marinosave
4186d7f5d3SJohn Marino
4286d7f5d3SJohn Marino%
4386d7f5d3SJohn Marino%  Make a thick, unpleasant border around the edge of the paper.
4486d7f5d3SJohn Marino%
4586d7f5d3SJohn Marino$border $border moveto
4686d7f5d3SJohn Marino$page_width $border 2 mul sub 0 rlineto
4786d7f5d3SJohn Marino0 $page_height $border 2 mul sub rlineto
4886d7f5d3SJohn Marinocurrentscreen 3 -1 roll pop 100 3 1 roll setscreen
4986d7f5d3SJohn Marino$border 2 mul $page_width sub 0 rlineto closepath
5086d7f5d3SJohn Marino0.8 setgray 10 setlinewidth stroke 0 setgray
5186d7f5d3SJohn Marino
5286d7f5d3SJohn Marino%
5386d7f5d3SJohn Marino%  Display user's login name, nice and large and prominent
5486d7f5d3SJohn Marino%
5586d7f5d3SJohn Marino/Helvetica-Bold findfont 64 scalefont setfont
5686d7f5d3SJohn Marino$page_width ($user) stringwidth pop sub 2 div $page_height 200 sub moveto
5786d7f5d3SJohn Marino($user) show
5886d7f5d3SJohn Marino
5986d7f5d3SJohn Marino%
6086d7f5d3SJohn Marino%  Now show the boring particulars
6186d7f5d3SJohn Marino%
6286d7f5d3SJohn Marino/Helvetica findfont 14 scalefont setfont
6386d7f5d3SJohn Marino/y 200 def
6486d7f5d3SJohn Marino[ (Job:) (Host:) (Date:) ] {
6586d7f5d3SJohn Marino	200 y moveto show /y y 18 sub def
6686d7f5d3SJohn Marino} forall
6786d7f5d3SJohn Marino
6886d7f5d3SJohn Marino/Helvetica-Bold findfont 14 scalefont setfont
6986d7f5d3SJohn Marino/y 200 def
7086d7f5d3SJohn Marino[ ($job) ($host) ($date) ] {
7186d7f5d3SJohn Marino	270 y moveto show /y y 18 sub def
7286d7f5d3SJohn Marino} forall
7386d7f5d3SJohn Marino
7486d7f5d3SJohn Marino%
7586d7f5d3SJohn Marino%  That is it
7686d7f5d3SJohn Marino%
7786d7f5d3SJohn Marinorestore
7886d7f5d3SJohn Marinoshowpage
7986d7f5d3SJohn MarinoEOF
80