But one quick and dirty trick I think I may end up using, just to get my immediate script working, is using raw postscript generated by a postscript printer printing to file (I used the HP Laserjet III Postscript Plus driver under Windows). It's easy enough to modify and fix it with perl, but I'm still partial to HTML. I like the idea of building the reports on the fly (w/o learning Postscript :) ) But Postscript works great for building simple text templates. What I'll actually ended up doing, I'm embarrassed to say, is printing my html in firefox to a file on a postscript printer, filling out the text fields with X's and then replacing the fields in my script with a s/// :). At least I don't have to build the postscript by hand.