filter - Interface pour des filtres de conversion de fichiers pour CUPS
filter travail utilisateur titre
nombre_copies options[
nom_fichier ]
#include <cups/cups.h>
ssize_t cupsBackChannelRead(char *tampon, size_t octets,
double délai);
cups_sc_status_t cupsSideChannelDoRequest(cups_sc_command_t commande,
char *données, int *taille_données,
double délai);
#include <cups/ppd.h>
const char *cupsGetOption(const char *nom, int nombre_options,
cups_option_t *options);
int cupsMarkOptions(ppd_file_t *ppd, int nombre_options,
cups_option_t *options);
int cupsParseOptions(const char *arg, int nombre_options,
cups_option_t **options);
ppd_choice_t *ppdFindMarkedChoice(ppd_file_t *ppd, const char *mot_clef);
void ppdMarkDefaults(ppd_file_t *ppd);
ppd_file_t *ppdOpenFile(const char *fichier);
L’interface de filtres CUPS offre une méthode standard de prise en
charge par CUPS de nouveaux types de documents ou d’imprimantes. Chaque
filtre est capable de convertir des fichiers de différents formats dans
un autre format qui est soit imprimable directement, soit envoyé dans
un autre filtre afin de le rendre imprimable.
Les filtres
doivent être capables de lire depuis un nom de fichier
fourni sur la ligne de commande, ou depuis l'entrée standard en copiant
l'entrée standard vers un fichier temporaire si nécessaire pour
ce format de fichier. Toutes les sorties
doivent être
envoyées sur la sortie standard. Les filtres
ne doivent pas
essayer de communiquer directement avec l’imprimante, d’autres
processus ou d’autres services.
Le nom de la commande (
argv[0]) vaut le nom de l'imprimante de
destination, mais est également disponible dans la variable
d'environnement
PRINTER.
Les options sont passées dans
argv[5] et sont encodées
à partir des attributs IPP correspondants utilisés lors de
soumission du travail. Utilisez la fonction
cupsParseOptions() pour
charger les options dans le tableau
cups_option_t et la fonction
cupsGetOption() pour obtenir la valeur d’un certain attribut.
Soyez attentif à rechercher les alias courants des attributs IPP tels
que « lansdscape » pour l’attribut
« orientation-requested ».
Les options passées sur la ligne de commande habituellement
n’incluent pas les choix par défaut du fichier PPD de
l’imprimante. Utilisez les fonctions
ppdMarkDefaults() et
cupsMarkOptions() de la bibliothèque CUPS pour appliquer les
options pour PPD par défaut et lier tout attribut IPP à
l’option PPD correspondante. Utilisez la fonction
ppdFindMarkedChoice() pour obtenir le choix de l’utilisateur
sélectionné pour une option PPD. Par exemple, un filtre peut
utiliser le code suivant pour déterminer la valeur actuelle de
l’option PPD
Duplex :
ppd_file_t *ppd = ppdOpenFile(getenv("PPD"));
cups_option_t *options = NULL;
int num_options = cupsParseOptions(argv[5], 0, &options);
ppdMarkDefaults(ppd);
cupsMarkOptions(ppd, num_options, options);
ppd_choice_t *choice = ppdFindMarkedChoice(ppd, "Duplex");
Les filtres matriciels devraient utiliser le choix d’options
passées par l’en-tête de la page matricielle, puisque
celles-ci renvoient les options utilisées sur une page donnée.
Les options passées sur la ligne de commande déterminent les
valeurs par défaut pour le travail en entier, et peuvent être
outrepassées en les définissant page par page.
Les messages envoyés à la sortie d'erreur sont
généralement enregistrés dans l'attribut
« printer-state-message » et dans le journal
ErrorLog actuel. Chaque ligne commence par un préfixe
standard :
-
ALERT: message
- Définir l'attribut
« printer-state-message » et ajouter le
message donné au journal ErrorLog actuel en utilisant le
niveau de journalisation « alert ».
-
ATTR: attribut=valeur [ ...
attribut=valeur]
- Définir la tâche nommée ou la(es)
propriété(s) de l'imprimante. La propriété de
travail suivante peut être paramétrée :
« job-media-progress ». Les
propriétés d'imprimante suivantes peuvent être
paramétrées :
« auth-info-required »,
« marker-colors »,
« marker-high-levels »,
« marker-levels »,
« marker-low-levels »,
« marker-message »,
« marker-names »,
« marker-types »,
« printer-alert » et
« printer-alert-description ».
-
CRIT: message
- Définir l'attribut
« printer-state-message » et ajouter le
message donné au journal ErrorLog actuel en utilisant le
niveau de journalisation « critical ».
-
DEBUG: message
- Ajouter le message indiqué au fichier actuel
ErrorLog en utilisant le niveau de journalisation
« debug ». Les messages DEBUG ne sont
jamais stockés dans l’attribut
« printer-state-message ».
-
DEBUG2: message
-
Ajouter le message indiqué au fichier actuel ErrorLog en
utilisant le niveau de journalisation
« debug2 ». Les messages DEBUG2 ne sont
jamais stockés dans l’attribut
« printer-state-message ».
-
EMERG: message
- Définir l'attribut
« printer-state-message » et ajouter le
message donné au journal ErrorLog actuel en utilisant le
niveau de journalisation « emergency ».
-
ERROR: message
- Définir l'attribut
« printer-state-message » et ajouter le
message donné au journal ErrorLog actuel en utilisant le
niveau de journalisation « error ».
-
INFO: message
- Définir l'attribut
« printer-state-message ». Si LogLevel
vaut « debug2 », le message est
également ajouté au journal actuel ErrorLog en
utilisant le niveau de journalisation
« info ».
-
NOTICE: message
- Définir l'attribut
« printer-state-message » et ajouter le
message donné au journal ErrorLog actuel en utilisant le
niveau de journalisation « notice ».
-
PAGE: numéro_page #-copies
-
PAGE: total #-pages
- Ajouter une entrée au fichier PageLog actuel.
La première forme ajoute le nombre de copies à l'attribut
« job-media-sheets-completed ». La seconde
forme définit l'attribut
« job-media-sheets-completed » au nombre de
pages.
-
PPD: Mot_clef=Valeur [ ...
Mot_clefN=Valeur ]
- Définir les mots-clefs dans le fichier PPD de
l'imprimante. Cela est généralement utilisé pour
mettre à jour les options de mots-clefs par défaut telles
que DefaultPageSize et les nombreuses options insérables
dans le fichier PPD.
-
STATE: raison-état-imprimante [ ...
raison-état-imprimante]
-
STATE: + raison-état-imprimante[
... raison-état-imprimante ]
-
STATE: - raison-état-imprimante[
...raison-état-imprimante]
- Définir, ajouter ou retirer des mots-clefs
« raison-état-imprimante » de la file
d'attente en cours. C'est utilisé généralement pour
indiquer l'état du média, de l'encre et de l'encre en poudre
(toner) d'une imprimante.
-
WARNING: message
- Définir l'attribut
« printer-state-message » et ajouter le
message donné au journal ErrorLog actuel en utilisant le
niveau de journalisation « warning ».
Les variables d'environnement suivantes sont définies par le serveur CUPS
pour l'exécution des filtres :
- CHARSET
- Définir le jeu de caractères par
défaut à utiliser pour les textes,
généralement « utf-8 ».
- CLASS
- Quand un travail est soumis à une classe
d'imprimantes, elle contient le nom de la classe d'imprimante
concernée. Sinon, cette variable d'environnement n'est pas
définie.
- CONTENT_TYPE
- Le type MIME de média associé au fichier de
travail soumis, par exemple
« application/postscript ».
- CUPS_CACHEDIR
- Le répertoire où peuvent se trouver et
être stockés les fichiers cache semi-persistants.
- CUPS_DATADIR
- Le répertoire où se trouvent les fichiers de
données.
- CUPS_FILETYPE
- Le type du fichier en cours d'impression :
« job-sheet » pour une page avec
bannière et « document » pour un
fichier d’impression normal.
- CUPS_MAX_MESSAGE
- La taille maximale d'un message envoyé à la
sortie d'erreur, incluant n'importe quel préfixe et le
caractère de nouvelle ligne.
- CUPS_SERVERROOT
- Le répertoire racine du serveur.
- FINAL_CONTENT_TYPE
- Le type MIME de média associé à la
sortie prévue pour l'imprimante, par exemple
« application/vnd.cups-postscript ».
- LANG
- La locale de langue par défaut
(généralement C ou en).
- PATH
- Le chemin d'exécution standard pour les programmes
externes qui peuvent être exécutés par le
filtre.
- PPD
- Le chemin complet du fichier PPD
(« PostScript Printer Description ») de cette
imprimante.
- PRINTER
- Le nom de l'imprimante.
- RIP_CACHE
- La quantité de mémoire recommandée
pour les RIP (« Raster Image
Processors »).
- SOFTWARE
- Le nom et le numéro de version du serveur (par
exemple CUPS/ majeur.mineur).
- TZ
- Le fuseau horaire du serveur
- USER
- L'utilisateur qui exécute le filtre,
généralement « lp » ou
« root » ; consultez le fichier
cups-files.conf pour le paramétrage actuel.
Alors que l’interface de filtre est compatible avec les scripts
d’interface de System V, CUPS lui-même ne les gère
pas.
Les pilotes et les programmes de transmission de CUPS sont devenus
obsolètes et ne seront plus entretenus dans une prochaine publication
de CUPS. Les imprimantes qui ne gèrent pas IPP peuvent être
gérées en utilisant des applications telles que
ippeveprinter(1).
Les filtres CUPS ne sont pas faits pour être lancés directement
par l'utilisateur. À côté des problèmes
liés à l'ancienne interface System V (
argv[0] est
le nom de l'imprimante), les filtres de CUPS attendent également des
variables d'environnement et descripteurs de fichiers spécifiques, et
sont généralement lancés dans une session utilisateur qui
(sous macOS) possèdent des restrictions supplémentaires qui
affectent la façon dont ils fonctionnent. À moins que vous ne
soyez un développeur ou que vous sachiez ce que vous faites, veuillez
ne pas lancer les filtres directement. À la place veuillez utiliser le
programme
cupsfilter(8) pour utiliser les filtres adéquats pour
effectuer la conversion dont vous avez besoin.
backend(7),
cups(1),
cups-files.conf(5),
cupsd(8),
cupsfilter(8),
Aide en ligne de CUPS : <URL:
http://localhost:631/help>
Copyright © 2021-2022 par OpenPrinting.