Newsgroup: it.comp.java
Titolo: Come editare un documento word nel browser ???

Salve a tutti ho la necessita di editere un file word nel browser E POI
SALVARLO AUTOMATICAMENTE sul server . Il cliente mi hatto che non ne vuole
sapere di fare upload e download del documento tra il suo pc e il server.
Qualcuno ha per caso un idea di come fare ????
Grazie
Ian Valek
--------------------------------
Inviato via 
http://usenet.libero.it

Auguri!!! ;-)
Secondo me devi fare una MegaApplet + servlet di upload/download
automatico...
Cmq la cosa è abbastanza interessante...
tienici aggiornati, ok?!
Amedeoz.
"Ian Valek" <ian....@libero.itNOSPAM> wrote in message
news:80Z205Z212Z30Y...@usenet.libero.it...



Qui Java c'entra poco (diciamo pure nulla), quindi "ufficialmente" potrei anche dirti che
siamo OT.
Penso di poterti dare comunque qualche dritta... chiedo perdono a tutti gli utenti del
newsgroup, voglio solo dare un'anteprima di quanto complessa possa essere la creazione di
un sistema simile.
Se non ho capito male, la richiesta del tuo cliente è quella di poter modificare
direttamente dei documenti presenti sul server, rimanendo in un ambiente familiare come
può essere Microsoft Word.
Ti dico subito che le operazioni di download e upload non possono essere evitate, ma puoi
sempre automatizzare il tutto. Questo vuol dire che in qualche modo (trasparente per
l'utente finale), il documento deve essere scaricato sul client in una cartella
temporanea, aperto in word, e infine ricaricato sul server se la data/ora del documento
LOCALE (nella cartella temporanea) sono maggiori della data/ora del documento stesso prima
di essere aperto in Word.
Per avere una soluzione di questo tipo puoi dirigerti sullo sviluppo di un ActiveX
customizzato che gestisca tutta la sequenza. Volendo puoi usare anche un'applet Java, ma
perdi alcune funzionalità che solo il layer COM ti può dare.
La sequenza scaricamento/modifica/upload prevede operazioni privilegiate come:
1) Scrivere dati sul disco fisso dell'utente che esegue il browser
2) Avvio di un'applicazione arbitraria
3) Controllo del tempo di esecuzione dell'applicazione
4) Lettura di dati arbitrari dal disco fisso per trasmetterli al server
Morale della favola, o firmi il controllo ActiveX (leggi MSDN Library per sapere come) con
un certificato ottenuto dalla Verisign (e per questo devi pagare...) oppure installi su
ogni client un file di autocertificazione generato sul tuo PC. Oltretutto devi assicurarti
che ogni client abbia installato almeno Word, quindi aggiungi tra le operazioni
privilegiate la possibilità di allocare oggetti di qualunque classe COM, oppure di leggere
direttamente dal registro di sistema.
Risolto il problema dell'autenticazione dell'ActiveX devi capire come gestire il
download/upload del documento. Se guardi la libreria "Microsoft Internet Transfert
Control" (msinet.ocx), nel metodo Inet.Execute dovresti trovare quello che ti serve.
Veniamo all'editazione. Se il tuo ActiveX è riuscito a portare correttamente il documento
sul client, devi allocare un oggetto di tipo Word.Application , e da li gestisci
l'apertura del documento e il controllo del suo stato. Questo significa che è necessario
un polling sull'oggetto di classe Word.Document che hai ottenuto all'esecuzione di
Word.Application.Documents.Add() . Non appena il riferimento diventa non valido, significa
che l'utente ha chiuso il documento (o l'applicazione stessa). A quel punto controlli
data/ora e.... beh qualcosa la devi fare pure te!!!
Se vuoi andare via Java, ci sono alcune cose che devi tenere presente:
1) anche l'applet deve essere firmato (ma qui purtroppo non posso darti indicazioni,
perchè non le ho nemmeno io)
2) il lancio di Word deve essere fatto tramite una chiamata a
     java.lang.Runtime.getRuntime().exec({"<percorso di word>\winword.exe","<percorso del
documento>.doc"});
3) l'unico modo con cui puoi capire se il documento è stato modificato è
   - attendere che l'utente chiuda Word (guarda la documentazione di java.lang.Process -
non puoi controllare il documento, solo l'intera applicazione di Word)
   - controllare data/ora del documento locale
4) assicurati le classi che usi siano presenti nella versione 1.1 del JDK (è l'unica
compatibile con la JVM di Microsoft), oppure chiedi di installare sui client l'ultima
versione del Java Runtime Environment scaricabile dal sito della Sun
Questo è solo per darti una visibilità generale sul problema. La logica rimane la stessa
sia su ActiveX (leggi: Visual Basic), sia su Java.
Se ho detto qualche vaccata, avvertitemi :)
In bocca al lupo!!!
--
"Lascia che gli eventi seguano la propria strada"
(per rispondere personalmente leva IlDitoDalCulo.)

www.tarantella.com
Costa dei soldi ma fa esattamente quello.
-- 
Stefano L.

Grazie ancora per le preziose info.
