Druckerverwaltung und Netzwerkdrucker einbinden: Unterschied zwischen den Versionen

Aus
Zeile 449: Zeile 449:


In den von avahi genutzten services Dateien muss dann noch unter dem Paramter "pdl=" der Eintrag "image/urf" mit Komma getrennt hinzugefügt werden. Jetzt sollte der Drucker auch unter iOS 6 auftauchen und genutzt werden können.
In den von avahi genutzten services Dateien muss dann noch unter dem Paramter "pdl=" der Eintrag "image/urf" mit Komma getrennt hinzugefügt werden. Jetzt sollte der Drucker auch unter iOS 6 auftauchen und genutzt werden können.
===Variante 4: DEBUG Logprotokolle und manuelles Testen der Filter in der Shell===
Cups ist sehr gesprächig man den Loglevel anpasst.
Das geht sehr bequem über das Cups-Web-Frontend (führt gleich Neustart cupsd aus)
in der Cups-GUI / Edit Configuration File
<pre>
#LogLevel error
LogLevel debug
#ErrorLog syslog
ErrorLog /var/log/cups/error_log
</pre>
und nicht vergessen:
<pre>
> mkdir /var/log/cups/
</pre>
Ein Beispiel für ein Druckjob im pdf-Format, ausgegeben auf Backend usb:
<pre>
D [24/Sep/2012:20:06:24 +0200] [Job 3] envp[22]="CONTENT_TYPE=application/pdf"
I [24/Sep/2012:20:06:24 +0200] [Job 3] Started filter /usr/local/cups/filter/pdftops (PID 4382)
I [24/Sep/2012:20:06:24 +0200] [Job 3] Started filter /usr/local/cups/filter/pstoraster (PID 4383)
I [24/Sep/2012:20:06:24 +0200] [Job 3] Started filter /usr/local/cups/filter/rastertogutenprint.5.2 (PID 4384)
D [24/Sep/2012:20:06:24 +0200] [Job 3] envp[28]="FINAL_CONTENT_TYPE=printer/usbprinter2"
I [24/Sep/2012:20:06:24 +0200] [Job 3] Started backend /usr/local/cups/backend/usb (PID 4385)
</pre>
man kann jetzt wunderbar die einzelnen Druck-Schritte aus dem Log-Protokoll auch in der Shell manuell durchspielen.
Anbei aus meinen Notizen der Druck der Cups-Testseite
Wer Syno-DSM-Cups verwendet muss nur die Pfade von /opt nach /usr (siehe obigen Protollauszug) anpassen und die eigene '''Drucker.ppd''' einsetzen
Quelle: http://fedoraproject.org/wiki/How_to...nting_problems
<pre>
CUPS-BANNER Testseite: /opt/share/cups/data/testprint
Treiberdatei
> export PPD=/opt/etc/cups/ppd/Canon_MP970_LAN.ppd
Postscriptdatei generieren
> /opt/lib/cups/filter/bannertops 1 tim '' 1 '' </opt/share/cups/data/testprint >bannertops.ps
DEBUG: PNG image: 192x128x8, color_type=2 (RGB)
ich denke, dass ist ein Null-Schritt siehe http://www-user.tu-chemnitz.de/~heha...are/pstops.htm
> /opt/lib/cups/filter/pstops 1 tim '' 1 '' <bannertops.ps >pstops.ps
DEBUG: Page = 595x842; 0,0 to 595,842
DEBUG: Wrote 1 pages...
Rasterdatei erzeugen
> /opt/lib/cups/filter/pstoraster 1 tim '' 1 ''<pstops.ps >pstoras.ras
INFO: Rendering completed
jetzt kommt der Druckertreiber ins Spiel, erzeuge Drucker-RAW-Datei
> /opt/lib/cups/filter/rastertogutenprint.5.2 1 tim '' 1 ''<pstoras.ras >out.prn
DEBUG: Gutenprint: ================ Done printing page 1 ================
und jetzt die fertige prn-Datei rausdumpen
> /opt/bin/lp -d Canon_MP970_series ./out.prn
</pre>

Version vom 27. September 2012, 06:51 Uhr

SEITE IM AUFBAU...

Einleitung

Synology bringt eine eigene Druckerverwaltung für USB-Drucker mit. Als Unterbau verwendet Synology CUPS. Leider sind die Elemente der Web-GUI von CUPS nicht Bestandteil der DSM-Firmware, so dass Cups auf Port 631 laucht, aber eine Seite wie http://meine_syno:631/admin nicht darstellen kann.

