salta alla navigazione

Stampante PDF di rete senza CUPS 16 gennaio 2007 - 23:06

Inviato da Antonio De Luci (imu) in : Debian, Linux, O.S. Revolution, Open Source, Tips , trackback
Articolo scritto da ZioFork

In questo articolo vediamo come creare file PDF emulando una stampante di rete su protocollo JetDirect senza installare CUPS sul server ma appoggiandosi solo su ghostscript, inetd e la shell.


Installiamo i tool necessari (esempio per le debian-based, da adattare in base alla propria distro):
sudo apt-get install gs-gpl
Creiamo poi lo script di appoggio che chiameremo pdflp.sh che conterrà:
#!/bin/bash
ps2pdf - $1/$(date +%Y%m%d-%H%M%S)-$$.pdf

e salviamolo in /usr/local/bin. Rendiamolo eseguibile e creiamo la directory di spool:
sudo chmod +x /usr/local/bin/pdflp.sh
sudo mkdir -p /var/spool/pdf
sudo chown lp:lp /usr/local/bin/pdflp.sh /var/spool/pdf

modifichiamo la configurazione di inetd aggiungendo la riga:
9100 stream tcp nowait lp /usr/sbin/tcpd /usr/local/bin/pdflp.sh /var/spool/pdf
e forziamo inetd a ricaricare la configurazione:
sudo killall -HUP inetd
Se poi sulla macchina abbiamo samba installato e vogliamo dare quel “tocco di professionalità” ;) alla soluzione possiamo abilitare uno share pubblico in sola lettura aggiungendo questa sezione al file /etc/samba/smb.conf:
[pdf]
comment = Stampe PDF
writable = no
locking = no
path = /var/spool/pdf
public = yes

Riavviamo samba:
/etc/init.d/samba restart
A questo punto non ci resta che configurare i client: basta aggiungere una stampante Postscript generica di rete su protocollo JetDirect (chiamato a volte “raw socket”) e il gioco è fatto. Per i sistemi operativi che non hanno un driver Postscript generico (non faccio nomi ;) ) suggerisco di usare i driver Apple della serie LaserWriter che sembrano generare del buon codice Postscript.
Ogni job stampato verrà automaticamente convertito in formato PDF e salvato in /var/spool/pdf con un nome generato in base a data e ora di stampa. Se è stata anche modificata la configurazione di samba sarà possibile accedere da remoto allo spool per prelevare i file PDF.

È da notare che questo metodo apre la porta TCP 9100: l’accesso può essere limitato con una adeguata configurazione dei file /etc/hosts.allow e /etc/hosts.deny (vedi man tcpd).

Il vantaggio di questa soluzione, oltre al fatto di essere meno intrusiva rispetto all’installazione di CUPS, è anche il maggiore supporto da parte di sistemi operativi “datati” (es.: Solaris 7) per il protocollo JetDirect rispetto a protocolli più moderni come ipp (su cui è basato CUPS).

Commenti»

1. alexcatese - 4 giugno 2008- 11:41

Io ho riscontrato questo problema:
se 2 stampe sono ferme su una coda che poi viene sbloccata, entrambe sono stampate nello stesso file pdf.
C’è un modo per risolvere?

Usa Mozilla Firefox Mozilla Firefox 3.0b5 con Linux Linux