Stefan Sperling <s...@stsp.name> wrote: > On Sun, Jun 14, 2020 at 02:58:18PM +0200, Marcus MERIGHI wrote: > > i think this belongs to ports@. though base lpd(8) is in the Subject:, > > this is probably abount cups-filters-1.27 failing on us. > > > $ cat /etc/printcap.sh > > #!/bin/sh -e > > /usr/local/bin/a2ps -BRq --columns=1 -o - | \ > > /usr/local/bin/foomatic-rip --ppd \ > > /etc/foomatic/direct/brother-mfc9120cn.ppd \ > > -P brother-mfc9120cn > > Try removing a2ps from your filter script. This no longer works as the > cups-filters readme file suggests.
We must have been reading the different cups-filters readme file. This is on 6.7 release $OpenBSD: README,v 1.11 2020/02/22 14:51:47 ajacoutot Exp $ +----------------------------------------------------------------------- | Running cups-filters on OpenBSD +----------------------------------------------------------------------- Bonjour broadcasts of shared, remote printers ============================================= The cups-browsed(8) daemon can be used to browse Bonjour (mDNS) broadcasts of remote printers and create/remove local raw queues pointing to these printers. This requires the avahi-daemon(8) to be running first. To start it at boot time, the rc.conf.local(8) pkg_scripts line can be edited as follow: pkg_scripts=[...] messagebus avahi_daemon cups_browsed [...] lpd(8) using direct printing with foomatic-rip(1) ================================================= The Foomatic framework supports direct printing which does not rely on CUPS (nor any spooler) and can thus be used with lpd(8). Complete documentation can be found at: http://www.linuxfoundation.org/collaborate/workgroups/openprinting/database/ nospoolerdocumentation Foomatic configuration ---------------------- A specific PPD file has to be created for the printer. Refer to the documentation that comes with the foomatic-db-engine package to learn how to generate PPD files (cf. /usr/local/share/doc/pkg-readmes/foomatic-db-engine). # mkdir -p /etc/foomatic/direct # foomatic-ppdfile -p 'Samsung-ML-2850D' -d 'Postscript' > /etc/foomatic/direct/samsung-ml2850d.ppd Alternatively, you can look under /usr/local/share/foomatic/db/source/PPD for existing PPD files matching your printer (in which case the PPD file can be copied and/or gunzip'd under /etc/foomatic/direct). Input filter script ------------------- Non-postscript files must be converted before being sent to foomatic-rip(1). Several packages can be used for that, a2ps being the most complete. Note that a2ps(1) requires external helper tools for converting files. They can be configured under /etc/a2ps{,-site}.cfg. By default, converting images requires the ImageMagick package. Here's a sample converter script: ---8<------------------------------------------------------------------- #!/bin/sh /usr/local/bin/a2ps -BRq --columns=1 -o - | \ /usr/local/bin/foomatic-rip -P samsung-ml2850d ---8<------------------------------------------------------------------- Additional options can be passed to foomatic-rip(1). e.g. - to print in duplex mode: -o duplex - to set the page size to letter: -o pagesize=letter Default options can be set by editing the PPD file. To use the above script as an input filter for lpd(8), see the next sections (make sure the script is executable). lpd(8): USB printer printcap(5) example --------------------------------------- lp|samsung|Samsung-ML-2850D:\ :lp=/dev/ulpt0:\ :if=/path/to/script.sh:\ :sd=/var/spool/output:\ :lf=/var/log/lpd-errs:\ :sh: lpd(8): network printer printcap(5) example ------------------------------------------- rp|samsung|Samsung-ML-2850D:\ :lp=9100@1.2.3.4:\ :if=/path/to/script.sh:\ :sd=/var/spool/output:\ :lf=/var/log/lpd-errs:\ :sh: (where 1.2.3.4 is the printer IP address and 9100 the printer stream port) foomatic-rip(1) does *not* speak LPD (port 515). If the printer does not support raw printing over port 9100, it must be setup locally on a print server (see above for an example using USB) then accessed over LPD by the clients (there is no need to setup any print filter on the clients since it will run on the print server). I did try your suggestions and I didn't get raw PostScript but I didn't get anything either. The printer kept printing blank pages. > Removing the a2ps line fixed PDF printing for me after upgrading to 6.7. > > Yes, that means printing plain ASCII files is broken. But that can be > worked around by manually converting ASCII to PDF first. And because > a2ps never worked correctly with UTF-8 it was rather useless anyway. I am old enough to remember the times all PostScript printers could print raw ASCII files without fiddling with filters or even a spooling system. For the most part I don't need UTF-8 so that was not an issue for me. However, the native lpr command doesn't have a switch for duplex printing. That is expected as lpd is only a spooling system and a network protocol requiring third party filters for the real work. My printer, Brother HL-5250DL is duplex capable. Without a2ps I would either have to insert manually or to write a script which will insert %! <</Duplex true>>setpagedevice into every PostScript file/stream before going to the printer. I have not tested HL-5250DL to check if the local printing is broken like the network printing as I have bunch of devices from which my family is printing. I had to cave in and swith to cupsd for the first time in 14 years using OpenBSD on all my machines. Cheers, Predrag