2012-08-04 15 views
6

Ho un'applicazione desktop swing esistente che desidero convertire in un'applicazione web. La prima cosa che si sta fermando è che l'applicazione desktop si occupa della scrittura e della lettura da file PDF. Anche l'utente riempie i moduli PDF che devono essere letti dall'applicazione.Applicazione Web che si occupa di file -upload download

Ora, un tipico caso di utilizzo nell'applicazione desktop è simile all'accesso dell'utente che apre un modulo PDF e lo riempie. L'applicazione swing gestisce dove viene archiviato il file, quindi va al file e legge il modulo, estrae i dati e memorizza i dati nel db. L'utente potrebbe non compilare il modulo tutto in una volta. Potrebbe salvarlo, tornare più tardi e continuare.

Tutto ciò deve essere fatto dall'app Web adesso. Il mio problema è che non voglio che l'utente scarica e carica il modulo più volte sul server. Ciò mancherebbe la larghezza di banda e chiedendo anche l'uso di salvare il file localmente e caricarlo di nuovo una volta che ha riempito il modulo non mi piace perché l'applicazione desktop è ben usata anche per gestire la posizione di questi file.

Devo implementare qualcosa di simile a un dropbox? Un piccolo demone che funziona continuamente per verificare quale file è stato aggiornato e caricarlo sul server? Sarebbe difficile dal momento che al server non saprei se il file è stato aggiornato o meno. C'è qualcosa di simile che qualcuno avrebbe potuto fare prima?

risposta

5

Ho un altro suggerimento: perché non mostrare all'utente un modulo con gli stessi campi e trasferirli al PDF dopo l'invio dell'utente. In questo modo il Pdf non lascia il server e trasmetti solo la quantità minima di dati.

+0

grazie per la risposta. Ma si prega di fare riferimento al commento sotto jowierun .. – sethu

3

Passare a una versione Web dell'applicazione può costringere a ripensare il modo in cui si stanno facendo le cose. Certamente i browser sono intenzionalmente limitati nel loro accesso al file system locale che introduce un grosso ostacolo per la tua attuale modalità operativa.

Anche se è possibile visualizzare il PDF all'interno di un browser, rilevare il completamento delle modifiche e inviarlo al server dal codice del browser (che è probabilmente possibile), si sarà soggetti a diversi browser che eseguono diversi (strano) cose con qualsiasi plugin pdf è installato.

Come già detto Vitaliy, il passaggio dalla possibilità di compilare un modulo (web) nel browser significa che l'intero problema del download non funziona. Ma poi devi prendere ciò che l'utente ha fatto in una pagina web e pomparlo in un PDF in qualche modo. Se non si dispone di iniziare con un PDF, ma è possibile raccogliere i dati e produrre un PDF alla fine, si potrebbero avere più opzioni. Ad esempio, è possibile utilizzare iText per creare direttamente un PDF se non si dispone di troppi stili di documento con cui lavorare. Potresti usare qualcosa come Docmosis che puoi dare ai template e farlo compilare e renderizzare i PDF in un secondo momento. Con l'opzione Docmosis puoi anche chiedere a Docmosis l'elenco dei campi nel modello in modo da poter creare un modulo Web basato sul modello selezionato, lasciare che l'utente lo compili, quindi inviarlo a Docmosis per produrre il file.

Speriamo che ci siano alcune opzioni che ti sono utili.

+0

Sfortunatamente, sarebbe difficile da fare. Questi pdf hanno un numero enorme di campi. Non sono di mia proprietà. Sono moduli XFA con firme digitali, allegati e materiale. Ad ogni modo, il problema non è solo limitato ai moduli PDF. Ci sono documenti di parole, excel e qualsiasi altro documento con cui un utente vuole lavorare. Spiacente avrei dovuto menzionarlo nella domanda precedente .. – sethu

0

Adobe documents how to do this here. Mai sottovalutare il potere di design-by-google. So che questo può essere fatto funzionare perché ho usato i moduli PDF online.

+0

I moduli PDF non sono i semplici dati esportati da DFF ma piuttosto XFA http://partners.adobe.com/public/developer/xml/index_arch.html che sono molto di più complesso. Davvero non voglio avere un campo modulo sulla mia pagina html che sostituisce ogni campo nel modulo. Ecco perché la forma è lì in primo luogo. – sethu

0

Ho lavorato a un problema simile alcuni anni fa, anche se non avevo a che fare con i moduli firmati. La firma lo rende sicuramente un po 'più difficile. Tuttavia, sono stato in grado di utilizzare iText per creare un modulo PDF con i campi e inviare di nuovo i dati del campo al server. Purtroppo, sfortunatamente non ricordo esattamente cosa/come l'abbiamo fatto, ma posso confermare che è fattibile (con limitazioni/avvertimenti).Es: l'utente doveva installare il plug-in per lettore di PDF & L'utente è stato costretto a scaricare il pdf ogni volta.

Fondamentalmente quello che ho fatto è stato usare iText per creare un FDF da un PDF (con i campi dei moduli del modulo esistente). Il pulsante di invio in FDF invia effettivamente i dati del modulo a un URL di tua scelta (non diversamente da un modulo HTML). Una volta che hai quei dati, credo di aver unito i campi del modulo (dal FDF) con il PDF sul lato server usando iText.

Dopo aver utilizzato il server per conservare tutti i dati del modulo, il processo di sincronizzazione/blocco che si utilizza per garantire che un singolo utente stia aggiornando i dati dei moduli più recenti e migliori dipende da voi.

Il tuo commento sotto jowierun indica che vuoi trattare anche con documenti word/excel/etc, quindi non sono del tutto sicuro di capire i tuoi bisogni. Il tuo post iniziale ha discusso le esigenze di compilare moduli PDF localmente, ma in seguito sembra che tu stia cercando un sistema di condivisione file.

Puoi chiarire esattamente cosa stai cercando di realizzare?

+0

Hey Eric, hai ragione, sarebbe un sistema di condivisione file. Ma sono più interessato ai moduli PDF. Il mio server leggerà da/scrivi a questi moduli PDF. Il problema è che quando l'utente completa la compilazione del modulo e ho bisogno di leggere i dati dal modulo nel server, ho bisogno di sapere che il modulo è l'ultima forma. Non voglio chiedere al mio utente di passare attraverso il ciclo di upload-upload up-upload che è piuttosto noioso. Invece se il ciclo si scarica-si riempie e poi il server sa che è necessario ottenere il modulo dal sistema dell'utente prima di procedere, sarebbe l'ideale – sethu

+0

Ho aggiornato la mia risposta per darvi un piccolo background in più su quello che ho fatto. Ma il tuo requisito non ha molto senso. Vuoi archiviare il PDF salvato sul client e chiedere al tuo server di recuperare il PDF dal client quando ne hai bisogno? Sembra quasi un sistema P2P ora. Cosa succede se il cliente è offline? O l'HD del client si blocca, ecc.? E il processo di upload caricherà solo i dati del campo, quindi non è più noioso che cliccare su "salva". –

+0

Non p2p, piuttosto pensavo che un dropbox come deamon potesse continuare a girare sullo sfondo del client. Questo continuerà a controllare se qualsiasi file scaricato è stato modificato, in tal caso, lo caricherà sul server. E non posso chiedere all'utente di digitare i campi del modulo e unirlo con il PDF, perché è noioso perché ci sono più di 100 moduli. Queste forme non sono FDF ma piuttosto forme XFA. Posso fare in modo che il demone comunichi con il server, quindi saprei se il demone non è in esecuzione quando il client si connette. – sethu

Problemi correlati