filter - CUPS-Datei-Umwandlungsfilter-Schnittstelle
filter Auftrag Benutzer Titel Anz-Kopien
Optionen [
Dateiname ]
#include <cups/cups.h>
ssize_t cupsBackChannelRead(char *buffer, size_t bytes,
double timeout);
cups_sc_status_t cupsSideChannelDoRequest(cups_sc_command_t command,
char *data, int *datalen,
double timeout);
#include <cups/ppd.h>
const char *cupsGetOption(const char *name, int num_options,
cups_option_t *options);
int cupsMarkOptions(ppd_file_t *ppd, int num_options,
cups_option_t *options);
int cupsParseOptions(const char *arg, int num_options,
cups_option_t **options);
ppd_choice_t *ppdFindMarkedChoice(ppd_file_t *ppd, const char *keyword);
void ppdMarkDefaults(ppd_file_t *ppd);
ppd_file_t *ppdOpenFile(const char *filename);
Die CUPS-Filterschnittstelle stellt eine Standardmethode zum Hinzufügen
von Unterstützungen für neue Dokumententypen oder Drucker zu
CUPS bereit. Jeder Filter ist in der Lage, von einem oder mehreren
Eingabeformaten in andere Ausgabeformate zu konvertieren, die entweder direkt
gedruckt oder an einen weiteren Filter weitergeleitet werden können,
der es dann in ein druckbares Format wandelt.
Filter
MÜSSEN in der Lage sein, aus einem Dateinamen auf der
Befehlszeile oder der Standardeingabe zu lesen und in letzterem Fall die
Standardeingabe in eine temporäre Datei zu kopieren, wie dies vom
Dateiformat benötigt wird. Die gesamte Ausgabe
MUSS an die
Standardausgabe gesandt werden. Filter
DÜRFEN NICHT versuchen,
direkt mit dem Drucker, anderen Prozessen oder Diensten zu kommunizieren.
Der Befehlsname (
argv[0]) wird auf den Namen des Zieldruckers gesetzt.
Er ist aber auch über die
Umgebungsvariable PRINTER
verfügbar.
Optionen werden in
argv[5] übergeben und aus den bei der
Einreichung des Auftrags entsprechenden IPP-Attributen kodiert. Verwenden Sie
die Funktion
cupsParseOptions(), um die Optionen in ein Feld
cups_option_t zu laden und die Funktion
cupsGetOption(), um den
Wert eines bestimmten Attributes zu ermitteln. Seien Sie vorsichtig, nach
häufigen Alias von IPP-Attributen, wie »landscape«
für das IPP-Attribut »orientation-requested«, Ausblick zu
halten.
Auf der Befehlszeile übergebene Optionen enthalten typischerweise nicht
die Standardauswahl aus der PPD-Datei des Druckers. Verwenden Sie die
Funktionen
ppdMarkDefaults() und
cupsMarkOptions() in der
CUPS-Bibliothek, um die Optionen auf die PPD-Vorgaben anzuwenden und alle
IPP-Attribute auf die entsprechenden Optionen abzubilden. Verwenden Sie
ppdFindMarkedChoice(), um die vom Benutzer getroffene Auswahl
für eine PPD-Option zu ermitteln. Ein Filter kann beispielsweise den
folgenden Code verwenden, um den aktuellen Wert der PPD-Option
Duplex
zu ermitteln:
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");
Rasterfilter sollten ausgewählte Optionen benutzen, die durch die
Rasterseitenkopfzeilen gesetzt wurden, da jene die tatsächlichen
Optionen für eine angegebene Seite wiedergeben. Auf der Befehlszeile
angegebene Optionen legen die Vorgabewerte für den ganzen Druckauftrag,
die auf seitenweiser Basis überschrieben werden können, fest.
Nachrichten, die an die Standard-Fehlerausgabe gesandt werden, werden im
Allgemeinen im Attribut »printer-state-message« des Druckers und
der aktuellen
ErrorLog-Datei gespeichert. Jede Zeile beginnt mit einem
Standard-Präfix:
-
ALERT: Nachricht
- Setzt das Attribut »printer-state-message«
und fügt die angegebene Nachricht zum aktuellen ErrorLog
unter Verwendung der Protokollstufe »alert« hinzu.
-
ATTR: Attribut=Wert [ …
Attribut=Wert]
- Setzt das/die benannte(n) Auftrags- oder
Drucker-Attribut(e). Die folgenden Auftragsattribute können gesetzt
werden: »job-media-progress«. Die folgenden Druckerattribute
können gesetzt werden: »auth-info-required«,
»marker-colors«, »marker-high-levels«,
»marker-levels«, »marker-low-levels«,
»marker-message«, »marker-names«,
»marker-types«, »printer-alert« und
»printer-alert-description«.
-
CRIT: Nachricht
- Setzt das Attribut »printer-state-message«
und fügt die angegebene Nachricht zum aktuellen ErrorLog
unter Verwendung der Protokollstufe »critical« hinzu.
-
DEBUG: Nachricht
- Fügt die angegebene Nachricht zu dem aktuellen
ErrorLog mit der Protokollstufe »debug« hinzu.
DEBUG-Nachrichten werden nie im Attribut
»printer-state-message« gespeichert.
-
DEBUG2: Nachricht
-
Fügt die angegebene Nachricht zu dem aktuellen ErrorLog mit
der Protokollstufe »debug2« hinzu. DEBUG2-Nachrichten
werden nie im Attribut »printer-state-message«
gespeichert.
-
EMERG: Nachricht
- Setzt das Attribut »printer-state-message«
und fügt die angegebene Nachricht zum aktuellen ErrorLog
unter Verwendung der Protokollstufe »emergency« hinzu.
-
ERROR: Nachricht
- Setzt das Attribut »printer-state-message«
und fügt die angegebene Nachricht zum aktuellen ErrorLog
unter Verwendung der Protokollstufe »error« hinzu.
-
INFO: Nachricht
- Setzt das Attribut »printer-state-message«.
Wenn der aktuelle LogLevel auf »debug2« gesetzt ist,
wird die angegebene Nachricht außerdem dem aktuellen
ErrorLog unter Benutzung der »info«-Protokollstufe
hinzugefügt.
-
NOTICE: Nachricht
- Setzt das Attribut »printer-state-message«
und fügt die angegebene Nachricht zum aktuellen ErrorLog
unter Verwendung der Protokollstufe »notice« hinzu.
-
PAGE: Seitenzahl #-Kopien
-
PAGE: Gesamt #-Seiten
- Fügt einen Eintrag zum aktuellen PageLog
hinzu. Die erste Form fügt #-Kopien zum Attribut
»job-media-sheets-completed« hinzu. Die zweite Form setzt
das Attribut »job-media-sheets-completed« auf
#-Seiten.
-
PPD: Schlüsselwort=Wert [ …
SchlüsselwortN=Wert ]
- Setzt die genannten Schlüsselworte in die PPD-Datei
des Druckers. Dies wird normalerweise benutzt, um
Standardschlüsselwortoptionen, wie DefaultPageSize und
verschiedene installierbare Optionen in der PPD-Datei, zu
aktualisieren.
-
STATE: Drucker-Zustand-Grund [ …
Drucker-Zustand-Grund ]
-
STATE: + Drucker-Zustand-Grund [ …
Drucker-Zustand-Grund ]
-
STATE: - Drucker-Zustand-Grund [ …
Drucker-Zustand-Grund ]
- Setzt, entfernt oder fügt
»printer-state-reason«-Schlüsselwörter
für die aktuelle Druckwarteschlange hinzu. Typischerweise wird dies
benutzt, um Medien-, Tinten- und Toner-Bedingungen auf einem Drucker
anzuzeigen.
-
WARNING: Nachricht
- Setzt das Attribut »printer-state-message«
und fügt die angegebene Nachricht zum aktuellen ErrorLog
unter Verwendung der Protokollstufe »warning« hinzu.
Die folgenden Umgebungsvariablen sind vom CUPS-Server beim Ausführen von
Filtern gesetzt:
- CHARSET
- Der Standard-Textzeichensatz, typischerweise
»utf-8«.
- CLASS
- Wenn ein Druckauftrag an eine Druckerklasse gesandt wird,
enthält er den Namen der Bestimmungsdruckerklasse. Ansonsten wird
diese Umgebungsvariable nicht gesetzt.
- CONTENT_TYPE
- Der MIME-Typ, der der eingereichten Druckdatei zugeordnet
ist (z.B. »application/postscript«).
- CUPS_CACHEDIR
- Das Verzeichnis, in dem halb-beständige
Zwischenspeicherdateien gefunden und gespeichert werden.
- CUPS_DATADIR
- Das Verzeichnis, in dem Datendateien gefunden werden
können.
- CUPS_FILETYPE
- Der Typ der Datei, die gedruckt wird:
»job-sheet« für ein Deckblatt und
»document« für eine reguläre Druckdatei.
- CUPS_MAX_MESSAGE
- Die maximale Größe einer nach stderr
gesandten Nachricht. Enthält alle Präfixe und den
abschließenden Zeilenumbruch.
- CUPS_SERVERROOT
- Das Wurzelverzeichnis des Servers.
- FINAL_CONTENT_TYPE
- Der MIME-Medientyp, der der dem Drucker bestimmten Ausgabe
zugeordnet ist (z.B. application/vnd.cups-postscript).
- LANG
- Die Standardsprach-Standorteinstellung (normalerweise C
oder en).
- PATH
- Der Standard-Ausführungspfad für externe
Programme, die vom Filter ausgeführt werden dürfen.
- PPD
- Der komplette Pfadname zu der
PostScript-Printer-Description-(PPD)-Datei für diesen Drucker.
- PRINTER
- Der Name des Druckers.
- RIP_CACHE
- Die empfohlene Speichermenge zum Einsatz für Raster
Image Processors (RIPs).
- SOFTWARE
- Der Name und die Versionsnummer des Servers (typischerweise
CUPS/ Haupt.Neben).
- TZ
- Die Zeitzone des Servers.
- USER
- Der Benutzer, der den Filter ausführt,
typischerweise »lp« oder »root«; schauen Sie
in die Datei cups-files.conf für die aktuellen
Einstellungen.
Während die Filterschnittstelle mit den Schnittstellenskripten von System
V kompatibel ist, unterstützt CUPS nicht die
System-V-Schnittstellenskripte.
CUPS-Druckertreiber und -Backends sind veraltet und werden in einer
zukünftigen Funktionsveröffentlichung von CUPS nicht mehr
unterstützt. Drucker, die IPP nicht unterstützen, können
mittels Anwendungen wie
ippeveprinter(1) unterstützt werden.
CUPS-Filter sind nicht für die direkte Ausführung durch Benutzer
gedacht. Abgesehen von Problemen der veralteten System-V-Schnittstelle (
argv[0] ist der Druckername) erwarten CUPS-Filter auch bestimmte
Umgebungsvariablen und Dateideskriptoren und laufen typischerweise auch in
einer Benutzersitzung, die (unter macOS) zusätzlichen
Beschränkungen unterliegt, die die Ausführung betreffen. Sofern
Sie kein Entwickler sind und nicht wissen, was Sie tun, führen Sie
keine Filter direkt aus. Verwenden Sie stattdessen das Programm
cupsfilter(8), um die angemessenen Filter für die von Ihnen
benötigten Umwandlungen auszuführen.
backend(7),
cups(1),
cups-files.conf(5),
cupsd(8),
cupsfilter(8),
CUPS-Online-Hilfe (http://localhost:631/help)
Copyright © 2021-2022 by OpenPrinting.