[comp.lang.postscript] Simply encapsulating an ASCII file

cosell@bbn.com (Bernie Cosell) (01/22/90)

I asked a couple of days ago about some simple way to get an EPS version of a
plain ASCII file.  After fooling, unsuccessfully, with enscript for a while,
I decided to just leap in and fix it up brute force.  Attached is a little
shell script that'll get you a PostScript rendering [that \psfig likes, which
is what I was after in the first place!].

   __
  /  )                              Bernie Cosell
 /--<  _  __  __   o _              BBN Sys & Tech, Cambridge, MA 02238
/___/_(<_/ (_/) )_(_(<_             cosell@bbn.com


#!/bin/sh
# $Header: encapsulate,v 1.1 90/01/21 17:33:42 cosell Exp $

# Encapsulate a simple ASCII file.  It is assumed that you just want the
#  file to be PostScripted 'as is', without anything fancy like page breaks
#  or the like.

pgm=`basename $0`
Usage="$pgm ASCIIfile"

case $# in
    1) ;;
    *) echo >&2 "Usage: $Usage"
       exit 1
       ;;
esac

file=$1

if [ ! -r $file ]
then
    echo >&2 "$pgm: Can't find \"$file\""
    exit 1
fi

# First off, figure out how long the file is [gives us Y value for bounding
#   box]
lines=`set \`wc -l $file\`; echo \$1`

# Now find the longest line [for giving us the X value for BB]
linelength=`awk "BEGIN { max = 0 }
                       { if (length > max)
                         {
	                    max = length
                         }
                       }
                 END   { print max }" $file`


height=`expr $lines \* 12`
width=`expr \( $linelength \* 72  + 9 \) / 10`
cat <<PREAMBLE
%!
%%Title: $file
%%CreationDate: `date`
%%BoundingBox: 0, 0, $width, $height
%%EndComments

/Courier findfont 12 scalefont setfont
/S { 3 1 roll moveto show } bind def

PREAMBLE

sed 's/\\/\\\\/g
     s/(/\\(/g
     s/)/\\)/g' < $file \
 | awk "{ if (length > 0)
           {
	     printf \"%d %d (%s) S\n\", 0, ($lines - NR) * 12, \$0;
           }
        }"