Using ptal-printd makes it far easier to set up a print queue in conjunction with the hpoj software, because given a particular print spooler, the almost exact same procedure is used to set up printing with an hpoj-driven all-in-one peripheral as would be used to set up printing with a single-function printer. The only difference is where the print job data goes; instead of printing to something like /dev/lp0 or /dev/usb/lp0, the print queue is configured to print to something like /dev/ptal-printd/mlc_par_0 or /dev/ptal-printd/mlc_usb_OfficeJet_G85.
Prior to the introduction of ptal-printd, it was extremely difficult to set up printing with the hpoj software, because it was necessary to hack the lpd configuration for a print queue and cause a wrapper script to be executed around the normal ghostscript-based filter script. This wrapfilter script would take the output from the normal filter script and pipe it to a command-line utility such as ptal-print, which would then route the print job data through the MLC protocol driver.
ptal-printd devname -like /dev/lp0 [options...]Where:
ptal-printd logs startup and error messages to syslog (/var/log/messages) in addition to logging to standard error.
Unless you specify the -nouel switch, a UEL (Universal Escape Language) sequence (Esc%-12345X) is sent before a print job, and a PCL end-of-job sequence (EscE) and another UEL are sent after a print job, to help identify job boundaries for the printer. However, this may not happen in the case of back-to-back print jobs, because ptal-printd may not get an end-of-file indication when reading from the pipe if data from the next job is already in the pipe by the time it reads the last data from the previous job. If your printer has trouble with these sequences, then try using the -nouel switch.
If during a print job an error occurs with communicating with the peripheral, the rest of the print job data is discarded, subject to the limitations discussed above regarding ptal-printd's ability to detect boundaries of back-to-back jobs. Subsequent jobs are retried if it's not possible to re-open the print channel to the peripheral.