Caso você trabalhe em um escritório ou possua uma impressora e esteja usando Linux ou Mac OS, provavelmente você deve ter ouvido falar o termo “CUPS”. Ele é um sistema de impressão que possui código aberto que é desenvolvido por ninguém mais do que a Apple Inc.
O nome CUPS, é um acrônimo para “Common Unix Printing System”, criado por Michael Sweet, até então proprietário de uma empresa chamada “Easy Softwares Products”.
Embora a aplicação tenha sido desenvolvida inicialmente utilizando o protocolo LPD (Line Printer Daemon protocol), passou a utilizar o IPP (Internet Printing Protocol) após perceber alguns problemas tanto em limitações quanto em questões comerciais com o LPD.
Uma breve história do CUPS
Como dito acima, o CUPS é um projeto de código aberto de propriedade da Apple Inc. desde o ano de 2007, embora ele exista bem antes disso.Ele teve seu desenvolvimento iniciado no ano de 1997, porém, seus primeiros betas foram liberados apenas em 1999.
Com um nome bem sugestivo, CUPS se trata de um sistema de impressão para sistemas baseados em Unix. Em março de 2002, ele foi adotado como sistema de impressão padrão do Mac OS X, que estava em sua versão 10.2 (apelidado de “Jaguar”).
Em fevereiro de 2007, a Apple Inc. comprou o código fonte do projeto e contratou Michael Sweet como desenvolvedor chefe. Ele saiu da empresa no final de 2019.
O código fonte do CUPS está disponível no GitHub da Apple.
O que é o CUPS?
O CUPS é um servidor de impressão, e como todo servidor, ele serve a um cliente que pode ser o computador do usuário, ou uma série de computadores que precisam realizar uma impressão mas não possuem uma impressora física conectada a ele.
Ele também pode trabalhar como um cliente, conectando-se ao computador “servidor” e enviando o pedido de impressão, mesmo que não possua os drivers da impressora que será utilizada, basta saber o “endereço” da impressora no servidor.
Ele atua apenas como servidor?
Embora o CUPS seja um servidor de impressão, ele é mais utilizado de forma local, com uma impressora conectada diretamente através do cabo USB ou via rede wifi ou cabeada .
Ele possui compatibilidade com uma gama interessante de dispositivos de impressão, funcionando de forma “plug-and-play” tanto no Linux, MacOS e até mesmo BSD, salvo alguns casos específicos como impressoras que necessitam de um driver específico para que possam ser utilizadas.
De forma geral ele funciona muito bem em ambos os sistemas e caso você procure “cups” em seu monitor de sistema, é bem capaz que encontre um processo rodando nesse exato momento.
Esse processo consome menos que 10 MB (dez megabytes) de memória RAM, e fica sempre ativo para o caso de reconhecer uma impressora e configurá-la a partir do momento em que seja conectada.
As interfaces do CUPS
O CUPS é apenas um servidor, seja ele local ou remoto. Para gerenciar a fila de impressão, acessar as configurações da impressora e desempenhar outras funções, ele conta com várias interfaces, uma vez que cada distribuição possui uma aplicação para manusear o CUPS.
Uma característica interessante desta ferramenta, se deve ao fato dela possuir uma interface web para gerenciar as tarefas da impressora. Caso queira utilizá-la em sua máquina pessoal, basta acessar o seguinte endereço em seu navegador de internet favorito:
localhost:631
Localhost indica que ele está rodando localmente em sua máquina e 631 é a porta que o CUPS utiliza por padrão.
Como o CUPS funciona?
Embora essa ferramenta esteja bastante atualizada, o CUPS não mudou muito sua forma de operar. Entenda como funciona o sistema de impressão:
Envio do trabalho
A primeira parte do processo se dá ao usuário que envia um processo de impressão para o servidor. Os dados serão enviados para o scheduler (agendador em português), ele irá adicioná-lo em uma fila de impressão (caso haja uma).
Filtragem de dados
Após passar pelo agendador, os dados para impressão passam por um processo de filtragem, onde serão convertidos para a linguagem utilizada pela impressora. Além dos dados, esse processo filtra configurações básicas do documento como as opções de impressão e o número de cópias que serão impressas.
Backends da impressora
Eles são as maneiras utilizadas pelo CUPS para enviar os dados convertidos pelo processo de filtragem para a impressora. Entre os backends mais comuns temos rede (wifi ou cabeada), porta USB, porta Serial, e porta paralela.
E esse tal de HPLip?
O HPLip (HP Linux Imaging Printing) é um utilitário de impressão para os dispositivos de impressão da marca HP. A idéia desta ferramenta é ser um complemento ao CUPS que podem oferecer recursos extras para algumas impressoras.
Diferente do CUPS, o HPLip possui uma interface própria para gerenciar suas impressoras escrita em Qt.
Assim como o HPLip, existem vários drivers de impressoras disponíveis para Linux que podem estender as funções do CUPS.
Considerações finais
O CUPS é uma ferramenta muito comum no dia a dia de vários usuários, mesmo que eles não se dêem conta de que o estão utilizando. E é no mínimo interessante ver que a Apple utiliza uma ferramenta de código aberto em uma parte importante de seu sistema.
Caso você goste de ver vídeos, temos um vídeo no canal falando sobre esse assunto:
Você possui uma impressora? Já utilizou o CUPS? Deixe pra gente nos comentários e até o próximo artigo, dica ou tutorial!