[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