PostScript Utilities	        Angus Duggan		      9th March 1997

This archive contains some utilities for manipulating PostScript documents.
Page selection and rearrangement are supported, including arrangement into
signatures for booklet printing, and page merging for n-up printing.

ENVIRONMENT

These utilities have been compiled and run on Sun-3 and Sun-4 machines under
SunOS Solaris 2.3, Solaris 2.1, 4.1.3, 4.1.2, 4.1.1 and 4.0.1, HP9000/375
machines under HPUX 7.0 and HPUX 8.0, Sequent Symmetry machines under Dynix
3.1.4 and PTX 3.2.0, IBM RS/6000, VAX/VMS, Decstation 3100 machines under
Ultrix 4.0, SGI 4k5 under Irix 4.1 and 5.2, and x86 machines under MSDOS 6.0
and Windows NT 3.5 and 4.0.

FILES

The files contained are:
-rw-r--r--   1 angus        2317 Jun 19  1995 LICENSE
-rw-r--r--   1 angus        2899 Mar 09 09:26 Makefile.bcc
-rw-r--r--   1 angus        2915 Mar 09 09:26 Makefile.msc
-rw-r--r--   1 angus        4135 Mar 09 09:26 Makefile.nt
-rw-r--r--   1 angus        7146 Mar 09 09:26 Makefile.os2
-rw-r--r--   1 angus        2895 Mar 09 09:26 Makefile.sc
-rw-r--r--   1 angus        6913 Mar 09 09:26 Makefile.unix
-rw-r--r--   1 angus       11345 Mar 09 09:20 README
-rw-r--r--   1 angus         678 Nov 02  1995 config.h
-rw-r--r--   1 angus        2373 Jun 19  1995 descrip.mms
-rw-r--r--   1 angus        5773 Mar 14  1996 epsffit.c
-rw-r--r--   1 angus        1291 Nov 02  1995 epsffit.man
-rw-r--r--   1 angus        1236 Nov 02  1995 extractres.man
-rw-r--r--   1 angus        2780 Nov 02  1995 extractres.pl
-rw-r--r--   1 angus         561 Nov 02  1995 fixdlsrps.man
-rw-r--r--   1 angus        1554 Nov 02  1995 fixdlsrps.pl
-rw-r--r--   1 angus         527 Nov 02  1995 fixfmps.man
-rw-r--r--   1 angus         556 Nov 02  1995 fixfmps.pl
-rw-r--r--   1 angus         644 Nov 02  1995 fixmacps.man
-rw-r--r--   1 angus        2170 Nov 02  1995 fixmacps.pl
-rw-r--r--   1 angus         556 Nov 02  1995 fixpsditps.man
-rw-r--r--   1 angus         655 Nov 02  1995 fixpsditps.pl
-rw-r--r--   1 angus         523 Nov 02  1995 fixpspps.man
-rw-r--r--   1 angus        1298 Nov 02  1995 fixpspps.pl
-rw-r--r--   1 angus         531 Nov 02  1995 fixscribeps.man
-rw-r--r--   1 angus         434 Nov 02  1995 fixscribeps.pl
-rw-r--r--   1 angus         553 Nov 02  1995 fixtpps.man
-rw-r--r--   1 angus         663 Nov 02  1995 fixtpps.pl
-rw-r--r--   1 angus         547 Nov 02  1995 fixwfwps.man
-rw-r--r--   1 angus         826 Nov 02  1995 fixwfwps.pl
-rw-r--r--   1 angus         533 Nov 02  1995 fixwpps.man
-rw-r--r--   1 angus         699 Nov 02  1995 fixwpps.pl
-rw-r--r--   1 angus         531 Nov 02  1995 fixwwps.man
-rw-r--r--   1 angus         383 Nov 02  1995 fixwwps.pl
-rw-r--r--   1 angus         711 Apr 06  1995 getafm.man
-rwxr-xr-x   1 angus        6482 Jun 19  1995 getafm.sh
-rw-r--r--   1 angus        1107 Nov 02  1995 includeres.man
-rw-r--r--   1 angus        1435 Nov 02  1995 includeres.pl
-rw-r--r--   1 angus        1901 Jan 03  1996 maketext
-rw-r--r--   1 angus       31406 Jun 19  1995 md68_0.ps
-rw-r--r--   1 angus       35734 Jun 19  1995 md71_0.ps
-rw-r--r--   1 angus         132 Nov 02  1995 patchlev.h
-rw-r--r--   1 angus        2875 Nov 02  1995 psbook.c
-rw-r--r--   1 angus        1156 Nov 02  1995 psbook.man
-rw-r--r--   1 angus        3201 Nov 02  1995 pserror.c
-rw-r--r--   1 angus         561 Nov 02  1995 pserror.h
-rw-r--r--   1 angus         957 Nov 02  1995 psmerge.man
-rw-r--r--   1 angus        2028 Nov 02  1995 psmerge.pl
-rw-r--r--   1 angus       10396 Nov 02  1995 psnup.c
-rw-r--r--   1 angus        4002 Nov 02  1995 psnup.man
-rw-r--r--   1 angus        5379 Nov 02  1995 psresize.c
-rw-r--r--   1 angus        1696 Nov 02  1995 psresize.man
-rw-r--r--   1 angus        6096 Jun 05  1996 psselect.c
-rw-r--r--   1 angus        2117 Mar 09 09:12 psselect.man
-rw-r--r--   1 angus        7784 Dec 06  1995 psspec.c
-rw-r--r--   1 angus         877 Feb 21  1996 psspec.h
-rw-r--r--   1 angus        5159 Nov 02  1995 pstops.c
-rw-r--r--   1 angus        4091 Nov 02  1995 pstops.man
-rw-r--r--   1 angus        9323 Mar 04 13:41 psutil.c
-rw-r--r--   1 angus        1494 Nov 02  1995 psutil.h
-rwxr-xr-x   1 angus        2685 Jun 19  1995 showchar.sh