Für einen allgemein über USB angeschlossenen Drucker der von der Synology im Netzwerk freigegeben ist, benötigt DSM keinen Druckerteiber. Die gesamte Umwandlung des Druckjobs über den Druckertreiber in den RAW-Druckjob erfolgt dabei auf der PC Seite. Hier stehen dann oft die Original Treiber des Druckerherstellers zur Verfügung (optimales Druckergebnis).

Die DSM Firmware der Synology kann einen Airprint Drucker emulieren. Dadurch kann man über IOS-Geräte auf beliebig angeschlossene Drucker drucken.


Da die Synology auch einen Airprint Drucker emuliert. Das ermöglicht die Einbindung von nicht airprintfähigen Druckern und das Drucken von IOS-Geräten auf diese Drucker. Bei dieser Airprint-Emulation erfolgt die gesamte Umwandlung des Druckjobs in die Druckersprache mit Hilfe von Druckertreibern in der Synology. Als Druckertreiber kommt hier Gutenprint zur Anwendung. Die Liste der unterstützten Drucker: http://gimp-print.sourceforge.net/p_Supported_Printers.php In DSM 4.1 ist Gutenprint 5.2.9 integriert. Beim Drucken über Airprint werden deshalb keine Druckertreiber vom Druckerhersteller verwendet, so dass bei den Linux-Druckertreibern ggf. Fehler im Druckbild oder Probleme mit der Druckqualität auftreten können.

Weiterhin können in der DSM keine Netzwerkdrucker eingebunden werden. Nachfolgend wird gezeigt wie Canon Drucker mit mit bjnp. Das gleiche gilt für HP Netzwerk-Drucker (Stichwort: Hplip )

Voraussetzung

Installationen

Variante 1: Deakivierung der DSM-CUPS und Aktivierung eines eigenen CUPS-Servers

Bei dieser Variante stehen einem alle Möglichkeiten des Common Unix Printing Systems zur Verfügung:

  • Einbindung von Netzwerkdruckern (CUPS Backend)
  • Verwaltung von Druckern mit der CUPS-GUI
  • Einstellungen der Drucker verwalten (Druckqualität etc.)

Dabei wird der DSM-CUPS-Server deaktviert und über ipkg ein CUPS-Server installiert.

Vereinfacht wird hier alles unter Root ausgeführt. Die Anleitung im Forum zeigt den Weg mit dem eingeschränkten Account admin http://www.synology-forum.de/showthread.html?32614-HowTo-Airprint-mit-aktuellen-Gutenprint-Treibern&p=268258&viewfull=1#post268258

ich habe nicht alles formatiert, ein > bedeutet:

> shell eingabe

Hinweise:


zur Vorbereitung erst einmal Optware Installieren

Anleitung für Deine Syno: http://www.synology-wiki.de/index.php/IPKG

ggf Syno Startscript anpassen

/usr/local/etc/rc.d/Optware.sh

Pfad kontrollieren

> export PATH=/opt/bin:/opt/sbin:$PATH
> echo $PATH
/opt/bin:/opt/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin

Entwicklungsumgebung

> ipkg update
> ipkg install gcc nano
> ipkg install optware-devel (ganz dicke Keule aber make ist dabei)

syno cups beenden

> /usr/syno/etc.defaults/rc.d/S55cupsd.sh stop

und syno cups dauerhaft stoppen

> mkdir /usr/syno/etc.defaults/rc.d/backup
> mv /usr/syno/etc.defaults/rc.d/s55cupsd.sh /usr/syno/etc.defaults/rc.d/backup/

Optware Cups installieren

> /opt/bin/ipkg install cupsInstalling cups (1.4.6-1) to root...
Downloading http://ipkg.nslu2-linux.org/feeds/op....4.6-1_arm.ipk
Configuring cups
Successfully terminated.

Cups Web GUI installieren

> /opt/bin/ipkg install cups-doc
Installing cups-doc (1.4.6-1) to root...
Downloading http://ipkg.nslu2-linux.org/feeds/op....4.6-1_arm.ipk
Configuring cups-doc

und für das compilieren anderer Pakete

> /opt/bin/ipkg install cups-dev

da auf der Synology die Befehle adduser und addgroup fehlen (Verwaltung über DSM-GUI), verwenden wir die cups BasicDigest Authentifizierung der Schlüssel liegt dann in /opt/etc/cups/passwd.md5

