DoItYourselfPostscriptPrinter

    Have you ever wanted a postscript printer but just couldn't afford or justify the price? Well here's how you can turn your exising printer into a postscript one. As a side benefit, you get PDFs from any application without having to buy Acrobat Professional or Illustrator.

    Nutshell summary: Install a virtual PDF printer. The pdf printer converts all incoming jobs to PDF and saves them to a directory. Use Acrobat reader to print the pdf to the real non-postscript printer.

    Why: ArcView3 can only print pattern fills to a postscript printer while Acrobat has no problems. Secondly, PDFs are more and more becoming the exchange media of preference. This puts pdf creation in the hands of the end users. ArcMap can export directly to PDF, however "Embed All Fonts" doesn't always work and the file sizes are substantially larger without an appreciable loss in print quality.

    This HowTo was written around the HP DesignJet? 500 and quality settings for maps but the general process should work for any printer.

     

     

    Standalone Workstation

    Download and install PDFCreator, use the AFPL .msi version.

    Print from your application to the PDFCreator printer.

    Open the resultant PDF and print to your printer.

    and you are done. :)

     

    Client + Server Deployment

    Server Setup

    Download or otherwise acquire the required programs:

    Install Ghostscript

    Install PDFCreator in server mode

     

    Create D:\PDF-Out, set the <AutoSave> directory here. I use D:\PDF-Out\<Username>\<Title>_<DateTime>.pdf

    Bump up bitmap dpi to 300, jpeg quality to 85%, and PS level to 3

    edit C:\Program Files\PDFCreator\pdfcreator.ini and change (the options set by the gui interface are also recorded in the .ini so you can do everything from here if you'd rather):

    LogLines=1000
    DontUseDocumentSettings=1
    StandardDateformat=YYYY-MMM-DD-HHNNSS
    

     

    Create \\server\PDF-Out share

    If not there already, install the printer drivers, e.g. DesignJet 500 42+HPGL2 Card by HP

    Set Printer Defaults[*] as you like, plus (for map production):

    Save Roll Paper checked
    Auto Rotate checked
    Optimise for: Drawings/Text
    Max detail: checked
    Color matching method: by application (! important !)
    Services > Troubleshooting as bitmap (! important !)

    [*] NOT the same as "Printer Preferences". Preferences are per-user only and won't be passed on to new clients connecting to the shared printer.

    Share the printer, e.g. DJ500_hpgl2

    Schedule a cleanup job to run every X days and delete all files older than X

     

    Client Setup

    1. Connect to the two printers, \\server\PDFCreator and \\server\dj500_hpgl2
    2. Verify Printer Preferences match Printer Defaults in previous section (which is likely)

     

    Typical Use scenario

     

    • Print from your application to the shared PDFCreator printer.
    • Go to \\server\PDF-Output\%username%\ and pick up your pdf
    • Open the pdf in Acrobat (or GSView),
    • ...and Print to the real printer, DJ500_hpgl2 in this example.

    Arcmap & Arcview3 default setttings:

    printer engine Windows Printer (if postscript is selected the page size setting is ignored and the output pdf is always the pdfcreator default size)

    Acrobat Reader page setup:

    Auto rotate & center as you like
    Page Scaling none (important to preserve scale text, e.g. 1:250,000)
    Choose Paper Source by PDF checked

    Background

    Arcmap can already export straight to PDF so why go through all this extra work? There are several reasons:

    In our department we still have a large contingent of Arcview3 users. AV3 can't export to PDF, plus when you print from AV3 to a designjet 500 which doesn't have postscript all pattern fills come out as solid blocks of colour (no background transparency).

    The PDFs output by arcmap are commonly twice or more the size of those created by ghostscript with little or no discernable difference in print quality.

    Some of our maps are very big and complicated, sometimes we can't even use the export features without crashes (CannotCreateMetafile). Occasionally in this circumstance the print via pdf route works.

    Annoyingly, even with Embed All Fonts checked, arcmap doesn't always embed all the fonts and you see little square or blank spots in the pdf map instead of text characters. EmbedFontsBug

    A software RIP to turn a printer like the dj500 into a postscript printer costs several hundred to thousands of dollars. Ghostscript and PDFCreator are free and libre. Admittedly a RIP can do a lot more than just print postscript, but for our regional offices we didn't really need this extra capability.

    We did buy PosterJet? for our regional offices, but discovered that only the enterprise level version runs in unattended mode. This meant that someone would always have to log on to the server to "press play" on the PJ queue before anyone could print and that that user would have to stay logged. This is wrong in too many ways to detail here.

     

    Things which could be improved / Future research opportunities

     

    Notify User on Completion

    We really need to figure out how to notify the user when the pdf creation is complete. On large and complicated maps the pdf appears in the output directory many minutes before it is actually complete, tempting people to open it prematurely.

    Use the setting RunProgramAfterSaving; some assembly required (look at the examples in the scripts and COM subdirectories).

     

    Auto Print on PDF Completion

    It would be nice to send the pdf to the printer immediately on completion without user intervention, and there is an option in PDFCreator to run specified program on completion, so it is possible. Initial attempts are only half-successful though:

    Acrobat Reader - there is a command line option to print, and it works, however the application stays open when complete. This is a problem as the app runs on the server, not the client. From 'net research it appears that at v6 Adobe removed the ability to terminate when done.

    "C:\Program Files\Adobe\Acrobat 7.0\Reader\AcroRd32.exe" /t file.pdf \\printserver\dj500_hpgl2

    GSView - the docs say 'gsview -p file.pdf' should work, but it doesn't for me. It comes with another program, gsprint, which does work. However it is a little slow, page size is whatever the printer default is, and, on the dj500 anyway, there is a lot of blank paper spit out before and after the plot. Output quality is quite nice though.

    "C:\Program Files\Ghostgum\gsview\gsprint.exe" -colour -printer "\\printserver\Printer Name" file.pdf

    For both of these it is important that the Printer Defaults be set correctly.

    as of v0.9 there is a PrintAfterSaving option, look in the help under 'Hidden Settings'

     

    Performance

    PDFCreator is slower than PosterJet? . In testing though this doesn't become really significant until map sizes become quite large (spool files over 100mb).

     

    More advanced print options

    PDFCreator allows the use of a custom PPD at installation time. With some study we should be able add a lot of the extra functionality currently only available at the backend to the client side via the Printer Preferences dialog. Things like specifying pdf compatibility level (e.g. min required Arcobat version), image compression type, dpi, optimise for web/print/prepress, etc. A good candidate ppd for this might be http://www.cs.wisc.edu/~ghost/doc/cvs/Ps2pdf.htm#PPD

    A better client ppd can be found here (but only in german): http://www.rumborak.de/produktives/download/Rumborak%20Treiber-Archiv.zip (You must use the setting DontUseDocumentSettings=1)

     


     

    Acknowledgements

    None of this would be possible without the hard work, generous spirit and technical excellence of Artifex Software, the makers of GhostScript; Frank Heindörfer the project lead for PDFCreator, who also provides more responsive tech support for free than we often get from companies we spend hundred of dollars a year on; Mark O'Donoghue and Todd Powell for being patient and good natured guniea pigs with expensive paperweights while I spent months sorting all this out (not that they had much choice!).

     

    Roll-Out In The Real World

    It works like a charm here in my office but we all know how great lab projects have a tendency to fall apart "in the real world" ... smile

    [Later] Well, the real world has spoken and it's not all pretty:

    In Mayo I have had a problem on where the client machine is told "the server doesn't have the right drivers for your operating system", which is completely wrong, but I haven't figured out yet if that is a Microsoft or PDFCreator fault. I suspect MS as the same message is seen for at least two other printers in that location. In the end we got things going by installing PDFCreator and the DJ500 drivers on the local machine and now things are going along tickety boo. They are now happy campers, even if the admins aren't.

    In Watson Lake the wrong OS message was also seen. We got around that by installing and then uninstalling PDFC on the local machine and then reconnecting to the network PDFC printer. Unfortunately all print jobs sit there in the queue saying 'Error Printing'. The PDFCreator engine never get's to see the document, windows is not passing it along for some reason. The wierd thing is, printing to PDFC from the console of the server does work. There are no security restrictions on the share.

    In Whitehorse, it all just works. Point a client computer to \\server\pdfcreator, Open a document > Print setup > Select pdfcreator > Print. Done.

    I have a hunch it might be an XP Service Pack 2 issue (not all machines have it).

    -- MattWilkie - 08 Jul 2005

    It may have been the "wrong way" from an admin point of view, but after three months there are no complaints from the regional offices. So if you have to, installing locally instead from a server share is workable comprimise.

    -- MattWilkie - 04 Oct 2005

    64bit Windows

    With PDFCreator v0.9.5 and Windows Server 2003R2 x64 (and I assume XP x64 also) you will need to add PDFCreator.exe and perhaps pdfspooler.exe to the list of DEP Exceptions in order to access the Options dialogue in the GUI. ([winkey]+[print screen]> Advanced > Perfomance > Data Execution Prevention)

     

     

     

     

    WebForm
    TopicCategory HowTo
        Send feedback