PSUtils
PSUtils is a collection of useful utilities for manipulating PostScript
documents. Programs included are psnup, for placing out several logical pages
on a single sheet of paper, psselect, for selecting pages from a document,
pstops, for general imposition, psbook, for signature generation for booklet
printing, and psresize, for adjusting page sizes. PSUtils is available as a
tarred gzipped file from
psutils.tar.gz
These programs come with NO WARRANTY, implied or express. Use at your
own risk.
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, an 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
I have abandoned updating PSUtils.
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@squirrel.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 are 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 has some minor bug fixes.
- 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 bug 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