[PLUTO-help] estrarre file allegati con procmail
Andrea Dinale
andrea a dinale.it
Mer 28 Maggio 2003 18:27:30 CEST
se il tuo problema è far creare pdf agli utenti della tua lan, non
vorrai mica costringerli a stampare il file in ps e poi inviarlo via
mail a se stessi, controllare la posta, salvare l'allegato, accorgersi
di un errore di battitura e rifare tutto????
usa samba e creati una stampante virtuale che stampa in pdf, ci sono
molti modi per fare questo.
Per esempio un mio amico ha sviluppato un programmillo utile, tovi tutto
qui:
http://www.campana.vi.it/ottavio/linux/4pinguiniinpadella/4pinguiniinpadella.html
anzi, ti riporto la parte più importante (occhio che nel sorgente c'è
qualche riga che è andata a capo a causa delle righe troppo lunghe)
---------------------------------------------------------------------------
1.6 Come creo una finta stampante pdf?
Nel file smb.conf va aggiunta questa sezione:
[pdf]
comment = Generatore file PDF
printable = yes
print command = ps2pdf %s /path_di_destinazione/%u.pdf
printing = BSD
read only = yes
guest ok = yes
Sui client windows va configurata una generica stampante postscript a
colori. Il file destinazione può essere messo dove meglio si crede,
magari nella directory documenti dell'utente e possiamo dare al file il
nome nome_utente.pdf . Ok, forse non è tanto, però aiuta...
Questa è stata la prima soluzione, funziona, ma crea un file con il nome
dell'utente, quindi ogni volta che si fa il pdf si deve rinominarlo. E
se l'utente è un utonto è facile che faccia casino. Ecco allora che sto
sviluppando un programmino che estrae il titolo dal codice postscript.
Non è ancora in uno stato perfetto, però sembra funzionare.
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int i;
FILE *pipe;
char comando[1024];
char buffer[1024];
char titolo[1024];
char debug[1024];
system ("logger Parto\n");
sprintf (comando, "grep Title %s | cut -d \\: -f 2 | cut -c 2-",
argv[argc-1]);
pipe = popen(comando, "r");
fgets (titolo, 1024, pipe);
pclose (pipe);
i = 0;
while(1) {
if (titolo[i]=='\n' || titolo[i]==13) {
titolo[i] = '\0';
break;
} else if (titolo[i]==' ') {
titolo[i] = '_';
}
i++;
}
sprintf(comando, "ps2pdf %s /path/to/share/%s.pdf\n",
argv[argc-1], titolo);
sprintf(debug, "logger %s" ,comando);
system(debug);
system(comando);
}
Che deve essere richiamato da smb.conf con:
[pdf]
comment = stp PDF
path = /tmp
printable = yes
print command = /path/to/stampa %s
printing = BSD
read only = yes
guest only = yes
Occhio un po' ai diritti, il programma stampa lo faccio girare come root
ma forse può girare con diritti minori. Rimangono un po' di problemi,
per esempio, non toglie il postfisso del nome del file, quindi se
stampate da word vi beccate qualcosa come nomefile.doc.pdf che ricorda
tanto un modo per mandare virus con outlook. Appena ho tempo sistemo
anche questo.
---------------------------------------------------------------------------------------
ciao
Andrea
More information about the pluto-help
mailing list