CUPS fornece um mecanismo que permite que os trabalhos de impressão sejam enviados para impressoras de forma padrão. Os dados de impressão vão para um agendador que envia os trabalhos para um sistema de filtragem que converte o trabalho de impressão num formato que a impressora vai entender. O sistema de filtro então passa os dados para um backend-um filtro especial que envia os dados de impressão para um dispositivo ou conexão de rede. O sistema faz uso extensivo de PostScript e rasterização de dados para converter os dados em um formato adequado para a impressora de destino.

CUPS oferece um sistema de impressão padrão e modularizado que pode processar vários formatos de dados no servidor de impressão. Antes do CUPS, era difícil encontrar um sistema de gestão de impressoras padrão que acomodasse a grande variedade de impressoras no mercado utilizando as suas próprias linguagens e formatos de impressão. Por exemplo, o Sistema V e os sistemas de impressão Berkeley eram largamente incompatíveis entre si e exigiam scripts e soluções complicadas para converter o formato de dados do programa para um formato imprimível. Muitas vezes eles não conseguiam detectar o formato do arquivo que estava sendo enviado para a impressora e, portanto, não conseguiam converter automática e corretamente o fluxo de dados. Além disso, a conversão de dados era realizada em estações de trabalho individuais em vez de um servidor central.

CUPS permite aos fabricantes de impressoras e desenvolvedores de impressoras-controladoras criar mais facilmente drivers que funcionam nativamente no servidor de impressão. O processamento ocorre no servidor, permitindo uma impressão mais fácil baseada na rede do que com outros sistemas de impressão Unix. Com Samba instalado, os usuários podem endereçar impressoras em computadores Windows remotos, e drivers PostScript genéricos podem ser usados para impressão através da rede.

SchedulerEdit

O agendador CUPS implementa o Internet Printing Protocol (IPP) sobre HTTP/1.1. Uma aplicação helper (cups-lpd) converte pedidos do protocolo Line Printer Daemon (LPD) para IPP. O agendador também fornece uma interface baseada na web para gerenciar trabalhos de impressão, a configuração do servidor, e para documentação sobre o próprio CUPS.

Um módulo de autorização controla quais mensagens IPP e HTTP podem passar através do sistema. Uma vez que os pacotes IPP/HTTP são autorizados, eles são enviados para o módulo cliente, que escuta e processa as conexões de entrada. O módulo cliente também é responsável por executar programas CGI externos conforme necessário para suportar impressoras baseadas na web, classes e monitorização e administração do estado do trabalho. Uma vez que este módulo tenha processado suas solicitações, ele as envia para o módulo IPP, que realiza a validação do Identificador Uniforme de Recursos (URI) para evitar que um cliente desvie de qualquer controle de acesso ou autenticação no servidor HTTP. O URI é uma string de texto que indica um nome ou endereço que pode ser usado para se referir a um recurso abstrato ou físico em uma rede.

O agendador permite classes de impressoras. As aplicações podem enviar pedidos para grupos de impressoras em uma classe, permitindo que o agendador direcione o trabalho para a primeira impressora disponível naquela classe. Um módulo de trabalhos gerencia os trabalhos de impressão, enviando-os para o filtro e processos backend para conversão e impressão final, e monitorando as mensagens de status desses processos.

O agendador CUPS utiliza um módulo de configuração, que analisa os arquivos de configuração, inicializa as estruturas de dados do CUPS, e inicia e pára o programa CUPS. O módulo de configuração irá parar os serviços CUPS durante o processamento do arquivo de configuração e então reiniciar o serviço quando o processamento estiver completo.

Um módulo de registro lida com o registro dos eventos do agendador para acesso, erro, e arquivos de registro de página. O módulo principal lida com timeouts e despacho de pedidos de E/S para conexões de clientes, observando sinais, lidando com erros de processo e saídas de crianças, e recarregando os arquivos de configuração do servidor conforme necessário.

Outros módulos usados pelo scheduler incluem:

  • o módulo MIME, que lida com uma base de dados Multipurpose Internet Mail Extensions (MIME) e de conversão usada no processo de filtragem que converte dados de impressão para um formato adequado para um dispositivo de impressão;
  • um módulo PPD que lida com uma lista de arquivos Postscript Printer Description (PPD);
  • um módulo de dispositivos que gerencia uma lista de dispositivos que estão disponíveis no sistema;
  • um módulo de impressoras que lida com impressoras e PPDs dentro do CUPS.

Filter systemEdit

CUPS permite aos utilizadores enviar dados diferentes para o servidor CUPS e ter esses dados convertidos para um formato que a impressora compreenderá e poderá imprimir

CUPS pode processar uma variedade de formatos de dados no servidor de impressão. Ele converte os dados do trabalho de impressão para a linguagem/formato final da impressora através de uma série de filtros. Ele usa tipos MIME para identificar formatos de arquivos.

MIME databasesEdit