> /opt/bin/lppasswd -g root -a admin
Enter password: xxxxxxxxx

cupsd.conf anpassen (nano) - ggf. Loglevel auf debug setzen

> cat /opt/etc/cups/cupsd.conf
LogLevel warn
Port 631ServerAlias *

# Show shared printers on the local network.
Browsing On
BrowseOrder allow,deny
BrowseAllow all
BrowseLocalProtocols CUPS

# Default authentication type, when authentication is required...
DefaultAuthType BasicDigest

# Restrict access to the server...
<Location />
  #AuthType BasicDigest
  Order allow,deny
  Allow from All
</Location>

# Restrict access to the admin pages...
<Location /admin>
  #AuthType BasicDigest
  Order allow,deny
  Allow from All
</Location>

# Restrict access to configuration files...
<Location /admin/conf>
  AuthType BasicDigest
  Order allow,deny
  Allow from All
</Location>

start/stop script für cups anlegen: http://www.synology-wiki.de/index.ph...p_Script_cupsd

> chmod 666 S55cupsd

jetzt mal schnuppern

> /opt/etc/init.d/S55cupsd start

einloggen auf Cups Web GUI https://syno:631/admin/ zum Test ob alle Rechte vorhanden sind den voreingestellten Drucker hp990c löschen

  • + Share printers connected to this system
  • + Allow printing from the Internet
  • + Allow remote administration

Hinweis: bei Problemen mit den Rechten zum Einloggen auf der Cups-Web-Frontend ggf. mal den Port 631 tunneln

# ssh -L 8888:localhost:631 root@192.168.1.101

im Browser eingeben

http://localhost:8888

Hinweis: leider ist das usb backend von ipkg-cups defekt - es wird kein usb drucker erkannt verlinke das usb backend der Syno

> mv /opt/lib/cups/backend/usb /opt/lib/cups/backend/usb.bad
> ln -s /usr/local/cups/backend/usb /opt/lib/cups/backend/usb

die aktuellen Gutenprint Treiber compilieren

> mkdir /volume1/tmp
> cd /volume1/tmp
> wget http://sourceforge.net/projects/gimp...-5.2.8.tar.bz2
> tar --bzip2 -xvf gutenprint-5.2.8.tar.bz2
> cd gutenprint-5.2.8

diese Stelle ist etwas trickreich

> ./configure CC="/opt/bin/gcc -std=gnu99 -I/opt/include -L/opt/lib" \
--prefix=/opt \
--includedir=/opt/include \
--with-cups=/opt \
--disable-cups-ppds \
--disable-cups-level3-ppds \
--without-foomatic \
--disable-libgutenprintui2 \
--disable-nls \
--disable-static

es kommt noch Fehlermeldung bei make

#make
/opt/lib/gcc/arm-none-linux-gnueabi/4.2.3/../../../../arm-none-linux-gnueabi/lib/libpthread.so: undefined reference to `__default_sa_restorer_v2@GLIBC_PRIVATE'
/opt/lib/gcc/arm-none-linux-gnueabi/4.2.3/../../../../arm-none-linux-gnueabi/lib/libpthread.so: undefined reference to `__default_rt_sa_restorer_v2@GLIBC_PRIVATE'
/opt/lib/gcc/arm-none-linux-gnueabi/4.2.3/../../../../arm-none-linux-gnueabi/lib/libpthread.so: undefined reference to `__default_rt_sa_restorer_v1@GLIBC_PRIVATE'
/opt/lib/gcc/arm-none-linux-gnueabi/4.2.3/../../../../arm-none-linux-gnueabi/lib/libpthread.so: undefined reference to `__default_sa_restorer_v1@GLIBC_PRIVATE'
collect2: ld returned 1 exit status

Lösung

Quelle: http://forum.synology.com/enu/viewto...p?f=90&t=30132 (libpthread.so der Syno verwenden)

> mv /opt/arm-none-linux-gnueabi/lib/libpthread-2.5.so /opt/arm-none-linux-gnueabi/lib/libpthread-2.5.so.bad
> cp /lib/libpthread.so.0 /opt/arm-none-linux-gnueabi/lib/libpthread-2.5.so

und noch einmal

> make

Gutenprint nach /opt installieren

