Ce référentiel contient une application d'imprimante pour l'impression sur les imprimantes HP et Apollo prises en charge par la suite de pilotes HPLIP de HP.
Il utilise PAPPL pour prendre en charge l'impression IPP à partir de plusieurs systèmes d'exploitation. De plus, il utilise les ressources de cups-filters 2.x (fonctions de filtrage dans libcupsfilters, libppd) et pappl-retrofit (encapsulant les pilotes CUPS classiques dans les applications d'imprimante). Ce travail (ou maintenant le code de pappl-retrofit) est dérivé de hp-printer-app.
Le pilote d'imprimante lui-même et le logiciel permettant de communiquer avec le matériel de l'imprimante proviennent de la suite de pilotes HPLIP (HP Linux Imaging and Printing), ainsi que des informations sur les modèles d'imprimante pris en charge et leurs capacités.
Vos contributions sont les bienvenues. Veuillez publier des problèmes et des demandes de tirage.
Remarque : HPLIP est activement entretenu par HP, ils ajoutent continuellement les modèles d'imprimante les plus récents et adaptent le logiciel aux nouveaux environnements/distributions Linux. Par conséquent, ce serait également la bonne solution si HP transformait HPLIP en une application d'imprimante ou au moins le proposait comme alternative au pilote CUPS/SANE classique. En particulier, ils doivent créer une application d'imprimante native, ce qui signifie qu'elle n'utilise pas de PPD, de filtres CUPS et de backends CUPS en interne. De plus, leurs utilitaires doivent être rendus indépendants de CUPS.
Pour les imprimantes PostScript, vous pouvez également utiliser l'application d'imprimante PostScript, surtout si elle est déjà installée sur une imprimante PostScript non HP.
Vérifiez également si votre imprimante est une imprimante IPP sans pilote (AirPrint, Mopria, IPP Everywhere, Wi-Fi Direct Print, impression à partir de téléphones), car dans ce cas, vous n'avez besoin d'aucune application d'imprimante. La plupart des imprimantes HP modernes, même les modèles les moins chers, sont des imprimantes IPP sans pilote. Même les imprimantes USB uniquement peuvent être des IPP sans pilote, et vous pouvez généralement utiliser des IPP sans pilote via USB, essayez d'abord ipp-usb dans ces cas.
Une application d'imprimante fournissant le pilote d'imprimante hpcups
et tous les PPD d'imprimante HPLIP, prenant en charge l'impression sur la plupart des imprimantes HP et Apollo. Cela permet d’imprimer facilement et en haute qualité, y compris des photos sur papier photo. Le filtre hpps
CUPS pour l'impression protégée par code PIN sur les imprimantes PostScript est également inclus.
Les imprimantes sont également découvertes avec HPLIP. Pour les imprimantes USB, le backend hp
CUPS est utilisé et pour les imprimantes réseau, l'utilitaire hp-probe
(encapsulé dans un script pour se comporter comme un backend CUPS).
La communication avec les imprimantes se fait par le backend hp
CUPS et donc (au moins dans le cas de l'USB) le protocole de paquet IEEE-1284.4 (protocole 7/1/3 sur USB) est utilisé et non un simple protocole de flux (comme le standard Utilisation des backends CUPS et PAPPL). De cette façon, on devrait pouvoir imprimer et numériser simultanément, ou au moins vérifier l'état de l'imprimante pendant l'impression. Toutes les imprimantes ne prennent pas en charge ce protocole, sinon un protocole de streaming standard est utilisé. Toute autre fonctionnalité spéciale nécessitant le backend hp
est également prise en charge. Sur la page de l'interface Web « Ajouter une imprimante », sous « Périphériques », sélectionnez les entrées « HPLIP (HP) ».
Notez que le backend hp
ne permet pas l'accès bidirectionnel à l'imprimante. Si vous possédez une imprimante PostScript et préférez la prise en charge de l'interrogation à distance de la configuration des accessoires de l'imprimante au lieu de l'impression et de la numérisation simultanées, les backends standard de CUPS pour les imprimantes USB et réseau sont également disponibles.
Si vous disposez d'une configuration système inhabituelle ou d'un pare-feu personnel, les backends HP ne découvriront peut-être pas votre imprimante. Dans cette situation également, les backends standard, y compris l'entrée entièrement manuelle « Imprimante réseau » en combinaison avec le champ nom d'hôte/IP, peuvent être utiles.
L'utilisation de CUPS au lieu des backends standard de PAPPL crée des solutions de contournement bizarres pour les imprimantes USB présentant des problèmes de compatibilité (et sont modifiables) et la sortie peut être envoyée à l'imprimante via IPP, IPPS (crypté !) et LPD en plus du socket ( généralement le port 9100). Le backend SNMP peut être configuré (communauté, portée de l'adresse).
Les données d'entrée PWG Raster, Apple Raster ou image à imprimer sur une imprimante non PostScript ne sont pas converties en PostScript ou PDF, elles sont uniquement converties/mises à l'échelle selon l'espace colorimétrique et la résolution requis, puis introduites dans le pilote hpcups
.
Pour l'impression sur des imprimantes non PostScript, les données d'entrée PDF et PostScript sont restituées en données raster à l'aide de Ghostscript. Ghostscript est également utilisé pour convertir des PDF en PostScript pour les imprimantes PostScript.
Les informations sur les modèles d'imprimantes pris en charge et leurs capacités sont basées sur les fichiers PPD inclus dans HPLIP. Ils sont regroupés dans le Snap sous forme d’archive compressée.
Les attributs IPP des tâches standard sont mappés aux paramètres d'options du pilote qui leur conviennent le mieux afin que les utilisateurs puissent imprimer à partir de n'importe quel type de client (comme par exemple un téléphone ou un appareil IoT) qui prend uniquement en charge les attributs IPP standard et ne peut pas récupérer les options PPD. Les bacs, les tailles de support, les types de support et le mode recto verso peuvent être facilement mappés, mais lorsqu'il s'agit de couleur et de qualité, cela devient plus complexe, car les options pertinentes diffèrent beaucoup dans les fichiers PPD. Ici, nous utilisons un algorithme qui automatiquement (qui souhaite éditer manuellement environ 3 000 fichiers PPD pour les affectations) trouve le bon ensemble de paramètres d'options pour chaque combinaison de print-color-mode
( color
/ monochrome
), print-quality
( draft
/ normal
/ high
), et print-content-optimize
( auto
/ photo
/ graphics
/ text
/ text-and-graphics
) dans le PPD de l'imprimante actuelle. Vous avez ainsi un accès facile à toute la qualité ou à la vitesse de votre imprimante sans avoir à gérer les paramètres d'options spécifiques à l'imprimante (les options d'origine sont toujours accessibles via l'interface d'administration Web).
Le Snap de l'application d'imprimante HPLIP extrait le code source de HPLIP du référentiel d'empaquetage de Debian au lieu de directement de HP, car le paquet de Debian contient environ 80 correctifs corrigeant des bogues qui sont signalés à HP mais le correctif n'est pas adopté en amont. Ainsi, avec Snap, les utilisateurs devraient bénéficier de la même expérience en termes de fiabilité et de qualité qu'avec le package Debian.
Prise en charge du téléchargement du plugin propriétaire de HPLIP via une page supplémentaire dans l'interface web. Cela ajoute la prise en charge de certaines imprimantes laser qui nécessitent que leur micrologiciel soit chargé à chaque fois qu'elles sont allumées ou qui utilisent certains formats de données d'impression propriétaires. Cela fonctionne à la fois dans Snap et dans l'installation classique de l'application d'imprimante (doit être exécutée en tant que root, sinon uniquement la vérification de l'état du plugin).
Prise en charge de la numérisation sur les imprimantes multifonctions HP. cela nécessite la prise en charge de la numérisation dans PAPPL (qui a bien progressé dans GSoC 2021).
Page de test PDF, par exemple générée avec le filtre bannertopdf.
Chaînes lisibles par l'homme pour les options du fournisseur (nécessite une prise en charge par PAPPL : problème n° 58 : prise en charge de la localisation)
Internationalisation/Localisation (nécessite le support de PAPPL : problème n°58 : support de localisation)
Vérification du niveau d'encre SNMP via la fonction ps_status() (nécessite la prise en charge par PAPPL : problème n°83 : CUPS effectue des sondages de niveau d'encre IPP et SNMP via les backends, PAPPL devrait avoir des fonctions pour cela)
Options de construction pour cups-filters, à construire sans libqpdf et/ou sans libppd, la première permettra de créer le Snap de cette application d'imprimante sans télécharger et construire QPDF
Pour simplement exécuter et utiliser cette application d'imprimante, installez-la simplement à partir du Snap Store :
sudo snap install --edge hplip-printer-app
Suivez ensuite les instructions ci-dessous pour le configurer.
Pour construire le Snap par vous-même, dans le répertoire principal de ce référentiel, exécutez
snapcraft snap
Cela téléchargera tous les packages nécessaires et créera l'application d'imprimante HPLIP. Notez que PAPPL (à venir 1.0) et cups-filters (à venir 2.0) sont extraits directement de leurs référentiels GIT, car il n'existe pas encore de versions appropriées. Cela peut également conduire au fait que cette application d'imprimante ne sera soudainement plus construite.
Pour installer l'exécution Snap résultante
sudo snap install --dangerous hplip-printer-app_1.0_amd64.snap
L'application d'imprimante sera automatiquement démarrée en tant que démon serveur.
Entrez dans l'interface Web
http://localhost:8000/
Utilisez l'interface Web pour ajouter une imprimante. Fournissez un nom, sélectionnez l'imprimante découverte, puis sélectionnez la marque et le modèle. Définissez également les accessoires installés, les supports chargés et les options par défaut. Si l'imprimante est une imprimante PostScript, la configuration des accessoires et les valeurs par défaut des options peuvent également souvent être interrogées depuis l'imprimante.
Si l'entrée de votre imprimante dans l'interface web comporte la remarque "nécessite un plugin propriétaire", vous devez installer le plugin HP. Pour cela, cliquez sur le bouton « Plugin » dans cette entrée d'imprimante ou sur le bouton « Installer le plugin propriétaire » sous « Autres paramètres » sur la première page de l'interface Web et suivez les instructions à l'écran.
Imprimez ensuite des fichiers PDF, PostScript, JPEG, Apple Raster ou PWG Raster avec
hplip-printer-app FILE
ou imprimez avec CUPS, CUPS (et également avec navigation par tasses), découvrez et traitez les imprimantes configurées avec cette application d'imprimante comme des imprimantes IPP sans pilote (IPP Everywhere et AirPrint).
Voir
hplip-printer-app --help
pour plus d'options.
Utilisez l'argument "-o log-level=debug" pour une journalisation détaillée dans la fenêtre de votre terminal.
Vous pouvez ajouter des fichiers à /var/snap/hplip-printer-app/common/usb/
pour des règles de bizarrerie USB supplémentaires. Modifiez les fichiers existants uniquement pour des tests rapides, car ils sont remplacés à chaque mise à jour du Snap (pour introduire de nouvelles règles).
Vous pouvez modifier le fichier /var/snap/hplip-printer-app/common/cups/snmp.conf
pour configurer la découverte d'imprimantes réseau SNMP.
Vous pouvez également effectuer une construction "rapide et sale" sans casser et sans avoir besoin d'installer PAPPL, cups-filters 2.x et pappl-retrofit dans votre système. Vous avez besoin d'un répertoire avec le dernier instantané GIT de PAPPL, le dernier instantané GIT de cups-filters et le dernier instantané GIT de pappl-retrofit (branches principales de chacun). Ils doivent tous être compilés ( ./autogen.sh; ./configure; make
), l'installation n'est pas nécessaire. Installez également les fichiers d'en-tête de toutes les bibliothèques nécessaires (l'installation de "libcups2-dev" devrait le faire).
Dans le répertoire avec hplip-printer-app.c exécutez la ligne de commande
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/
Il existe également un Makefile, mais celui-ci nécessite que PAPPL, cups-filters 2.x et pappl-retrofit soient installés sur votre système.
Courir
./hplip-printer-app --help
Lors de l'exécution de la version non capturée, par défaut, les fichiers PPD sont recherchés dans
/usr/share/ppd/
/usr/lib/cups/driver/
/var/lib/hplip-printer-app/ppd/
Vous pouvez définir la variable d'environnement PPD_PATHS
pour qu'elle recherche d'autres emplacements :
PPD_PATHS=/path/to/my/ppds:/my/second/place ./hplip-printer-app server
Mettez simplement une liste de chemins séparés par des deux-points dans la variable. La création d'un script wrapper est recommandée.
Notez que seuls les fichiers PPD du pilote hpcups
de HPLIP sont pris en compte, les autres fichiers PPD sont ignorés.
Les imprimantes ne sont découvertes que via le backend hp
de HPLIP (USB) ou l'utilitaire hp-probe
de HPLIP (réseau). Pour ce dernier, un script wrapper nommé HP
est inclus, ce qui permet d'utiliser l'utilitaire comme un backend CUPS (mode découverte uniquement). Cela fait notamment que seules les imprimantes HP et Apollo sont découvertes. Les imprimantes d'autres fabricants ne sont pas prises en charge.
Les travaux sont filtrés via hpcups
et envoyés à l'imprimante via le backend hp
(USB et réseau).
Les backends standard (et non ceux de HPLIP) fournis comme alternative dans cette application d'imprimante sont les backends de CUPS et non ceux de PAPPL, ce qui signifie que pour les imprimantes USB, les solutions de contournement USB de CUPS pour les problèmes de compatibilité sont utilisées, les imprimantes réseau peuvent également être utilisées avec IPP, IPPS et Les protocoles LPD et la découverte d'imprimantes SNMP sont configurables.
Les règles USB Quirk dans /usr/share/cups/usb
et le fichier /etc/cups/snmp.conf
peuvent être modifiés si nécessaire.
Assurez-vous que HPLIP est installé et si vous souhaitez utiliser des backends standard, CUPS (au moins ses backends).
Vous avez également besoin de Ghostscript pour imprimer des travaux PDF ou PostScript.
Pour accéder à la page de test testpage.ps
utilisez la variable d'environnement TESTPAGE_DIR :
TESTPAGE_DIR=`pwd` PPD_PATHS=/path/to/my/ppds:/my/second/place ./hplip-printer-app server
ou pour votre propre création d'une page de test (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
L'application d'imprimante HPLIP est protégée par copyright © 2020 par Till Kamppeter.
Il est dérivé de l'application d'imprimante HP PCL, un premier modèle fonctionnel d'application d'imprimante raster utilisant PAPPL. Il est disponible ici :
https://github.com/michaelrsweet/hp-printer-app
L'application d'imprimante HP PCL est protégée par copyright © 2019-2020 par Michael R Sweet.
Ce logiciel est sous licence Apache License Version 2.0 avec une exception pour permettre la liaison avec le logiciel GPL2/LGPL2 (comme les anciennes versions de CUPS). Voir les fichiers « LICENCE » et « AVIS » pour plus d'informations.