Dieses Repository enthält eine Druckeranwendung zum Drucken auf HP- und Apollo-Druckern, die von der HPLIP-Treibersuite von HP unterstützt werden.
Es verwendet PAPPL, um das IPP-Drucken von mehreren Betriebssystemen aus zu unterstützen. Darüber hinaus nutzt es die Ressourcen von cups-filters 2.x (Filterfunktionen in libcupsfilters, libppd) und pappl-retrofit (Kapselung klassischer CUPS-Treiber in Druckeranwendungen). Dieses Werk (oder jetzt der Code von pappl-retrofit) ist von der HP-Printer-App abgeleitet.
Der Druckertreiber selbst und die Software zur Kommunikation mit der Druckerhardware stammen aus der HPLIP-Treibersuite (HP Linux Imaging and Printing), außerdem finden Sie Informationen zu unterstützten Druckermodellen und deren Funktionen.
Ihre Beiträge sind willkommen. Bitte posten Sie Probleme und Pull-Requests.
Hinweis: HPLIP wird von HP aktiv gepflegt, es werden kontinuierlich die neuesten Druckermodelle hinzugefügt und die Software an neue Umgebungen/Linux-Distributionen angepasst. Daher wäre es auch der richtige Weg, wenn HP HPLIP in eine Druckeranwendung umwandelt oder diese zumindest als Alternative zum klassischen CUPS/SANE-Treiber anbietet. Insbesondere sollten sie eine native Druckeranwendung erstellen, die intern keine PPDs, CUPS-Filter und CUPS-Backends verwendet. Auch ihre Dienstprogramme müssen von CUPS unabhängig gemacht werden.
Für PostScript-Drucker können Sie auch die PostScript-Druckeranwendung verwenden, insbesondere wenn Sie diese bereits für einen PostScript-Drucker eines anderen Herstellers installiert haben.
Überprüfen Sie außerdem, ob es sich bei Ihrem Drucker um einen treiberlosen IPP-Drucker handelt (AirPrint, Mopria, IPP Everywhere, Wi-Fi Direct Print, Drucken von Telefonen), da Sie in diesem Fall überhaupt keine Druckeranwendung benötigen. Die meisten modernen HP-Drucker, selbst die günstigsten Modelle, sind treiberlose IPP-Drucker. Sogar reine USB-Drucker können treiberloses IPP sein, und Sie können im Allgemeinen treiberloses IPP über USB verwenden. Versuchen Sie in diesen Fällen zuerst ipp-usb.
Eine Druckeranwendung, die den hpcups
Druckertreiber und alle Drucker-PPDs von HPLIP bereitstellt und das Drucken auf den meisten Druckern von HP und Apollo unterstützt. Dies ermöglicht ein einfaches Drucken in hoher Qualität, auch von Fotos auf Fotopapier. Der hpps
CUPS-Filter für PIN-geschütztes Drucken auf PostScript-Druckern ist ebenfalls enthalten.
Auch die Drucker werden mit HPLIP erkannt. Für USB-Drucker wird das hp
CUPS-Backend verwendet und für Netzwerkdrucker das Dienstprogramm hp-probe
(gekapselt in einem Skript, um sich wie ein CUPS-Backend zu verhalten).
Die Kommunikation mit den Druckern erfolgt über das hp
CUPS-Backend und daher wird (zumindest im Fall von USB) das IEEE-1284.4-Paketprotokoll (Protokoll 7/1/3 auf USB) verwendet und kein einfaches Stream-Protokoll (wie der Standard). Verwendung von CUPS- und PAPPL-Backends). Auf diese Weise sollte man in der Lage sein, gleichzeitig zu drucken und zu scannen oder zumindest den Druckerstatus während des Druckens zu überprüfen. Nicht alle Drucker unterstützen dieses Protokoll. Andernfalls wird ein Standard-Streaming-Protokoll verwendet. Auch alle anderen speziellen Funktionen, die das hp
Backend erfordern, werden unterstützt. Wählen Sie auf der Weboberflächenseite „Drucker hinzufügen“ unter „Geräte“ die Einträge „HPLIP (HP)“ aus.
Beachten Sie, dass das hp
Backend keinen bidirektionalen Zugriff auf den Drucker zulässt. Wenn Sie über einen PostScript-Drucker verfügen und die Unterstützung der Fernabfrage der Zubehörkonfiguration des Druckers anstelle des gleichzeitigen Druckens und Scannens bevorzugen, stehen auch die Standard-Backends von CUPS für USB- und Netzwerkdrucker zur Verfügung.
Wenn Sie eine ungewöhnliche Systemkonfiguration oder eine persönliche Firewall haben, werden die Backends von HP Ihren Drucker möglicherweise nicht erkennen. Auch in dieser Situation können die Standard-Backends, einschließlich des vollständig manuellen Eintrags „Netzwerkdrucker“ in Kombination mit dem Hostname/IP-Feld, hilfreich sein.
Die Verwendung von CUPS anstelle der Standard-Backends von PAPPL ermöglicht eigenartige Problemumgehungen für USB-Drucker mit Kompatibilitätsproblemen (und kann bearbeitet werden) und die Ausgabe kann zusätzlich zum Socket über IPP, IPPS (verschlüsselt!) und LPD an den Drucker gesendet werden ( normalerweise Port 9100). Das SNMP-Backend kann konfiguriert werden (Community, Adressbereich).
PWG-Raster-, Apple-Raster- oder Bildeingabedaten, die auf einem Nicht-PostScript-Drucker gedruckt werden sollen, werden nicht in PostScript oder PDF konvertiert, sondern nur auf den erforderlichen Farbraum und die erforderliche Auflösung konvertiert/skaliert und dann in den hpcups
Treiber eingespeist.
Zum Drucken auf Nicht-PostScript-Druckern werden PDF- und PostScript-Eingabedaten mithilfe von Ghostscript in Rasterdaten gerendert. Ghostscript wird auch zum Konvertieren von PDF in PostScript für PostScript-Drucker verwendet.
Die Informationen darüber, welche Druckermodelle unterstützt werden und welche Fähigkeiten sie haben, basieren auf den in HPLIP enthaltenen PPD-Dateien. Sie werden im Snap als komprimiertes Archiv verpackt.
IPP-Standardattribute für Aufträge werden den für sie am besten geeigneten Optionseinstellungen des Treibers zugeordnet, sodass Benutzer von jedem Clienttyp (z. B. einem Telefon oder IoT-Gerät) aus drucken können, der nur Standard-IPP-Attribute unterstützt und die PPD-Optionen nicht abrufen kann. Fächer, Medienformate, Medientypen und Duplex lassen sich leicht zuordnen, aber wenn es um Farbe und Qualität geht, wird es komplexer, da sich die relevanten Optionen in den PPD-Dateien stark unterscheiden. Hier verwenden wir einen Algorithmus, der automatisch (wer möchte etwa 3000 PPD-Dateien für die Aufgaben von Hand bearbeiten) den richtigen Satz an Optionseinstellungen für jede Kombination aus print-color-mode
( color
/ monochrome
) und print-quality
( draft
/ normal
findet / high
) und print-content-optimize
( auto
/ photo
/ graphics
/ text
/ text-and-graphics
) in der PPD des aktuellen Druckers. So haben Sie einfachen Zugriff auf die volle Qualität oder Geschwindigkeit Ihres Druckers, ohne sich mit druckerspezifischen Optionseinstellungen herumschlagen zu müssen (die ursprünglichen Optionen sind weiterhin über die Webadministrationsoberfläche zugänglich).
Der Snap der HPLIP-Druckeranwendung bezieht den Quellcode von HPLIP aus dem Paket-Repository von Debian und nicht direkt von HP, da Debians Paket etwa 80 Patches enthält, die Fehler beheben, die an HP gemeldet werden, der Patch jedoch nicht von den Originalautoren übernommen wurde. Mit Snap sollten Benutzer also die gleichen Erfahrungen in Bezug auf Zuverlässigkeit und Qualität machen wie mit dem Debian-Paket.
Unterstützung für den Download des proprietären Plugins von HPLIP über eine zusätzliche Seite im Webinterface. Dies bietet Unterstützung für einige Laserdrucker, bei denen die Firmware bei jedem Einschalten geladen werden muss oder die bestimmte proprietäre Druckdatenformate verwenden. Dies funktioniert sowohl im Snap als auch in der klassischen Installation der Druckeranwendung (muss als Root ausgeführt werden, sonst nur Statusprüfung des Plugins).
Unterstützung für das Scannen auf den Multifunktionsdruckern von HP. Dies erfordert Scan-Unterstützung in PAPPL (die in GSoC 2021 gute Fortschritte gemacht hat).
PDF-Testseite, beispielsweise generiert mit dem Bannertopdf-Filter.
Für Menschen lesbare Zeichenfolgen für Anbieteroptionen (Benötigt Unterstützung durch PAPPL: Problem Nr. 58: Lokalisierungsunterstützung)
Internationalisierung/Lokalisierung (Benötigt Unterstützung durch PAPPL: Problem Nr. 58: Lokalisierungsunterstützung)
SNMP-Tintenstandprüfung über die Funktion ps_status() (Benötigt Unterstützung durch PAPPL: Problem Nr. 83: CUPS führt IPP- und SNMP-Tintenstandabfragen über Backends durch, PAPPL sollte hierfür Funktionen haben)
Build-Optionen für Cups-Filter zum Erstellen ohne libqpdf und/oder ohne libppd. Ersteres ermöglicht das Erstellen des Snaps dieser Druckeranwendung, ohne QPDF herunterladen und erstellen zu müssen
Um diese Druckeranwendung einfach auszuführen und zu verwenden, installieren Sie sie einfach aus dem Snap Store:
sudo snap install --edge hplip-printer-app
Befolgen Sie dann die nachstehenden Anweisungen zur Einrichtung.
Um den Snap selbst zu erstellen, führen Sie ihn im Hauptverzeichnis dieses Repositorys aus
snapcraft snap
Dadurch werden alle benötigten Pakete heruntergeladen und die HPLIP-Druckeranwendung erstellt. Beachten Sie, dass PAPPL (bevorstehende Version 1.0) und cups-filter (bevorstehende Version 2.0) direkt aus ihren GIT-Repositorys abgerufen werden, da es noch keine entsprechenden Versionen gibt. Dies kann auch dazu führen, dass diese Druckeranwendung plötzlich nicht mehr aufgebaut wird.
Um den resultierenden Snap zu installieren, führen Sie ihn aus
sudo snap install --dangerous hplip-printer-app_1.0_amd64.snap
Die Druckeranwendung wird automatisch als Server-Daemon gestartet.
Rufen Sie die Weboberfläche auf
http://localhost:8000/
Verwenden Sie die Weboberfläche, um einen Drucker hinzuzufügen. Geben Sie einen Namen ein, wählen Sie den erkannten Drucker und dann Marke und Modell aus. Legen Sie außerdem das installierte Zubehör, die geladenen Medien und die Standardeinstellungen fest. Wenn es sich bei dem Drucker um einen PostScript-Drucker handelt, können häufig auch Zubehörkonfigurations- und Optionsstandardwerte vom Drucker abgefragt werden.
Wenn der Eintrag Ihres Druckers im Webinterface den Hinweis „erfordert proprietäres Plugin“ enthält, müssen Sie das Plugin von HP installieren. Klicken Sie dazu auf die Schaltfläche „Plugin“ in diesem Druckereintrag oder auf die Schaltfläche „Proprietäres Plugin installieren“ unter „Andere Einstellungen“ auf der Startseite der Weboberfläche und folgen Sie den Anweisungen auf dem Bildschirm.
Drucken Sie dann PDF-, PostScript-, JPEG-, Apple Raster- oder PWG Raster-Dateien mit
hplip-printer-app FILE
oder mit CUPS drucken, CUPS (und auch cups-browsed) erkennen und behandeln die mit dieser Druckeranwendung eingerichteten Drucker als treiberlose IPP-Drucker (IPP Everywhere und AirPrint).
Sehen
hplip-printer-app --help
für weitere Optionen.
Verwenden Sie das Argument „-o log-level=debug“ für eine ausführliche Protokollierung in Ihrem Terminalfenster.
Sie können Dateien zu /var/snap/hplip-printer-app/common/usb/
hinzufügen, um zusätzliche USB-Eigenartenregeln zu erhalten. Bearbeiten Sie die vorhandenen Dateien nur für schnelle Tests, da sie bei jedem Update des Snap ersetzt werden (um neue Regeln einzuführen).
Sie können die Datei /var/snap/hplip-printer-app/common/cups/snmp.conf
bearbeiten, um die SNMP-Netzwerkdruckererkennung zu konfigurieren.
Sie können auch einen „Quick-and-Dirty“-Build ohne Snapping durchführen und ohne die Notwendigkeit, PAPPL, cups-filters 2.x und pappl-retrofit in Ihrem System zu installieren. Sie benötigen ein Verzeichnis mit dem neuesten GIT-Snapshot von PAPPL, dem neuesten GIT-Snapshot von cups-filters und dem neuesten GIT-Snapshot von pappl-retrofit (jeweils die Hauptzweige). Sie müssen alle kompiliert werden ( ./autogen.sh; ./configure; make
), eine Installation ist nicht erforderlich. Installieren Sie außerdem die Header-Dateien aller benötigten Bibliotheken (die Installation von „libcups2-dev“ sollte reichen).
Führen Sie im Verzeichnis mit hplip-printer-app.c die Befehlszeile aus
gcc -o hplip-printer-app hplip-printer-app.c $PAPPL_SRC/pappl/libpappl.a $CUPS_FILTERS_SRC/.libs/libppd.a $CUPS_FILTERS_SRC/.libs/libcupsfilters.a $PAPPL_RETROFIT_SRC/.libs/libpappl-retrofit.a -ldl -lpthread -lppd -lcups -lavahi-common -lavahi-client -lgnutls -ljpeg -lpng16 -ltiff -lz -lm -lusb-1.0 -lpam -lqpdf -lstdc++ -I. -I$PAPPL_SRC/pappl -I$CUPS_FILTERS_SRC/ppd -I$CUPS_FILTERS_SRC/cupsfilters -I$PAPPL_RETROFIT_SRC/pappl/retrofit -L$CUPS_FILTERS_SRC/.libs/ -L$PAPPL_RETROFIT_SRC/.libs/
Es gibt auch ein Makefile, aber dafür müssen PAPPL, cups-filters 2.x und pappl-retrofit auf Ihrem System installiert sein.
Laufen
./hplip-printer-app --help
Beim Ausführen der nicht geschnappten Version wird standardmäßig nach PPD-Dateien gesucht
/usr/share/ppd/
/usr/lib/cups/driver/
/var/lib/hplip-printer-app/ppd/
Sie können die Umgebungsvariable PPD_PATHS
so festlegen, dass stattdessen auch andere Orte durchsucht werden:
PPD_PATHS=/path/to/my/ppds:/my/second/place ./hplip-printer-app server
Fügen Sie einfach eine durch Doppelpunkte getrennte Liste beliebig vieler Pfade in die Variable ein. Es wird empfohlen, ein Wrapper-Skript zu erstellen.
Beachten Sie, dass nur PPD-Dateien für den hpcups
-Treiber von HPLIP berücksichtigt werden, andere PPD-Dateien werden ignoriert.
Drucker werden nur über das hp
Backend von HPLIP (USB) oder das hp-probe
Dienstprogramm von HPLIP (Netzwerk) erkannt. Für Letzteres ist ein Wrapper-Skript namens HP
enthalten, wodurch das Dienstprogramm wie ein CUPS-Backend verwendet werden kann (nur Erkennungsmodus). Dies führt insbesondere dazu, dass nur HP- und Apollo-Drucker entdeckt werden. Drucker anderer Hersteller werden nicht unterstützt.
Aufträge werden über hpcups
gefiltert und über das hp
Backend (sowohl USB als auch Netzwerk) an den Drucker gesendet.
Die in dieser Druckeranwendung als Alternative bereitgestellten Standard-Backends (nicht HPLIPs) sind CUPS-Backends und nicht PAPPLs, was bedeutet, dass für USB-Drucker die USB-Quirk-Workarounds von CUPS für Kompatibilitätsprobleme verwendet werden, Netzwerkdrucker können auch mit IPP, IPPS usw. verwendet werden LPD-Protokolle und SNMP-Druckererkennung sind konfigurierbar.
USB-Quirk-Regeln in /usr/share/cups/usb
und der Datei /etc/cups/snmp.conf
können bei Bedarf bearbeitet werden.
Stellen Sie sicher, dass Sie HPLIP installiert haben und wenn Sie Standard-Backends verwenden möchten, CUPS (zumindest seine Backends).
Sie benötigen Ghostscript außerdem zum Drucken von PDF- oder PostScript-Aufträgen.
Für den Zugriff auf die Testseite testpage.ps
verwenden Sie die Umgebungsvariable TESTPAGE_DIR:
TESTPAGE_DIR=`pwd` PPD_PATHS=/path/to/my/ppds:/my/second/place ./hplip-printer-app server
oder zur eigenen Erstellung einer Testseite (PostScript, PDF, PNG, JPEG, Apple Raster, PWG Raster):
TESTPAGE=/path/to/my/testpage/my_testpage.ps PPD_PATHS=/path/to/my/ppds:/my/second/place ./hplip-printer-app server
Das Copyright © 2020 der HPLIP-Druckeranwendung liegt bei Till Kamppeter.
Es ist von der HP PCL-Druckeranwendung abgeleitet, einem ersten Arbeitsmodell einer Rasterdruckeranwendung, die PAPPL verwendet. Es ist hier erhältlich:
https://github.com/michaelrsweet/hp-printer-app
Die HP PCL-Druckeranwendung unterliegt dem Urheberrecht © 2019–2020 von Michael R. Sweet.
Diese Software ist unter der Apache-Lizenz Version 2.0 lizenziert, mit einer Ausnahme, um die Verknüpfung mit GPL2/LGPL2-Software (wie ältere Versionen von CUPS) zu ermöglichen. Weitere Informationen finden Sie in den Dateien „LICENSE“ und „NOTICE“.