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

Reply via email to