Após o sistema CUPS ter atribuído o trabalho de impressão ao agendador, ele é passado para o sistema de filtros CUPS. Isto converte os dados para um formato adequado para a impressora. Durante a inicialização, o daemon CUPS carrega duas bases de dados MIME: mime.types que define os tipos de arquivo conhecidos para os quais o CUPS pode aceitar dados, e mime.convs que define os programas que processam cada tipo particular de MIME.

O arquivo mime.types tem a sintaxe:

mimetype { | }

Por exemplo, para detectar um arquivo HTML, a seguinte entrada seria aplicável:

text/html html htm \

printable(0,1024) + (string(0,"<HTML>") string(0,"<!DOCTYPE"))

A segunda linha combina o conteúdo do arquivo com o tipo MIME especificado, determinando que o primeiro kilobyte de texto no arquivo contém caracteres imprimíveis e que esses caracteres incluem a marcação HTML. Se o padrão acima corresponder, então o sistema de filtro marcaria o arquivo como o tipo MIME text/html.

O arquivo mime.convs tem a sintaxe:

source destination cost program

O campo de origem designa o tipo MIME que é determinado pela pesquisa do arquivo mime.types, enquanto o campo de destino lista o tipo de saída solicitada e determina qual programa deve ser usado. Isto também é recuperado a partir de mime.types. O campo de custo ajuda na seleção de conjuntos de filtros quando se converte um arquivo. O último campo, programa, determina qual programa de filtro deve ser usado para realizar a conversão de dados.

Alguns exemplos:

text/plain application/postscript 50 texttopsapplication/vnd.cups-postscript application/vnd.cups-raster 50 pstorasterimage/* application/vnd.cups-postscript 50 imagetopsimage/* application/vnd.cups-raster 50 imagetoraster

Processo de filtragemEditar

O processo de filtragem funciona tomando dados de entrada pré-formatados com seis argumentos:

  1. o ID do trabalho de impressão
  2. o nome do utilizador
  3. o nome do trabalho
  4. o número de cópias a imprimir
  5. quaisquer opções de impressão
  6. o nome do ficheiro (embora isto seja desnecessário se tiver sido redireccionado a partir do input padrão).
  7. >

Determina então o tipo de dados que estão sendo inseridos e o filtro a ser usado através do uso dos bancos de dados MIME; por exemplo, dados de imagem serão detectados e processados através de um determinado filtro, e dados HTML detectados e processados através de outro filtro.

CUPS pode converter dados fornecidos em dados PostScript ou diretamente em dados raster. Se for convertido em dados PostScript é aplicado um filtro adicional chamado pré-filtro, que executa os dados PostScript através de outro conversor PostScript para que ele possa adicionar opções específicas da impressora, como selecionar intervalos de páginas a imprimir, definir o modo n-up e outras coisas específicas do dispositivo. Após a pré-filtragem ser feita, os dados podem ser enviados diretamente para um backend CUPS se estiver usando uma impressora PostScript, ou podem ser passados para outro filtro como o Foomatic pelo linuxprinting.org. Alternativamente, ele pode ser passado para Ghostscript, que converte o PostScript em um formato CUPS-raster intermediário. O formato raster intermediário é então passado para um filtro final, que converte os dados raster para um formato específico da impressora. Os filtros padrão incluídos no CUPS incluem:

  • raster para PCL
  • raster para ESC/P ou ESC/P2 (uma linguagem de impressora Epson, agora amplamente substituída pelo seu novo formato ESC/P-Raster)
  • raster para Dymo (outra empresa de impressoras).
  • raster para Zebra Programming Language ou ZPL (uma linguagem de impressora Zebra Technologies)

As de 2009 outras linguagens proprietárias como GDI ou SPL (Samsung Printer Language) são suportadas pelo Splix, um tradutor raster para SPL.

No entanto, várias outras alternativas podem ser integradas com o CUPS. HPLIP (anteriormente conhecido como HP-IJS) fornece drivers Linux+CUPS para impressoras HP, Gutenprint (anteriormente conhecido como Gimp-Print) é uma gama de drivers de alta qualidade para (principalmente) impressoras inkjet, e TurboPrint para Linux tem outra gama de drivers de qualidade para uma vasta gama de impressoras.

BackendsEdit

Os backends são as formas pelas quais o CUPS envia os dados para as impressoras. Existem vários backends disponíveis para o CUPS: portas paralelas, seriais e USB, cups-pdf PDF Virtual Printing, bem como backends de rede que operam através do IPP, JetDirect (AppSocket), Line Printer Daemon (“LPD”), e protocolos SMB.

Um novo backend mdns no CUPS 1.4 fornece descoberta de impressora baseada em Bonjour (DNS-SD). No CUPS 1.6, a descoberta e compartilhamento de impressoras Bonjour usando Avahi também é suportada.

Deixe uma resposta

O seu endereço de email não será publicado.