PROGRAMS

psbook          rearranges pages into signatures
psselect        selects pages and page ranges
pstops          performs general page rearrangement and selection
psnup           put multiple pages per physical sheet of paper
psresize        alter document paper size
epsffit         fits an EPSF file to a given bounding box

psselect in modeled after Chris Torek's dviselect program, and pstops is
modeled after Tom Rokicki's dvidvi program. psbook is modeled on my own
dvibook program, which borrows heavily from Chris Torek's dviselect.

SCRIPTS

getafm   (sh)   outputs PostScript to retrieve AFM file from printer
showchar (sh)   outputs PostScript to draw a character with metric info
fixdlsrps (perl) filter to fix DviLaser/PS output so that PSUtils works
fixfmps  (perl) filter to fix framemaker documents so that psselect etc. work
fixmacps (perl) filter to fix Macintosh documents with saner version of md
fixpsditps (perl) filter to fix Transcript psdit documents to work with PSUtils
fixpspps (perl) filter to fix PSPrint PostScript so that psselect etc. work
fixscribeps (perl) filter to fix Scribe PostScript so that psselect etc. work
fixtpps  (perl) filter to fix Troff Tpscript documents
fixwfwps (perl) filter to fix Word for Windows documents for PSUtils
fixwpps  (perl) filter to fix WordPerfect documents for PSUtils
fixwwps  (perl) filter to fix Windows Write documents for PSUtils
extractres (perl) filter to extract resources from PostScript files
includeres (perl) filter to include resources into PostScript files
psmerge (perl) hack script to merge multiple PostScript files

INSTALLATION

UUdecode md71_0.uue and md68_0.uue (if supplied encoded). Copy the most
appropriate makefile to "Makefile", and edit the copy to put in required paths
for BINDIR, SCRIPTDIR, MANDIR, INCLUDEDIR, and PERL. Alter values of MANEXT to
put the manual pages in a different section if desired, change PAPER to set
the default paper size, "make", and "make install".

BUGS

The utilities don't check for PS-Adobe-?.? conformance; they assume documents
conform. Utilities need an extra save/restore around whole document on a
SPARCPrinter with NeWSPrint 1.0, because of bugs in the xnews server.

Bug fixes and suggestions to angus@harlequin.co.uk

UPDATES

The definitive archive sites for PSUtils updates are ftp.dcs.ed.ac.uk, in the
directory pub/ajcd/, and ftp.tardis.ed.ac.uk, in the directory users/ajcd. The
latest version will be in psutils.tar.gz older versions may also be in
psutils-*.tar.gz

NOTE

This is an interim release; these utilities are currently being re-written
from scratch, with a full DSC-3.0 parser and more extraction, merging, and
inclusion options included.

