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