filter(7) | Apple Inc. | filter(7) |
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 :
Les variables d'environnement suivantes sont définies par le serveur CUPS pour l'exécution des filtres :
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.
CUPS printer drivers and backends are deprecated and will no longer be supported in a future feature release of CUPS. Printers that do not support IPP can be supported using applications such as 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 2007-2019 par Apple Inc.
CUPS | 26 avril 2019 |