WINDOWS USERS

*Please* make sure that you have selected "Generate DSC Comments" in your
printer driver setup. These utilities need DSC comments to tell where page
boundaries are.

DVIPS USERS

The latest versions of dvips have changed the default setting of the DSC
comment flag; you must generate with DSC comments for PSUtils to work.

ACKNOWLEDGEMENTS

Bug fixes and suggestions for improvements to PSUtils have come from many
people, including:

        Brian Colfer            brianc@labmed.ucsf.edu
        Charles A. Finnell      finnell@org.mitre.lear
        Conrad Kimball          cek@com.boeing.sdc
        J.W.Hawtin              
        Jochen Schwarze         schwarze@de.isa
        Ken Carpenter           khc@edu.ksu.eece
        Kristian Jorg           etxkrjg@se.ericsson.solsta
        Larry Weissman          larryw@nsr.bioeng.washington.edu 
        Michael L. Brown        brown@wi.extrel.com
        Hunter Goatley	        goathunter@wkuvx1.bitnet
        John Interrante         interran@uluru.Stanford.edu
        Maurizio Cremonesi      MAUCREM@imiclvx.earn
        Matthew Stier           Matthew.Stier@East.Sun.com
        Gerry Pratt             cca13@seq1.kl.ac.uk
        Robert Joop             rj@rainbow.in-berlin.de
	Johan Vromans		jv@mh.nl
	Bryan Faubion		bryanf@tc.fluke.com
	Chris Ritson		C.R.Ritson@ncl.ac.uk
	Michele Marziani	MARZIANI@VAXFE.INFN.IT
	Michael I. Schwartz	mschwart@diana.cair.du.edu
	Chris Ritson		C.R.Ritson@newcastle.ac.uk
	Joerg Eisenreich
	Anreas Borchert		borchert@mathematik.uni-ulm.de
	Mike Coleman
	Dale Scheetz		dwarf@polaris.net
	Yves Arrouye		arrouye@marin.fdn.fr

(Apologies to anyone who I have left out, it was not intentional.)

NEWS

Patchlevel 11 contains some significant enhancements to PSUtils, in
preparation for the eventual release of version 2 (don't hold your breath
waiting for it). These include:

* Specify paper sizes by name for pstops and psnup.
* Psnup re-written in C to be much more versatile (do any number n-up).
* Epsffit can input broken %%BoundingBox comments which use real numbers.
* Should work on MSDOS and VMS machines as well as Unix.
* Accept more DSC compliant documents (Page labels are better supported).

Patchlevel 12 was a bug-fix release.

* Long standing fixmacps bug fixed.
* fixwfwps fixes WFW EPSF files as well as DSC files.
* md71_0.ps and md68_0.ps files were automatically uudecoded.

Patchlevel 13 contained two new scripts for resource management, and fixes to
the Makefile, page labels, and output chaining.

* Epsffit can output to a file as well as standard output.
* extractres takes resources out of PostScript files and saves them
* includeres puts resources from a resource library into PostScript files.
* maketext script is now used to do substitutions in Perl scripts and man pages
* page labels in psnup and pstops now show where pages came from.
* page labels in psbook and psselect fixed.
* prologues fixed to be extractable and re-usable
* Makefile doesn't use SUFFIXES any more
* pstops and psnup output can now be chained through each other.
* psresize alters the paper size used by a document
* patchlevel.h shortened to patchlev.h as a concession to MSDOS
* psnup now has -n nup form for compatibility with other n-up programs

Patchlevel 14 has some minor bug fixes.

* psselect can take end-relative page ranges
* Makefiles restructured to generate machine specific versions from one source
* MSDOS, Windows NT and OS/2 support
* corrections to psbook output for empty pages when rearranging pstops output

Patchlevel 15 was a stabilisation release

* All code converted to ANSI C, improved error and warning procedures
* Portability fixes in the Makefiles
* psnup can take different sized input and output pages
* Minor fixes to fixwpps script
* psselect reversed pages fixed
* maketext and fix scripts updated for Perl 5

Patchlevel 16 was a minor bugfix release

* Piped output and input works correctly in NT

Patchlevel 17 had some minor bugfixes and improvements

* Trailer information now put before %%EOF comments if no %%Trailer
* psselect can now add blank pages.
* Piped input works in Linux
