[LatinaLUG] Progetto servizio conversione PDF

Enrico Bassetti enrico.bassetti@q4q5.it
Gio 28 Ago 2008 19:13:03 CEST


Allora, visto che alla fine partirà come beta a lungo termine (leggasi:
fino a quando non avrò un server dedicato), la voglio lanciare lo
stesso.

Da un po' di tempo sto lavorando ad una idea IMHO abbastanza utile. La
necessità nasce dalla difficoltà di ricezione dei comunicati verso la
casella segnalazioni di un portale che porto avanti (quello con le *EX*
icone crystalsvg). Il problema si può schematizzare con (in
pseudo-C-php-$linguaggioAcaso):

tizio T;
comunicato C;
string Formato[] = {"doc", "xls", "docx". "xlsx", "jpg", ...);
while ( true ) {
	T = new Tizio();
	C = new Comunicato();
	C->testo = new CosaCheNonInteressaMaCheComunquePubblichiamo();
	C->formato = Formato[random()];      // notare questa istruzione
	T->inviaComunicato(C, "www.nomedelportale.it");
}

Allora, in parole povere ci arrivano documenti in tutti i formati, dal
più odioso ".doc" a quello più sperduto ".vattelapesca" (nessuno che
invia in PDF o qualche formato "universale").

Ovviamente l'idea di installare un convertitore pdf sul pc di chi invia
e fargli inviare il pdf è "praticamente impraticabile" (tanto perché non
ero riuscito a fare un gioco di parole prima).

Inizialmente pensai ad un convertitore del tipo: in box di invio file
sul sito (sul mio "server" di casa) e poi selezionavo il programma a
seconda dell'estensione. Ma così nasce un piccolo grande problema: se
non ho il convertitore per quel tipo di file tutto va a $faciliDonne.

Allora mi sono ingeniato ed ho pensato a come fare: premesso che chi
invia i comunicati usa $Finestre (e anche perché chi usa $pinguino ha il
convertitore di CUPS, e anche su OpenOffice.org), ho pensato di far
convertire il file al computer e farlo inviare convertito. Per non
contraddirmi con la frase di cui sopra, ho pensato di usare il servizio
di stampa di $Finestre per farmi generare un postscript, che verrà
convertito in PDF da $programmaDiCuiNonRicordoIlNome attraverso CUPS.

Ergo, il $tizio di turno deve semplicemente installare una stampante,
con *qualsiasi* driver (a colori se vuole), e poi stampare il tutto. Per
far funzionare la cosa restringo l'accesso a cups ai soli utenti che si
registrano, usando come nome utente l'indirizzo email di questi tizi, in
modo da far partire il file verso un email in PDF.

Questo vuol dire che devo proteggere cups (per quello vi ho fatto delle
domande su quello tempo fa), e sprecare un po' di banda. L'ip dinamico
non gioca certo a mio favore (e la velocità neanche), ma ci adatteremo.
Per ora sto studiando un po' come proteggere cups (oltre ad iptables e
la troncatura di /admin/ )

Inoltre metterò tutta la documentazione online per riprodurre la cosa,
così se qualcuno più fortunato di me (leggasi: con un server dedicato e
un po' di risorse da dedicare) volesse riprodurre la cosa, lo possa
fare.

PS: Sto pensando che forse si potrebbe anche realizzare un cluster
high-availability per non perdere una stampa... sarebbe carino :-P

Enrico



Maggiori informazioni sulla lista latina