Un servidor HTTP simple que te permite imprimir PDFs directamente desde URLs y gestionar tus impresoras. Compatible con Windows y Linux.
- Muestra todas tus impresoras conectadas
- Imprime PDFs desde cualquier URL
- Funciona tanto en Windows como en Linux
- Se puede configurar como servicio en Windows
Necesitas tener Rust instalado. Si no lo tienes, descárgalo desde rust-lang.org.
Para compilar:
cargo build --releaseEl ejecutable estará en target/release/printer.
Para Windows, recomendamos instalar SumatraPDF para la impresión de PDFs. Puedes colocar SumatraPDF.exe en:
- El mismo directorio que tu aplicación
- En cualquiera de estos subdirectorios: bin, tools, apps, utils
- En su ubicación de instalación predeterminada
Este servidor utiliza:
- La biblioteca printers para detectar impresoras
- SumatraPDF para imprimir PDFs en Windows
- CUPS para imprimir en Linux
Para iniciar el servidor:
./target/release/printerPor defecto, el servidor se inicia en el puerto 8081.
GET http://localhost:8081/printers
Te mostrará algo como:
[
{
"name": "HP LaserJet",
"driver": "HPLJ4250.dll",
"is_default": true
},
{
"name": "Canon PIXMA",
"driver": "CNPXM.dll",
"is_default": false
}
]Para imprimir un PDF desde una URL:
GET http://localhost:8081/print?url=https://ejemplo.com/documento.pdf
Esto usará tu impresora predeterminada. Si quieres usar una específica:
GET http://localhost:8081/print?url=https://ejemplo.com/documento.pdf&printer=HP LaserJet
- Compila el proyecto
- Instala el servicio:
sc.exe create "RustPrintService" binPath= "\"C:\ruta\a\printer.exe\" --run-as-service" start= auto- Inicia el servicio:
sc.exe start "RustPrintService"Para más detalles, consulta WINDOWS_SERVICE.md.
Para configurarlo como servicio en Linux usando systemd:
sudo nano /etc/systemd/system/printer-service.serviceCon este contenido:
[Unit]
Description=Servidor de impresión
After=network.target
[Service]
ExecStart=/ruta/a/printer
Restart=always
User=tuusuario
[Install]
WantedBy=multi-user.targetLuego:
sudo systemctl daemon-reload
sudo systemctl enable printer-service
sudo systemctl start printer-serviceEste proyecto utiliza:
- axum para el servidor web
- tokio para el manejo asíncrono
- reqwest para descargar PDFs
- printers para detección de impresoras
- SumatraPDF para impresión de PDFs en Windows
MIT - Úsalo como quieras.