> make install
Libraries have been installed in:
/opt/lib
/opt/lib/gutenprint/5.2/
Libraries have been installed in:
/opt/lib/gutenprint/5.2/modules

Kontrolle

> /opt/lib/cups/filter/rastertogutenprint.5.2
Usage: rastertoprinter job-id user title copies options [file]


cups Netzwerkzugriff zum Pixma-Drucker mit cups-bjnp

dafür die Netzerktreiber für Canon Pixma installieren

falls noch nicht getan (siehe Gutenprint):

> ipkg install cups-dev
> cd /volume1/tmp

cups-bjnp compilieren

> wget http://sourceforge.net/projects/cups...p-0.5.5.tar.gz
> tar xzf cups-bjnp-0.5.5.tar.gz
> cd cups-bjnp-0.5.5/
> ./configure --prefix=/opt
> make

ein Test, ob die Netzwerkverbindung zum Drucker steht

> ./bjnp
network bjnp://192.168.1.111:8611 "Canon MP970 series" "Canon MP970 series 192.168.1.111" "MFG:Canon;CMD:BJL,BJRaster3,BSCCe,NCCe,PLI;SOJ:TX T01,BJNP2;MDL:MP970 series;CLS:PRINTER;DES:Canon MP970 series;VER:1.110;STA:10;FSI:03;HRI:OTH;MSIAT,E3;"

das bjnp backend nach cups installieren

> cp ./bjnp /opt/lib/cups/backend/

Cups neu starten

> /opt/etc/init.d/S55cupsd restart

Cups GUI im Browser aufrufen und Drucker hinzufügen

https://syno:631/admin/
"Add Printer" und Netzwerkdrucker hinzufügen
Discovered Network Printers: Canon MP970 series 192.168.1.111 (Canon MP970 series)
[x] Share This Printer
-> Driver: Canon PIXMA MP970 - CUPS+Gutenprint v5.2.8 (color, 2-sided printing)

Drucker-Treiber liegen jetzt hier:

/opt/var/cache/cups/Canon_MP970_LAN.ipp4
/opt/var/cache/cups/Canon_MP970_LAN.pwg3
/opt/etc/cups/ppd/Canon_MP970_LAN.ppd

Airprint mit Bonjour über airprint-generate.py einrichten

zuerst pycups installieren

http://pypi.python.org/pypi/pycups/1.9.62

leider benötigen wir dazu python python2.5 ist bereits mit dem Toolchain in den ipkg Pfad installiert worden

pycups installieren

> cd /volume1/tmp/
> wget http://pypi.python.org/packages/sour...1.9.62.tar.bz2
> tar --bzip2 -xvf pycups-1.9.62.tar.bz2
> cd pycups-1.9.62
> /opt/bin/python2.5 setup.py install
running install_lib
copying build/lib.linux-armv5tel-2.6/cups.so -> /opt/local/lib/python2.6/site-packages
running install_egg_info
Writing /opt/local/lib/python2.6/site-packages/pycups-1.9.62-py2.6.egg-info

jetzt weiter mit

> cd /volume1/tmp/
<pre>
syno wget wurde nicht für https compiliert
<pre>
> /opt/bin/wget -O airprint-generate.py --no-check-certificate https://raw.github.com/tjfontaine/ai...nt-generate.py

Mit dem Script die Avahi "services" erzeugen und installieren:

> /opt/bin/python2.6 ./airprint-generate.py

einfaches kopieren der service-Datei nach /usr/syno/avahi/services/ ergibt keinen Sinn, da S99avahi.sh fremde Service-Dateien löscht

einzige Außnahme: sie heißen: 3rdparty.*.service

Achtung: S99avahi.sh akzeptiert nur genau eine 3rdparty.* Datei, bei zwei Dateien wird alles gelöscht

> for a in $(ls *.service); do mv $a "3rdparty.$a"; done
> cp 3rdparty.* /usr/syno/avahi/services/

kontrolliere, dass nur genau eine 3rdparty.* im Ordner /usr/syno/avahi/services/ liegt

avahi neu starten

> /usr/syno/etc/rc.d/S99avahi.sh restart

Hinweis: Solange man S99avahi.sh nicht neu startet, werden alle Service sofort (1 Sekunde) im Netzwerk veröffentlicht und keine fremden *.service gelöscht. Zum Testen ist somit kein "S99avahi.sh restart" erforderlich

versucht man jetzt über Airprint zu drucken:

-> Fehlermeldung im cups job spooler : stopped "Unable to execute gs program: No such file or directory"

