Sobre o projeto
## Visão Geral do Projeto
cups-web-print é um serviço de impressão web baseado em Python Flask e CUPS, fornecendo uma interface gráfica HTTP para servidores de impressão CUPS. Ele pode converter impressoras USB conectadas ao servidor em impressoras de rede, permitindo que dispositivos na rede local concluam a impressão através do navegador, sem necessidade de instalar drivers ou configurar filas de impressão em cada dispositivo.
## Principais Recursos
### Gerenciamento de Arquivos
- Suporta PDF, DOC, DOCX, PPT, PPTX, XLS, XLSX, TXT, RTF e formatos de imagem como JPG, JPEG, PNG, GIF, BMP, SVG
- Suporta upload por arrastar e soltar
- Pré-visualização online: pré-visualização de PDF no computador, pré-visualização de imagens no celular
- Visualização e exclusão de lista de arquivos
### Configurações de Impressão
- Tamanho do papel: A1-A4 para escritório, 5-10 polegadas para fotos, etc.
- Tipo de papel: papel comum, papel fotográfico brilhante, etc.
- Modo de cor: colorido / preto e branco
- Impressão frente e verso: frente única, frente e verso com encadernação na borda longa, frente e verso com encadernação na borda curta
- Orientação de impressão: retrato / paisagem
- Número de cópias: 1-99 cópias
- Intervalo de páginas: como 1-5 8 10-12
- Escala de impressão: automática / ajustar / preencher / sem escala
- Espelhamento de página: suporta inversão horizontal
### Gerenciamento de Tarefas
- Detecção de status online da impressora (limitado a impressoras IPP)
- Monitoramento de status de tarefas em tempo real: enviado / processando / concluído / falhou / cancelado
- Exibição de progresso da tarefa (estimado com base no tempo e na fila CUPS)
- Cancelamento de tarefas
- Visualização em tempo real da fila de impressão
- Informações da bandeja de papel, informações do cartucho de tinta, informações da impressora (tempo de operação, versão do firmware, alertas, etc.), todas obtidas via protocolo IPP
### Segurança
- Proteção contra ataques de travessia de caminho
- Verificação de lista de permissões de tipos de arquivo
- Limite de tamanho de arquivo de 100MB
- Rotação automática de logs
- Limpeza automática do cache de pré-visualização ao excluir arquivos
### Interface Bilíngue
- Interface em chinês: http://localhost:5000/zh
- Interface em inglês: http://localhost:5000/en
## Pilha Tecnológica
- Backend: Python 3.9+ e Flask 3.0+
- Frontend: HTML5 e Tailwind CSS (CDN)
- Serviço de impressão: CUPS 2.0+
- Conversão de documentos: LibreOffice 6.0+
- Processamento de PDF: poppler-utils (pdftoppm), pdftk
- Protocolo IPP: ipptool (cups-client)
## Nota de Compatibilidade
O projeto usa o protocolo padrão IPP e comandos padrão CUPS, teoricamente compatível com a maioria das impressoras que suportam o protocolo IPP. O README indica que foi testado na Canon G3881, outras impressoras precisam de verificação própria.
## Métodos de Implantação
### Instalação em Contêiner (Recomendado)
Executado via Docker, mapeando as portas 5000 (interface web) e 631 (CUPS), e montando a configuração CUPS, filas, logs, e diretórios de upload e pré-visualização. Impressoras USB requerem modo privilegiado e montagem de dispositivo USB; ao usar apenas impressoras de rede, esses dois itens podem ser removidos.
Exemplo de adição de impressora (com impressora de rede como exemplo):
```
docker exec cups-web-print lpadmin -p Canon_G3881 -v ipp://192.168.1.16:631/ipp/print -m everywhere -E
```
### Instalação Local
Requer instalação de cups, cups-client, componentes LibreOffice, poppler-utils, pdftk e dependências Python, iniciar o serviço CUPS, adicionar a impressora com lpadmin e depois executar app.py. O README também fornece uma opção de inicialização automática via crontab.
## Estrutura de Diretórios
- app.py: arquivo principal da aplicação Flask
- ipp_client.py: obtém informações de status como bandeja de papel e cartucho de tinta via IPP
- printer_checker.py: confirma o status online da impressora via protocolos IPP, BJNP, etc.
- templates/: index.html (página principal em chinês) e index_en.html (página principal em inglês)
- uploads/, previews/: diretórios de arquivos enviados e arquivos de pré-visualização
## Solução de Problemas
O README fornece uma lista de verificação relativamente completa, cobrindo: falha ao adicionar impressora com lpadmin (incluindo diferenças de endereço IPP por marca, modo driver less, cupsenable/cupsaccept), porta 5000 sem resposta (processo, escuta de porta, firewall, endereço de vinculação do Flask), nenhuma impressora disponível na página, falha na conversão de documentos, falha na geração de pré-visualização de PDF, falha na extração de intervalo de páginas, incapacidade de obter informações de cartucho/bandeja, e o caso de "sucesso indicado mas sem saída" (requer confirmação do parâmetro -m everywhere, driver CUPS e arquivo PPD, status de ociosidade da impressora e logs CUPS).
## Licença
GPLv3. O README declara que o software é fornecido "como está", e o autor não se responsabiliza pelas consequências do uso.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.