Print System

From MorphOS Library

New printer system has been introduced in MorphOS 3.10 and extended in MorphOS 3.12. It is based on CUPS logic although it does not contain any CUPS code in its core. Drivers are represented using PPD (PostScript Printer Description) files, which support both Postscript and non-Postscript printers. Previously Postscript printers could be used in MorphOS directly sending raw Postscript stream to the printer. It doesn't allow to set any settings and only Pagestream has decent settings for that.


New preferences has been created to handle drivers and profiles. Driver is a binary form of PPD textual file. Profile is a driver which includes settings set by the user.


To have printer connected one has to provide PPD driver. Some of printers including EPSON ESC/PR and Samsung CLPs can be automatically found and driver will be added using Search driver button. If not please use Add... button to select PPD file. PPD files for Postscript printers will be added and they are ready to work. PPD files for other printers (PCL/SPL/ESCPR) contain reference to filter file (actual driver which translates data to printer binary format). If PPD file with filter not available in MorphOS is provided user will be asked what to do.



After adding the driver profile needs to be created. Please select Add... button. A window with driver selection will appear. User can create many profiles for one driver: one for color printing, one for b/w, etc.


After creating the profile you can make it as default and set the output path. Both file and device output is supported. So for printing to file you can set RAM:output_print. For network printing please use NETPAR: and for usb printers please use USBPAR:. Usb printing needs USBPAR mountlist copied from Storage/DosDrivers to the DEVS:DosDrivers or add mount USBPAR: somewhere in the S:user-startup file.


Under Options button printer options can be set for the profile. Each printer driver has own set of options.


Current Applications

The main application which makes use of the new printing system is VPDF - PDF files viewer from Application directory. When selecting Postscript option in Print window, a Profile selector is available where you can select between profiles defined earlier in Printers preferences. You can also use (To file) to get raw Postscript output.


Printer.device support

printer.device/TurboPrint like printing from old applications is not yet supported, although VPDF prints using TurboPrint when Postscript option is not active.

Printer-handler usage

To get printing supported in any application (with Postscript support) please use PRINTER: device for storing Postscript output. printer-handler which control the PRINTER: device has such options:

  • PROFILE/K - name of the profile, get default profile from Printers preferences when not set
  • ARGS/K - CUPS compatible option set
  • FORMAT/K - defaults to PS for now
  • COPIES/N - how many copies should be printed

When PRINTER: device is used it preformats raw Postscript output from application adding additional parameters set in Printers preferences and for example make multipage per sheet printing which is not available in raw printing. For non-Postscript printers internal Ghostscript 8.70 processing is done. This can take some seconds so Postscript printers are preffered.

My printer does not work

  • Check connection (USB) in Poseidon or Netprinter (Network)
  • Check if your Postscript printer has correct PPD file provided. In most cases Postscript printers has also additional PPD drivers which use various filters (for example Postscript printer with PCL5 support may have also PPD file with PCL5 filter). PPD files just for Postscript printing are preffered.
  • Check free memory. Printing uses Ghostscript sometimes for converting the data and stores some temportary files in T: device. It may not work in low memory situations. You may use PRINTER_TEMPDIR environment variable to set the dir for storing temporary files although setting it to the disk will slow down printing process.
  • Printer is not supported by the current drivers.