Lösung: für airprint pdf drucken fehlt noch "ipkg install ghostscript" oder einfacher

> ln -s /usr/local/bin/gs /usr/bin/

cups mit Airprint und Zugriff auf Drucker im LAN ist jetzt fertig installiert

jetzt zur Sicherheit die Syno mal neu starten

> reboot

oder nur ein einfaches

> /opt/etc/init.d/S55cupsd restart

Variante 2: Erweiterung des DSM-CUPS-Servers

Hier besteht die Möglichkeit mit IPKG die erforderlichen Web_GUI Elemente nachzuinstallieren, so dass über Port 631 der DSM-CUPS-Server erreichbar ist

#zuerst die erforderlichen Dateien laden
> /opt/bin/ipkg install cups-doc    
Installing cups-doc (1.4.6-1) to root...
Installing cups (1.4.6-1) to root...
...

#jetzt diese ipkg-Dateien in die Syno-DSM kopieren (es wird nichts überschrieben)

> mkdir /usr/local/cups/cgi-bin
> cp /opt/lib/cups/cgi-bin/* /usr/local/cups/cgi-bin/
> mkdir /usr/local/cups/templates/
> cp /opt/share/cups/templates/* /usr/local/cups/templates/
> mkdir /usr/local/cups/daemon/
> cp /opt/lib/cups/daemon/* /usr/local/cups/daemon/
> cp /opt/share/doc/cups/cups* /usr/local/doc/cups/

ein dummy Nutzer-PW in Cups-Opt anlegen
> echo "admin:root:00000000000000000000000000000000" > /usr/local/cups/passwd.md5

Webrowser aufrufen http://syno:631/admin bei Änderung von Cups-Einstellungen:

  • login: admin
  • pw: password des useraccounts (nicht o.g. irgendetwaslanges)

und der Druckerverwaltung steht nichts mehr im Wege es können Canon Netzwerkdrucker eingebunden werden, indem das Modul bjnp wie oben dargestellt compiliert und in den backend-Ordner kopiert wird

cp ./bjnp /usr/local/cups/backend/

Airprint bei Netzwerkdruckern weiterhin mit airprint-generate.py (s.o.)

to do

solange an der Syno kein USB-Drucker hängt, laufen keine Syno-Scripte los und die printers.conf.O enthält die mit der Cups-GUI hinzugefügten Drucker
erkennt die Syno einen USB-Drucker schmeißt das Syno-Script alle per Cups-Webinterface hinzugefügten Drucker aus der printers.conf.* raus

weiterhin stoppt die DSM den Syno-Cups-Server regelmäßig wenn kein USB-Drucker angeschlossen ist, dadurch sind über LAN angeschlossene Netzwerkdrucker nicht mehr erreichbar

Lösungsansatz:
Man muss seine eigene printers.conf sichern und nach einem Systemstart wieder nach /usr/local/cups/printers.conf kopieren.
Die gleichzeitige Verwaltung von USB und Netzwerkdruckern erfordert eine Deaktivierung von
/usr/syno/etc.defaults/rc.d/S55cupsd.sh
und ein Start von cups mit einem eigenen Start/Stop-Scripts
siehe http://www.synology-wiki.de/index.ph...p_Script_cupsd
mit /usr/syno/sbin/cupsd -C /usr/local/cups/cupsd.conf
Dann müssen auch USB-Drucker über das CUPS-Webinterface hinzugefügt werden.

Problem: Die Treiberdatei *.ppd erhält man nur wenn man einmal den Drucker an USB steckt, damit diese ppd vom Syno-Server heruntergeladen wird.

Variante 3: Airprint Drucken mit IOS 6

Ab IOS6 druckt Apple nicht mehr im Format pdf sondern setzt einen Druckjob im Format urf ab. Dieses Format muss deshalb mit dem zusätzlichen Filter urftopdf erst in pdf umgewandelt werden

die gesamte Druckjob-Kette sieht so aus: urf (Apple) -> pdf (Adobe) -> ps (Postscript) -> ras (Rasterdatei) -> prn (Drucker-RAW/Rasterimage)

Quelle ist der Forumbeitrag:

http://www.synology-forum.de/showthread.html?32614-HowTo-Airprint-mit-aktuellen-Gutenprint-Treibern&p=272126&viewfull=1#post272126

Installation des urftopdf Filters (zur Nutzung von AirPrint unter iOS 6)

1) Installation der benötigten libharu Bibliothek

> wget http://libharu.org/files/libharu-2.2.1.tar.gz
> tar xzvf libharu-2.2.1.tar.gz
> cd libharu-2.2.1
> ./configure --prefix=/opt
> make
> make install

2) Installation des urftopdf Filters

> wget -O urftopdf.zip --no-check-certificate https://github.com/superna9999/urftopdf/zipball/master
> unzip orftopdf-zip
> cd superna9999-urftopdf-6f69800
> gcc urftopdf.c -lhpdf -lcups -o urftopdf -lm
> cp urftopdf /opt/lib/cups/filter/
> cp urftopdf.types /opt/share/cups/mime/
> cp urftopdf.convs /opt/share/cups/mime/
> /opt/etc/init.d/S55cupsd restart

3) Anpassung der services Datei

In den von avahi genutzten services Dateien muss dann noch unter dem Paramter "pdl=" der Eintrag "image/urf" mit Komma getrennt hinzugefügt werden. Jetzt sollte der Drucker auch unter iOS 6 auftauchen und genutzt werden können.

Variante 4: DEBUG Logprotokolle und manuelles Testen der Filter in der Shell

Cups ist sehr gesprächig man den Loglevel anpasst.

Das geht sehr bequem über das Cups-Web-Frontend (führt gleich Neustart cupsd aus) in der Cups-GUI / Edit Configuration File

#LogLevel error
LogLevel debug
#ErrorLog syslog
ErrorLog /var/log/cups/error_log

und nicht vergessen:

> mkdir /var/log/cups/

Ein Beispiel für ein Druckjob im pdf-Format, ausgegeben auf Backend usb:

D [24/Sep/2012:20:06:24 +0200] [Job 3] envp[22]="CONTENT_TYPE=application/pdf"
I [24/Sep/2012:20:06:24 +0200] [Job 3] Started filter /usr/local/cups/filter/pdftops (PID 4382)
I [24/Sep/2012:20:06:24 +0200] [Job 3] Started filter /usr/local/cups/filter/pstoraster (PID 4383)
I [24/Sep/2012:20:06:24 +0200] [Job 3] Started filter /usr/local/cups/filter/rastertogutenprint.5.2 (PID 4384)
D [24/Sep/2012:20:06:24 +0200] [Job 3] envp[28]="FINAL_CONTENT_TYPE=printer/usbprinter2"
I [24/Sep/2012:20:06:24 +0200] [Job 3] Started backend /usr/local/cups/backend/usb (PID 4385)

man kann jetzt wunderbar die einzelnen Druck-Schritte aus dem Log-Protokoll auch in der Shell manuell durchspielen. Anbei aus meinen Notizen der Druck der Cups-Testseite

Wer Syno-DSM-Cups verwendet muss nur die Pfade von /opt nach /usr (siehe obigen Protollauszug) anpassen und die eigene Drucker.ppd einsetzen

Quelle: http://fedoraproject.org/wiki/How_to...nting_problems

CUPS-BANNER Testseite: /opt/share/cups/data/testprint

Treiberdatei
> export PPD=/opt/etc/cups/ppd/Canon_MP970_LAN.ppd

Postscriptdatei generieren
> /opt/lib/cups/filter/bannertops 1 tim '' 1 '' </opt/share/cups/data/testprint >bannertops.ps
DEBUG: PNG image: 192x128x8, color_type=2 (RGB)

ich denke, dass ist ein Null-Schritt siehe http://www-user.tu-chemnitz.de/~heha...are/pstops.htm
> /opt/lib/cups/filter/pstops 1 tim '' 1 '' <bannertops.ps >pstops.ps
DEBUG: Page = 595x842; 0,0 to 595,842
DEBUG: Wrote 1 pages...

Rasterdatei erzeugen
> /opt/lib/cups/filter/pstoraster 1 tim '' 1 ''<pstops.ps >pstoras.ras 
INFO: Rendering completed

jetzt kommt der Druckertreiber ins Spiel, erzeuge Drucker-RAW-Datei 
> /opt/lib/cups/filter/rastertogutenprint.5.2 1 tim '' 1 ''<pstoras.ras >out.prn
DEBUG: Gutenprint: ================ Done printing page 1 ================

und jetzt die fertige prn-Datei rausdumpen
> /opt/bin/lp -d Canon_MP970_series ./out.prn