filter(7) | OpenPrinting | filter(7) |
filter - interface de filtros de conversão de ficheiros do cups
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);
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.
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.
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:
As seguintes variáveis de ambiente são definidas pelo servidor CUPS quando se executa o filtro:
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.
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.
backend(7), cups(1), cups-files.conf(5),
cupsd(8), cupsfilter(8),
Ajuda Online do CUPS (http://localhost:631/help)
Copyright © 2021-2023 by OpenPrinting.
CUPS | 2021-02-28 |