NOME
filter - interface de filtros de conversão de ficheiros do cups
RESUMO
filter job user title num-copies options [ filename ]
#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);
DESCRIÇÃO
A interface de filtros do CUPS fornece um método standard para adicionar suporte para novos tipos de documentos ou impressoras ao CUPS. Cada filtro é capaz de converter de um ou mais formatos de entrada para outro formato que pode ser ou imprimido diretamente ou canalizado para outro filtro para o tornar num formato imprimível.
Filtros DEVEM ser capazes de ler a partir de um nome de ficheiro na linha de comandos ou a partir da entrada standard, copiando a entrada standard para um ficheiro temporário como requerido pelo formato do ficheiro. Todas as saídas DEVEM ser enviadas para a saída standard. Filters NÃO DEVEM tentar comunicar diretamente com a impressora, outros processos, ou outros serviços.
O nome de comando (argv[0]) é definido para o nome da impressora de destino mas está também disponível na variável de ambiente PRINTER.
OPÇÕES
As opções são passadas em argv[5] e são codificadas a partir dos atributos IPP correspondentes usados quando o trabalho foi submetido. Use a função cupsParseOptions() para carregar as opções numa matriz cups_option_t e a função cupsGetOption() para obter o valor de um atributo específico. Tenha atenção aos nomes alternativos comuns de atributos IPP tais como "landscape" para o atributo IPP "orientation-requested".
As opções passadas na linha de comandos tipicamente não incluem as escolhas predefinidas do ficheiro PPD da impressora. Use as funções ppdMarkDefaults() e cupsMarkOptions() da biblioteca do CUPS para aplicar as opções às predefinições do PPD e mapear quaisquer atributos IPP às opções PPD correspondentes. Use ppdFindMarkedChoice() para obter a escolha de selecção-de-utilizador para uma opção PPD. Por exemplo, um filtro pode usar o seguinte código para determinar o valor actual da opção 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");
Os filtros raster devem usar um conjunto de escolhas de opção através do cabeçalho de página raster, pois esses refletem as opções em efeito para uma determinada página. As opções especificadas na linha de comandos determinam os valores predefinidos para o trabalho inteiro, as quais podem ser sobrepostas numa base de por-cada-página.
MENSAGENS DE RELATÓRIO
As mensagens
enviadas para o erro standard são geralmente
armazenadas no atributo "printer-state-message" da
impressora e no ficheiro ErrorLog actual. Cada linha
começa com, um prefixo standard:
ALERT: message
Define o atributo "printer-state-message" e adiciona a mensagem especificada ao ErrorLog actual usando o nível de log "alert".
ATTR: attribute=value [ ... attribute=value]
Define o atributo(s) de trabalho ou impressora nomeada. Os seguintes atributos de trabalho podem ser definidos: "job-media-progress". Os seguintes atributos de impressora podem ser definidos: "auth-info-required", "marker-colors", "marker-high-levels", "marker-levels", "marker-low-levels", "marker-message", "marker-names", "marker-types", "printer-alert", e "printer-alert-description".
CRIT: message
Define o atributo "printer-state-message" e adiciona a mensagem especificada ao ErrorLog actual usando o nível de log "critical".
DEBUG: message
Adiciona a mensagem especificada ao ErrorLog actual usando o nível de log "debug". As mensagens DEBUG nunca são armazenadas no atributo "printer-state-message".
DEBUG2: message
Adiciona a mensagem especificada ao ErrorLog actual usando o nível de log "debug2". As mensagens DEBUG2 nunca são armazenadas no atributo "printer-state-message".
EMERG: message
Define o atributo "printer-state-message" e adiciona a mensagem especificada ao ErrorLog actual usando o nível de log "emergency".
ERROR: message
Define o atributo "printer-state-message" e adiciona a mensagem especificada ao ErrorLog actual usando o nível de log "error".
INFO: message
Define o atributo "printer-state-message". Se o LogLevel actual estiver definido para "debug2", também adiciona a mensagem especificada ao ErrorLog usando o nível de log "info".
NOTICE: message
Define o atributo "printer-state-message" e adiciona a mensagem especificada ao ErrorLog actual usando o nível de log "notice".
PAGE: page-number
#-copies
PAGE: total #-pages
Adiciona a entrada ao PageLog actual. A primeira forma adiciona #-copies ao atributo "job-media-sheets-completed". A segunda forma define o atributo "job-media-sheets-completed" para #-pages.
PPD: Keyword=Value [ ... KeywordN=Value ]
Define a palavra chave nomeada no ficheiro PPD da impressora. Isto é usado tipicamente pare atualizar palavras chave de opção predefinida como a DefaultPageSize e as várias opções instaláveis no ficheiro PPD.
STATE:
printer-state-reason [ ...
printer-state-reason ]
STATE: + printer-state-reason [ ...
printer-state-reason ]
STATE: - printer-state-reason [ ...
printer-state-reason ]
Define, adiciona, ou remove palavras chave "printer-state-reason" para a fila actual. Tipicamente isto é usado para indicar condições de média, tinta e toner numa impressora.
WARNING: message
Define o atributo "printer-state-message" e adiciona a mensagem especificada ao ErrorLog actual usando o nível de log "warning".
VARIÁVEIS DE AMBIENTE
As seguintes
variáveis de ambiente são definidas pelo
servidor CUPS quando se executa o filtro:
CHARSET
O conjunto de caracteres de texto predefinido, tipicamente "utf-8".
CLASS
Quando um trabalho é submetido para uma classe de impressora, contém o nome da classe de impressora de destino. Caso contrário esta variável de ambiente não será definida.
CONTENT_TYPE
O tipo de média MIME associado com o ficheiro de trabalho submetido, por exemplo "application/postscript".
CUPS_CACHEDIR
O directório onde ficheiros de cache semi-persistentes podem ser encontrados e armazenados.
CUPS_DATADIR
O directório onde podem ser encontrados ficheiros de dados.
CUPS_FILETYPE
O tipo de ficheiro a ser imprimido: "job-sheet" para uma página banner e "document" para um ficheiro de impressão regular.
CUPS_MAX_MESSAGE
O tamanho máximo de uma mensagem enviada para stderr, incluindo qualquer prefixo inicial e o indício de nova linha final.
CUPS_SERVERROOT
O directório raiz do servidor.
FINAL_CONTENT_TYPE
O tipo de média MIME associado com a saída destinada à impressora, por exemplo "application/vnd.cups-postscript".
LANG |
O locale de idioma predefinido (tipicamente C ou en). | ||
PATH |
O caminho de execução standard para programas externos que podem ser corridos pelo filtro. | ||
PPD |
O nome de caminho completo do ficheiro PostScript Printer Description (PPD) para esta impressora. |
PRINTER
O nome da impressora.
RIP_CACHE
A quantidade de memória recomendada a usar para Raster Image Processors (RIPs).
SOFTWARE
O nome e número de versão do servidor (tipicamente CUPS/maior.menor).
TZ |
A zona horária do servidor. | ||
USER |
O utilizador que executa o filtro, tipicamente "lp" ou "root"; consulte o ficheiro cups-files.conf para a definição actual. |
DE ACORDO COM
Apesar da interface do filtro ser compatível com scripts de interface do System V, o CUPS não suporta scripts de interface System V.
NOTAS
Drivers de impressoras e backends do CUPS estão descontinuados e não irão ser mais suportados num futuro lançamento do CUPS. Impressoras que não suportem IPP podem ser suportadas usando aplicações como a ippeveprinter(1).
Os filtros do CUPS não se destinam a ser corridos diretamente pelo utilizador. Além dos problemas com a interface antiga do System V (argv[0] é o nome da impressora), os filtros do CUPS também esperam variáveis de ambiente específicas e descritores de ficheiro, e tipicamente correm numa sessão de utilizador que (no macOS) tem restrições adicionais que afectam como eles correm. A menos que você seja um desenvolvedor e saiba o que está a fazer, por favor não corra os filtros diretamente. Em vez disso, use o programa cupsfilter(8) para usar os filtros apropriados para as conversões que você precisa.
VEJA TAMBÉM
backend(7),
cups(1), cups-files.conf(5), cupsd(8),
cupsfilter(8),
Ajuda Online do CUPS (http://localhost:631/help)
COPYRIGHT
Copyright © 2020-2024 by OpenPrinting.