Documenti Office e Java : anteprima ed estrazione del testo.
Transcript
Documenti Office e Java : anteprima ed estrazione del testo.
UNIVERSITÀ DEGLI STUDI DELLINSUBRIA FACOLTÀ DI SCIENZE MM. FF. NN. - VARESE Corso di Laurea in Informatica Documenti di Office e Java Anteprima ed estrazione del testo Relatore: Prof. Marco TARINI Tesi di Laurea di: MATTEO BASSANI Matr. n. 608429 Anno Accademico 2004/2005 Ringraziamenti Da fare etc. etc. Abstract abstract in inglese etc. etc. abstract in Italiano etc. etc. Indice Ringraziamenti iv Abstract vi 1 Introduzione 1.1 Contesto Applicativo . . . . . . . . . . . . . . . . . . . . . . . 1.2 Struttura di questo lavoro . . . . . . . . . . . . . . . . . . . . 2 Office e Java: un problema di compatibilità 2.1 Java . . . . . . . . . . . . . . . . . . . . . . . 2.2 Office . . . . . . . . . . . . . . . . . . . . . . 2.3 I formati Office . . . . . . . . . . . . . . . . . 2.3.1 Documenti di Word . . . . . . . . . . 2.3.2 I fogli di calcolo di Excel . . . . . . . . 2.3.3 Presentazioni di PowerPoint . . . . . . 2.3.4 Database Access . . . . . . . . . . . . 2.4 Analisi delle soluzioni possibili . . . . . . . . 2.4.1 XBrowser . . . . . . . . . . . . . . . . 2.4.2 iecanvas . . . . . . . . . . . . . . . . . 2.4.3 Multivalent . . . . . . . . . . . . . . . 2.4.4 Mozilla Webclient . . . . . . . . . . . 2.4.5 Jakarta POI . . . . . . . . . . . . . . . 3 Un 3.1 3.2 3.3 3.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ingrediente della soluzione proposta: OpenOffice.org Storia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Caratteristiche tecniche . . . . . . . . . . . . . . . . . . . . Internals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Interazione con Java . . . . . . . . . . . . . . . . . . . . . . 1 1 3 . . . . . . . . . . . . . 4 4 6 7 8 9 10 11 11 11 11 12 12 12 . . . . 14 14 15 16 16 4 Soluzioni 17 4.1 Strumenti e programmi necessari . . . . . . . . . . . . . . . . 17 4.2 L’estrazione del testo . . . . . . . . . . . . . . . . . . . . . . . 17 4.3 L’anteprima di documenti . . . . . . . . . . . . . . . . . . . . 20 5 Risultati e Conclusioni 23 5.1 Risultati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 5.2 Sviluppi futuri . . . . . . . . . . . . . . . . . . . . . . . . . . 27 5.3 Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Bibliografia 30 Elenco delle figure 1.1 1.2 Schermata iniziale di DocWeaver . . . . . . . . . . . . . . . . Schermata di ricerca documenti in DocWeaver . . . . . . . . . 2 3 2.1 Struttura interna di un file salvato con PowerPoint . . . . . . 10 4.1 4.2 4.3 4.4 4.5 4.6 4.7 Il programma demo ha estratto il testo da un file word. . . . Codice per la connessione a un server OpenOffice . . . . . . . Funzione che stabilisce il tipo di documento aperto . . . . . . Estrazione del testo tramite l’accesso hai paragrafi. . . . . . . Esportazione di un file Excel in un file HTML. . . . . . . . . Codice necessario per modificare una singola opzione. . . . . Caricamento di un file nel componente OpenOffice e rimozione delle barre degli strumenti . . . . . . . . . . . . . . . . . . . . 18 19 19 20 20 21 L’estrattore del testo visualizza il testo estratto da un riassunto. L’anteprima di un file di Word grazie ad OpenOffice. . . . . . La barra dei file di Excel rimane visibile per mostrare il reale contenuto della celle. . . . . . . . . . . . . . . . . . . . . . . . Tramite i pulsanti in alto a destra é possibile par partire la presentazione delle slide. . . . . . . . . . . . . . . . . . . . . . 24 25 5.1 5.2 5.3 5.4 22 29 29 Elenco delle tabelle 2.2 Esempio di un record BIFF di una cella di un intero . . . . . 5.1 5.2 5.3 5.4 Tempi di anteprima di file Word. . . . . Tempi di anteprima di file Ecel. . . . . . Tempi di anteprima di file Powerpoint. . Le performance dell’estrattore del testo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 24 25 25 26 Capitolo 1 Introduzione “L’importanza della gestione dei contenuti aziendali si riflette nei vari modi in cui le imprese utilizzano le informazioni come elemento distintivo e promotore di competitività. [. . . ] La modalità di creazione, gestione, archiviazione e utilizzo delle informazioni per l’espletamento di attività varie, costituisce il nocciolo della gestione dei contenuti aziendali”. [1] In questo contesto si sviluppa la necessità di avere un unico programma che permetta di poter visionare l’anteprima di un qualsiasi documento, in qualsiasi formato, e di poterne estrapolare il contenuto per memorizzarlo, e successivamente ricercarlo in un’ottica di più ampio respiro. 1.1 Contesto Applicativo Il gruppo Irpe é un’affermata realtà che propone una serie di servizi e soluzioni ad ampio raggio per le medie imprese. Il gruppo, tramite le sue divisioni, offre in particolare soluzioni nell’ambito del networking, della businness continuity, dell’editoria, della gestione licenze software, del content management. Inoltre offre corsi di formazione e servizi di assistenza sistemistica e hardware. Nell’ambito del content management l’azienda fornisce DocWeaver, un prodotto che offre “strumenti informatici volti a semplificare ed automatizzare il più possibile le operazioni di archiviazione, catalogazione e ricerca documenti, garantendo la riservatezza delle informazioni memorizzate che potranno essere rese disponibili dopo il controllo del profilo dell’utente collegato e delle autorizzazioni che questi possiede. [. . . ] Permette alle organizzazioni di creare una linea di collegamento fra le persone, le informazioni e 1.1 Contesto Applicativo i processi, trasformando il loro patrimonio informativo in una forma piú intelligente, ottimizzando i processi di lavoro e riducendo i rischi correlati”. [1] DocWeaver é un programma scritto in Java, che con l’ausilio di un database SQL, soddisfa appieno la descrizione precedente (fig.1.1), permettendo di archiviare documenti elettronici (documenti, fogli di calcolo, presentazioni, immagini, e-mail, . . . ) e successivamente di ricercarli (fig.1.2). Il programma sfrutta un’architettura client server, e grazie alle proprietà di Java é multipiattaforma, permettendo di poter scegliere con la massima libertà sistemi operativi (Windows, Mac OS X, Unix, . . . ) e database server (MS SQL Server, Oracle, Postgresql, . . . ). Il progetto é divisibile in due parti: l’anteprima e l’estrazione del testo. Prevede la realizzazione di una applicazione dimostrativa Java che consenta la visualizzazione dell’anteprima di documenti Office (Word, Excel, . . . ), documenti PDF, file di testo, immagini (JPG, PNG, . . . ), etc. Il programma potrà integrare componenti esterni quali browser e/o altro e dovrà essere utilizzabile sia in ambiente Windows che Macintosh, Linux, . . . I risultati saranno poi attentamente valutati per una possibile integrazione nel prodotto di archiviazione documentale DocWeaver realizzato in tecnologia Java. La seconda parte prevede la realizzazione di una applicazione dimostrativa in Java che consenta l’estrazione di testo da documenti Office (Word, Excel, . . . ). L’obbiettivo é quello di integrarlo nel prodotto di archiviazione documentale DocWeaver, lato server, in modo da fornire il testo estratto al motore di indicizzazione Full-Text già previsto dai database SQL utilizzati (Microsoft SQL, Oracle, . . . ). Figura 1.2: Schermata di ricerca documenti in DocWeaver 2 1.2 Struttura di questo lavoro 1.2 Struttura di questo lavoro (un indice espanso) blah blah (capitolo 1), .... cito: [3]Il ruolo dell’ introduzione nelle tesi é un po’convenzionale: contiene di fatto un compendio della tesi. La sua lunghezza é di circa 3 5 pagine. Il suo scopo é di consentire una rapida valutazione del contenuto della tesi. l’ introduzione della tua tesi ha lo scopo opposto. Tutto ciò che é contenuto nella tesi deve essere menzionato nell’introduzione. Per questo motivo é una delle ultime cose che viene scritta. Inoltre, visto che é la prima cosa che viene letta da chi vuole valutare la tesi, é probabilmente una delle poche cose lette e rilette dal tesista e dal relatore. La lasciamo a dopo 3 Capitolo 2 Office e Java: un problema di compatibilità All’interno di questo capitolo affronteremo il problema legato alla piattaforma di sviluppo e si farà una panoramica sul problema della gestione dei documenti Microsoft Office. Prenderemo in analisi i principali programmi che compongono la suite Office e il formato dei file che questi programmi usano. Faremo infine una veloce sintesi dei progetti software che possono essere usati per risolvere il problema, soffermandoci sulle problematiche legate al loro uso. 2.1 Java Java é un linguaggio di programmazione riflessivo, orientato agli oggetti e indipendente dalla piattaforma. Lo sviluppo di Java inizia nel 1990 con Patrick Naughton, a lui si uniscono James Goslinge Mike Sheridan. Il linguaggio su cui stavano lavorando inizialmente doveva essere una nuova estensione del C++ (altro linguaggio di programmazione ad oggetti). Però decisero che era carente di alcune funzioni, quindi iniziarono la creazione di un nuovo linguaggio chiamato inizialmente OAK, basato su alcune idee di Bill Joy. Nel Giugno 1994, dopo una lunga riunione John Gage, James Gosling, Bill Joy, Patrick Naughton, Wayne Rosing, e Eric Schmidt decisero che con l’avvento di Mosaic 1 , il loro linguaggio avrebbe dovuto sposarsi con il web. Nel Novembre del 1994 in una conferenza congiunta con Netscape mostrarono le possibilità offerte da Java. Marc Andreessen (all’epoca vice presidente esecutivo di Netscape) in quell’occasione annunciò che Java sarebbe stato incluso nei loro browser. Un programma o una applet2 Java hanno bisogno di una virtual machine, un programma vero che esegue l’applicazione scritta in Java. I principali punti di forza e innovazioni di Java sono la presenza di una API interna per la realizzazione di interfacce grafiche (al contrario del C++ e delle varie librerie grafiche proprietarie disponibili) e la possibilità di poter eseguire la stessa applicazione su piattaforme diverse ottenendo i medesimi risultati, sia computazionalmente che nella rappresentazione visiva. Il programmatore Java ha la possibilità di creare applicazioni multithread o concorrenti, o con il supporto alla riflessione, che permette di caricare dinamicamente solo le classi necessarie all’esecuzione, senza doversi preoccupare del processo di garbage-collection, che é automatico. Tra le altre funzionalità 2.2 Office messe a disposizione da Java abbiamo il supporto alle tecnologie di rete, per l’accesso ai database tramite JDBC/ODBC, la manipolazione di documenti XML e la creazione di Web Services. Un programma scritto in Java viene compilato, ma non direttamente in codice eseguibile dal sistema operativo, e vengono generati dei file in bytecode, i quali vengono poi interpretati dalla Java Virtual Machine (JVM) che esegue il programma. Java risulta un linguaggio ibrido, ovvero parzialmente compilato e parzialmente interpretato. La JVM viene implementata per ogni sistema operativo sufficientemente diffuso e attualmente é disponibile per Windows, Mac OS X, *nix, . . . Purtroppo il processo di interpretazione del programma aveva dei problemi di performance, “per questo, tutte le implementazioni recenti di macchine virtuali Java hanno incorporate un JIT compiler, cioè un compilatore interno, che al momento del lancio traduce al volo il programma bytecode Java in un normale programma nel linguaggio macchina del computer ospite. Inoltre, questa ricompilazione é dinamica, cioè la virtual machine analizza costantemente il modello di esecuzione del codice (profiling), e ottimizza ulteriormente le parti usate più frequentemente, mentre il programma é in esecuzione ” [2]. Java, fornendo delle API per la creazione di interfacce grafiche, supporta anche alcuni componenti capaci di mostrare testo formattato, ovvero non il solo testo, ma visualizzando a video anche le variazioni di font, di dimensioni e di stile nei caratteri usati. I due componenti sono JEditorPane e la sua sottoclasse JTextPane. Questi componenti sono stati creati per supportare i seguenti formati: testo piano, HTML ed RTF (). Sia HTML che RTF sono due linguaggi di mark-up, il primo sviluppato dal W3C (World Wide Web Consortium) ed usato come linguaggio per la descrizione di ipertesti sul web, il secondo sviluppato da Microsoft sin dal 1987 per lo scambio di documenti fra piattaforme diverse. Il formato RTF ha raggiunto la versione 1.8 nell’Aprile del 2004, le sue specifiche3 sono pubblicamente disponibili. Purtroppo questo formato é caduto in disuso poiché Word, che usa un’altro formato, ha guadagnato una quota di mercato talmente cospicua da creare di fatto uno standard. Nonostante JEditorPane supporti pochi formati, c’é la possibilità di incrementare il loro numero tramite la scrittura e l’aggiunta di alcune classi al progetto. L’aggiunta dei formati usati da Office é comunque difficoltosa se non impossibile per la mancanza di documentazione ufficiale aggiornata sulle specifiche interne dei formati dei file. 2.2 Office Microsoft Office Suite é la raccolta di una serie di programmi di produttività per l’ufficio. Nata nei primi anni 90 la suite Office diventa il raccoglitore di un set di programmi per l’ufficio che venivano venduti separatamente (Word, Excel, Powerpoint), ma con il vantaggio di avere un prezzo inferiore rispetto ai prodotti separati. Col passare degli anni i programmi che compongono Office sono aumentati e hanno incominciato a condividere componenti e funzionalità: il correttore ortografico, l’ OLE data Integration, VBA (Visual Basic for Application), . . . Con il passare degli anni la suite Office si é imposta sul mercato come uno standard de facto per gli applicativi dell’ufficio. 5 2.3 I formati Office formule, grafici, . . . ; Powerpoint, realizza presentazioni animate con testo, immagini e suoni; Outlook, consente di gestire i propri account di posta, ma anche il calendario, gli appuntamenti; e infine Access, programma che permette la gestione di piccoli database relazionali e creare interfacce grafiche per gli utenti meno esperti. La suite comprende anche un elevato numero di programmi che possono essere inclusi a seconda della versione di Office acquistata: - InfoPath: Software per lavorare con i file XML - Publisher: Software per la creazione di volantini, libretti, . . . - FrontPage: Programma di web design - Visio: Software per la creazione di diagrammi. - Office Picture Manager: software di gestione delle foto. - Photo Editor: Software di fotoritocco. - Project: Programma per la gestione dei progetti. - OneNote: Usato sui tablet PC per prendere rapidamente delle note. - Developer Tools : Tool per gli sviluppatori, in particolare manualistica. - Entourage: Programma di posta elettronica per Mac (fornito al posto di Outlook) Oltre ai prodotti elencati nella gamma office, si sono recentemente aggiunte delle versioni server di alcuni componenti che permettono di automatizzare la generazione di documenti o che mettono a disposizione dei servizi Web-Based. Office viene spesso venduto in pacchetti o suite (Students, Basic, Professional, Developer, . . . ), che includono solo parte dei programmi in modo da rispondere adeguatamente alle specifiche esigenze dell’utenza target delle varie suite. 2.3 I formati Office I file della suite Office più comuni sono i file di Word (.DOC), di Excel (.XLS), di PowerPoint (.PPT) e di Access (.MDB). I file prodotti da questi programmi sono problematici per la stessa suite Office. I motivi principali sono: - Versione del formato dei file: ad ogni versione della suite il formato interno dei file cambia. Questo (ad esempio) rende problematica la lettura di un documento prodotto con l’ultima versione di Word 2003 anche solo con la versione precedente dello stesso software (Word 2002/XP), sopratutto perché le nuove versioni usano funzionalità non previste nelle versioni precedenti. Il continuo aumento di complessità, secondo i detrattori di Microsoft, ha raggiunto un tale livello che nemmeno gli stessi progettisti sanno cosa ci sia dentro in un file di Office. - Versioning del contenuto dei file: una cosa che spesso viene ignorata dalla maggior parte degli utilizzatori dei programmi di Office é 6 2.3 I formati Office - Dimensione dei file: é facile creare un file di Word con un paio di righe di testo e scoprire che ha già raggiunto almeno un centinaio di kilo-Byte. Ancora più sconcertante è il fatto che vengono salvate anche le versioni del file e ciò comporta dover memorizzare altri dati che spesso non servono affatto. - Offuscamento del contenuto dei file: infine le politiche aziendali hanno imposto anche un offuscamento del formato. Ciò ha comportato un’ulteriore confusione su cosa ci sia in realtà all’interno di un file del pacchetto Office. La principale motivazione al riguardo é la necessità di evitare che suite concorrenti4 possano sfruttare come punto di forza dei propi prodotti, oltre a un costo inferiore anche la compatibilità con il formato più diffuso. Alcuni file di Office possono contenere più di un oggetto, per esempio un documento di Word può contenere immagini, suoni, documenti di Excel. Per Ottenere questo risultato Microsoft ha adottato un sistema chiamato Compound Document File Format[6]. Questo formato lavora come un piccolo file system e permette di contenere un numero indipendente di data stream, organizzati tra loro tramite directory/storage. Ogni documento ha un root storage che è il padre, diretto o indiretto, di tutte le altre directory e di tutti gli stream. Ogni stream é formato da un header e più settori, questi ultimi sono collegati tra loro tramite un puntatore5 . L’header definisce la dimensione e l’inizio della lista dei settori. Nonostante i settori siano numerati in ordine crescente questo non rappresenta l’ordine reale che é invece definito dalla lista che parte dall’header dello strem. Il Compound Document File Format viene usato principalmente per contenere vari file che possono venire modificati separatamente e con programmi diversi, in modo tale che le modifiche vengano riconosciute in tutto il contesto del file. Ad esempio potremmo avere un documento di testo con all’interno una immagine, mentre lavoriamo con possiamo scegliere di modificare l’imagine con un altro programma. Dopo aver apportato delle modifiche all’immagine la salviamo e, quando torniamo al nostro documento, potremo vedere che anche l’immagine all’interno é stata aggiornata. Il formato non verrà trattato ulteriormente all’interno della tesi. Questi accenni sono utili per una migliore comprensione dei formati che verranno esposti nelle prossime sezioni. Ora proseguiamo nell’analisi degli aspetti basilari dei quattro formati più importanti della suite Office. Le informazioni esposte esposte nelle prossime sezioni, sono state reperite principalmente grazie al lavoro di documentazione svolto da parte della comunità open-source. Nonostante Microsoft abbia svolto un ampio lavoro riguardante la struttura dei formati usati dalla suite Office, questi non sono pubblicamente disponibili ma vengono rilasciati grazie ad accordi di partnership e grazie a delle licenze di 2.3.1 Documenti di Word Word é un programma che permette di redarre dei documenti ed é il moderno sostituto della macchia da scrivere. In un documento Word possono essere incluse tabelle di Excel, immagini, grafici, formule matematiche oltre che ovviamente testo formattato. Il formato di word é molto complicato ma possiamo analizzarne brevemente gli aspetti principali. Il testo viene salvato in un blocco unico nel caso in cui si sta salvando il 7 2.3 I formati Office Record Header Byte 0 1 2 3 Value 02 00 09 00 Opcode Lenght 8 Record Body 0 1 2 3 4 5 6 00 00 02 00 00 00 00 Row Column CellAttr 7 8 39 00 Integer Tabella 2.2: Esempio di un record BIFF di una cella di un intero formato da un misto di caratteri ASCII, con alcune modifiche al significato di alcuni caratteri6 , e di caratteri UNICODE. Attraverso una apposita tabella possiamo sapere quali pezzi fanno parte del testo (questo nel caso di file di tipo fastsave) e la loro lunghezza. la formattazione del testo avviene invece attraverso stili. Questi possono essere stili di carattere o di paragrafo e vengono salvati in una tabella. Esistono inoltre due tabelle per pagina, una contente le informazione per la gestione della formattazione da applicare ai caratteri e una per la formattazione dei paragrafi. 2.3.2 I fogli di calcolo di Excel Excel é forse il miglior prodotto per fogli di calcolo attualmente sul mercato. Negli anni si é dimostrato molto stabile, andando al contempo sempre in direzione degli utenti e dell’usabilità. La sua interfaccia grafica si é rivelata vincente, introducendo le barre degli strumenti e ispirandosi a VisiCalc 7 per la visualizzazione dei dati e delle formule. Il formato dei file di Excel é chiamato BIFF (BInary File Format) e negli anni si é evoluto giungendo ormai alla sua ottava edizione. Nel 2001 con l’arrivo sul mercato di Office XP, il formato ha avuto una piccola revisione giungendo cosı̀ a BIFF8X. I file in formato BIFF sono incapsulati in un documento OLE2, con il vantaggio di poter inserire all’interno di un file unico anche le informazioni riguardo a eventuali grafici, immagini, . . . correlati con il foglio di calcolo. Il file ha una struttura base, il workbook, che descrive le propietà comuni a tutto il file (come l’autore, ultima modifica, . . . ). Il workbook ha inoltre informazioni riguardo il numero di sheets o fogli presenti nel file, questi sheet sono immagazzinati in stream differenti all’interno del file stesso. Lo stream degli sheet é diviso in record di dimensione variabile, ognuno con un header di 4 Byte. Questo é diviso in due campi di pari dimensioni, l’Header contiene un numero che identifica il tipo di record (numerico, formula, testo, . . . ) e il Body che contiene la dimensione in byte del record a partire dal successivo. Il formato BIFF prevede inoltre che gli interi vengano salvati secondo il metodo Little-Endian. Questo metodo prevede che il byte meno significativo sia salvato prima e il più significativo per ultimo (es. il seguente intero di 32 bit 13579BDFH é convertito in DFH 9BH 57H 13H ). Nell’esempio nella tabella 2.2 possiamo vedere un esempio di un campo numerico intero. Il primo campo dell’header é l’Opcode, che rappresenta il tipo di record, in questo caso 2 é quello per il record integer. Tra i vari opcode disponibili ci sono quelli per formule, numeri, stringhe, gruppi di celle, formattazione del testo, inizio e fine del file, . . . Successivamente abbiamo il 2.3 I formati Office Figura 2.1: Struttura interna di un file salvato con PowerPoint iniziano i campi relativi al tipo di record indicato dall’ Opcode, quindi il numero di riga e di colonna della cella, che ci indicano che le informazioni sono relative alla cella in posizione C1 (questo perché a video le colonne partono dalla A e le righe da 1), i 3 byte contrassegnati da CellAttr sono una prerogativa dei record più del formato BIFF e contengono alcune informazioni sulla rappresentazione della cella a video (i bordi intorno alla cella, il font da usare, . . . ); infine é presente il valore della cella 57, un intero senza segno. Uno dei punti di forza di Excel é sicuramente la velocità con cui vengono caricati i suoi file, questo perché non obbliga a dover rivalutare tutte le formule ed espressioni presenti nel file. Questo era un grosso vantaggio rispetto alla concorrenza negli anni 90, quando la potenza dei calcolo disponibile nonera certo quella attuale. Da allora il formato si é evoluto aggiungendo e rimuovendo tipi di record, ma grazie ad una struttura solida il formato non ha subito stravolgimenti. Questa stabilità del formato ha permesso a parecchi progetti open-source di implementare un efficace funzione di lettura per i file di Excel. 2.3.3 Presentazioni di PowerPoint PowerPoint negli anni si é imposto come il più usato programma per la creazione di presentazioni e slide per Windows. Offre ampie opportunità di personalizzazione delle presentazioni e permette di incorporare in esse immagini e video. Fornisce inoltre anche una vasta gamma di animazioni da usare sul testo e sul contenuto delle presentazioni. Dal punto di vista tecnico i file di PowerPoint sono un perfetto esempio di file che sfruttano tutte le potenzialità dei file OLE2. Il file contiene due tipi di oggetti: gli atom e i container. I primi rappresentano le unità basilari dei contenuti del file, possono essere stream di file oppure atom contenenti le informazioni riguardo gli oggetti della presentazione (es. un’animazione, un suono, i colori del testo, . . . ). Il compito dei container non sono che gli storage precedentemente presentati, possono contenere altri container e/o altri atom. Un file PPT ha 5 container principali: Pictures, contiene gli stream delle immagini usate nella presentazione; Current User, contiene le informazioni dell’utente che sta accedendo al file; PowerPoint Document, contiene le in- 9 2.4 Analisi delle soluzioni possibili Nonostante il formato del file non sia stato stravolto, con il passare delle versioni sono stati aggiunti nuovi atom, che rappresentano in particolar modo nuove animazioni ed effetti di transizione fra diapositive. Queste modifiche sono documentate, ma non pubblicamente disponibili. 2.3.4 Database Access Il formato di Access esula dai nostri scopi perché ritenuto marginale nei confronti degli altri formati della suite Office. Inoltre per qualsiasi necessità di database il prodotto DocWeaver richiede la presenza di un database server (Microsoft SQL server, Postgresql, . . . ), che potrà essere usato per coprire anche le altre esigenze dell’azienda. 2.4 Analisi delle soluzioni possibili Il problema principale é l’anteprima e l’estrazione del testo di documenti della suite Microsoft Office, che come abbiamo visto precedentemente é ostica. Si é rivelato quindi prioritario trovare un sistema che permette l’anteprima e l’estrazione del testo da questo tipo di file. É seguito un lungo lavoro di ricerca e valutazione di progetti e librerie volti alla soluzione, anche solo parziale del problema. Una soluzione alternativa consiste nel utilizzo di uno strumento complesso che ricalca le funzioni di Microsoft Office. OpenOffice.org. Questa é stata la strada effettivamete intrapresa, nel capitolo ?? analizzeremo in dettaglio le caratteristiche di questo strumento. Ora invece si soffermeremo sulle soluzioni vagliate prima di effettuare la scelta su quella finale. 2.4.1 XBrowser XBrowser8 é un progetto che ha sviluppato un web browser, completamente in Java. Questo permette l’anteprima di file HTML, di immagini e di file di solo testo. Purtoppo il progetto risulta abbandonato dall’Agosto del 2001, questo comporta per l’azienda anche il dover mantenere e aggiungere anche una buona parte di lavoro per l’aggiornamento del prodotto stesso. 2.4.2 iecanvas iecanvas9 un piccolo progetto che punta all’inclusione all’interno di un programma Java, di una finestra del famoso browser Internet Explorer. Internet Explorer può caricare dei plug-in che gli permettono di aprire file della suite Office, tecnicamente questo sarebbe stato possibili anche per la finestra inclusa nel programma Java. Purtroppo anche questo progetto oltre a essere abbandonato dall’Ottobre del 2003, si é anche rivelato incapace di fornire l’anteprima di documenti Word o Excel. 2.4.3 Multivalent Questo progetto fornisce un gruppo di classi e interfacce in Java per l’anteprima e la lettura di svariati tipi di file, tra cui anche il formato PDF. Il progetto non gestendo i file in formato Word ed Excel é stato scartato anche per il complessa lavoro di integrazione necessaio. http://multivalent.sourceforge.net/ 8 http://xbrowser.sourceforge.net/ 10 2.4 Analisi delle soluzioni possibili 2.4.4 Mozilla Webclient Il progetto Mozilla Webclient 10 nasce con lo scopo di creare un set di API scritte in Java che forniscono vari aspetti della navigazione su internet, quali rendering dei contenuti del web, navigazione sul web, . . . Il progetto iniziato da Kirk Baker e Ian Wilkinson si chiamava RaptorCanvas. Dopo lo scioglimento dell’accordo tra AOL, Netscape e Sun, il progetto riparte sotto l’egida della sola Sun con il nome di Blackwood project e il cui scopo é quello di aumentare l’integrazione tra Java e Mozilla. Uno dei sotto-progetti é appunto WebClient che grazie al contibuto di Kirk, Ian e di tecnici di Sun Microsystem fornisce un’API per Java verso la webshell di Mozilla.11 Grazie a questo componente la realizzazione della parte di anteprima dedicata a immagini, HTML e testo piano é molto semplice. Inoltre la webshell di Mozilla mantiene le stesse propietà del browser. Se infatti gli si fa aprire un file che non può gestire internamente, controlla se esiste un plug-in che ne consente l’apertura. Grazie a questa feature é possibile aprire anche file Adobe Acrobat, nel caso sia stato installato sul anche il solo Acrobat Reader12 . Questa particolarità di Webclient estende le possibilità di anteprima del programma anche ai file non elencati nelle specifiche di progetto come i file Macromedia Flash (SWF). 2.4.5 Jakarta POI Il progetto POI, acronimo di “Poor Obfuscation Implementation”, é un progetto che punta alla creazione di una serie di librerie Java per la lettura e la scrittura di file creati con la suite Microsoft Office. L’acronimo del progetto si riferisce, in modo scherzoso, al tentativo di Microsoft di oscurare il codice dei propi formati di file. Il sistema di offuscamento dei file é stato però analizzato, scoperto e aggirato tramite tecniche di Reverse Engineering 13 . Il progetto POI é ospitato dalla open-source Apache Software Foundation 14 . La fondazione porta avanti molti progetti open-source, alcuni sviluppati in Java. Il gruppo di progetti Jakarta, raccoglie buona parte dei progetti in linguaggio Java della fondazione. Tutti i progetti open-source della fondazione Apache sono rilasciati sotto la Apache License, un tipo di licenza open-source che permette di includere il codice in software e progetti commerciali. Alcune parti del progetto sono state sviluppate con maggior inpegno e sono pertanto molto affidabili, tra queste le classi per la lettura degli oggetti OLE2, la lettura scrittura di file di Excel (XLS). Sono invece molto acerbe le componenti per la lettura scrittura di file di Word (DOC), dei file di PowerPoint (PPT) e delle propietà dei file (tra le propietà dei ci sono: autore, data di modifica, revisioni, . . . ). Poichè il progetto é incompleto non ´è stato possibile sceglierlo per la parte di estrazione del testo. 10 11 Capitolo 3 Un ingrediente della soluzione proposta: OpenOffice.org Qui parlo un po’di openoffice, spiego cosa fa come funziona, le api che mette a disposizione 3.1 Storia La storia di OpenOffice ha inizio nel 1994 quando StarDivison 1 pubblicò la prima versione di StarOffice, una suite di programmi per l’ufficio in diretta concorrenza con Microsoft Office. Fino alla versione 4.2 StarOffice si basava sulle librerie C++ multipiattaforma StarView. Durante l’Agosto del 1999 Sun Microsystem stava cercando una suite per l’ufficio per entrare in concorrenza con Microsoft, cosı̀ comprò da StarDivision il codice e i diritti su StarOffice per circa 70 milioni di dollari. Ben presto rilasciò la versione 5.2 di StarOffice gratuita per uso personale. Nel luglio del 2000 Sun rilascia buona parte del codice di StarOffice sotto le licenze LGPL2 e SISSL3 . Nasce cosı̀ OpenOffice, ereditando il codice di StarOffice e raccogliendo intorno a sè una attiva comunità di sviluppatori open source. OpenOffice si deve però scontrare prima con un problema di marchi registrati, cosı̀ il nome ufficiale del prodotto viene cambiato divenendo OpenOffice.org. Informalmente ci si riferisce al progetto con il nome di OpenOffice o con l’abbreviazione OOo. Nell’Ottobre del 2001 la build 638c diventa la prima beta pubblica, mentre la versione 1.0 viene rilasciata il primo Maggio 2002. Attualmente la versione stabile é la 1.5 rilasciata nel mese di Settembre di quest’anno, la quale probabilmente sarà l’ultima della serie 1.x. Dopo molti mesi di versioni beta, siamo vicini al rilascio della prima Release Candidate della versione 2.0 di OpenOffice. 3.2 Caratteristiche tecniche OpenOffice è formato da diversi sottoprogrammi che condividino un’ampia base di codice, permettendo di caricare più programmi della suite contemporaneamente senza appesantire eccessivamente il sistema. La suite é com1 2 Software house tedesca fondata nel 1986 da Marco Börries 3.2 Caratteristiche tecniche posto da 5 programmi principali e da alcuni elementi condivisi da tutti i programmi della suite: - Writer: programma di videoscrittura molto simile a Microsoft Word. Le sue qualità principali sono, oltre alla familiarità dei controlli rispetto alla controparte, la possibilità di aprire e salvare i file in formato DOC e PDF senza la necessità di alcun plugin. - Calc: permette di creare e gestire fogli di calcolo, grafici e tabelle nella massima semplicità, propio come in Microsoft Excel, ma va anche oltre permettendo di generare grafici in quasi totale autonomia e di salvare i risultati direttamente in formato PDF. - Impress: programma adatto alla creazione di presentazioni simile a Microsoft PowerPoint, con il vantaggio di poter esportare le presentazioni direttamente in formato Macromedia Flash, rendendo necessaria la sola presenza del plugin Flash (solitamente incluso nei browser) e non di tutto OpenOffice per visionare le presentazioni. - Draw: programma di grafica vettoriale con caratteristiche simili a quelle di CorelDRAW. Supporta inoltre la possibilità di facilitare la creazione di flow-chart. - Base: é un motore di database molto simile al Microsoft Access, supporta inoltre una maggior varietà di database da quelli Microsoft, come Access (JET) e le connessioni tramite ODBC, a quelli per piattaforme *NIX, come MySQL e Postgresql. Base diventerà parte della suite OpenOffice dalla versione 2.0 ed é attualmente in beta-testing. - Math: componente studiato per inserire negli altri documenti OpenOffice formule matematiche, pensato per poter esportare i risultati nel formato PDF. - Macro: semplice linguaggio di scripting che permette di creare degli shortcut per le operazioni più lunghe e noiose. Macro nasce dall’esperienza maturata da StarOffice Basic. - Quickstarter: piccolo programma che parte all’avvio del computer e permettendo di caricare più velocemente i programmi della suite OpenOffice quando richiesto. I formati usati per salvare i file di OpenOffice sono basati sull’XML e la compressione ZIP, che rende i file più leggeri del complesso formato binario di Office. Questa di mantenere i file della suite in solo testo ha permesso una maggiore interoperabilità degli stessi tra le varie piattaforme supportate, ma sopratutto ne ha favorito uno dei suoi aspetti chiave: l’essere multipiattaforma. Attualmente sono disponibili versioni per Microsoft Windows, GNU/Linux, Mac OS X, OS/2 ed altri sistemi UNIX-Like. La prossima versione 2.0 di OpenOffice mira a lanciare il nuovo formato OpenDocument, promosso da OASIS4 , ma anche una maggiore integrazione al look&feel e all’interoperabilità nei vari sistemi operativi supportati, usando sopratutto le widget grafiche messe a disposizione (Windows, Qt, GTK, Aqua, . . . ), e infine migliorare il tempo di lancio delle applicazioni e le possibilità di scripting. 13 3.3 Internals 3.3 Internals 3.4 Interazione con Java 14 Capitolo 4 Soluzioni Qui spiego come ho realizzato la soluzione al problema richiesto [nascondere la barra] [box di codice] 4.1 Strumenti e programmi necessari Per lo sviluppo dei due programmi richiesti sono stato usato un computer fornito dall’azienda. La macchina é un normale PC che monta un processore Intel Pentium 4 a 2,4GHz, 512 MB di ram, con installato Microsoft Windows XP service pack 2. Erano inoltre pre-installati i seguenti software utili per lo sviluppo del progetto: Microsoft Office XP professional, Microsoft Visual Studio .NET, Mozilla 1.7, Borland JBuilder 9 professional. Per la realizzazione é stato necessario installare OpenOffice.org 1.4 (in lingua inglese). Anche per far eseguire i programmi realizzati su altri computer é stato necessario installare OpenOffice, con l’accorgimento di abilitare l’opzione server. La procedura per abilitare questa funzione del programma é molto semplice ed é descritta in modo dettagliato nella guida dello sviluppatore di OpenOffice[3] nel capitolo 2 sezione 3.31 . JBuilder é un programma scritto in Java per programmare in Java. La prima versione risale al 1996. É molto apprezzato in ambito professionale e ha vinto per parecchi anni il premio come miglior IDE2 per la programmazione in Java. Per lo sviluppo degli applicativi é stato usato il solo JBuilder. 4.2 L’estrazione del testo La soluzione creata per l’estrazione del testo si compone di due parti: un client scritto in Java e un server OpenOffice. Il programma DocWeaver, su cui andrà integrato l’estrattore é composto di svariati client e un server centrale che gestisce i documenti. Questi vengono inviati dai client al server il quale poi li salva in una cartella detta filestore a cui solo lui ha accesso. Partendo da questi presupposti sappiamo che il server ha accesso in lettura e scrittura al filestore. Spesso quest’ultimo é una cartella all’interno del filesystem del server oppure una cartella condivisa, fisicamente su un’altro computer, tramite Samba, XFS, . . . Pertanto il server aprirà dei file che sono locali per la struttura del filesystem. É consigliato che sia il client che il server del mio applicativo siano posizionati sullo stesso computer per 4.2 L’estrazione del testo Come potete vedere dalla figura 4.1 il programma é molto semplice esteticamente, una barra che contiene l’indirizzo del file aperto, un bottone che consente tramite il selettore di file di Java di scegliere un file e il contenuto estratto un’area di testo. Il programma é altrettanto semplice internamente, per prima cosa é stato necessario includere in fase di compilazione le classi Java di OpenOffice per permettere al programma di poter usare gli oggetti, e funzioni messi a disposizione dal programma. Figura 4.1: Il programma demo ha estratto il testo da un file word. Una volta scelto il file da aprire, viene creata una connessione TCP al server OpenOffice (fig.4.2), questo é molto semplice dato che negli esempi forniti con il pacchetto SDK di OpenOffice é uno dei primi elementi trattati. Una volta che il client si collega al server é pronto per richieder l’apertura del file. Se l’operazione ha avuto successo restituisce un oggetto XComponent, che purtoppo indica solo che il file é stato aperto senza alcun rifermento al tipo di file con cui stiamo trattando. // This connection string to connect the office String sConnectionString = "uno:socket,host=192.168.1.20,port=8100; urp;StarOffice.NamingService"; MultiServiceFactory xMSF = null; try { xMSF = connect(sConnectionString); } catch (Exception ea) { ea.printStackTrace(System.out); return; } Figura 4.2: Codice per la connessione a un server OpenOffice Per capire se é stato aperto un file di Excel o un documento di testo é stato usato un sitema semplice, per esclusione tramite dei cast dell’oggetto XComponent é possibile risalire al tipo di documento (fig.4.3). Se non é 16 4.3 L’anteprima di documenti che sfrutta le capacità di OpenOffice all’interno di Java, mentre per problemi legati alla natura dei file di Excel si é ricorsi ad un approccio più creativo. OpenOffice una volta aperto il documento di testo lo rappresenta attraverso un insieme di paragrafi parole e caratteri. L’oggetto che rappresenta un paragrafo fornisce un metodo per leggere e modificare il testo dell’intero paragrafo. L’operazione di estrazione si limita quindi ad accedere in modo sequenziale ai paragrafi estraendo il testo, quando presente, e appendendolo ad una stringa. Quando si giunge alla fine del documento sarà sufficiente ritornare la stringa (fig.4.4). Il codice é stato prodotto velocemente grazie all’uso degli esempi e dei tutorial forniti nel SDK di OpenOffice. L’estrazione del testo da fogli di calcolo invece é stata difficoltosa. Un foglio di calcolo é infatti strutturato tramite celle, queste sono identificate tramite una griglia di righe e colonne. Questa griglia é di dimensioni consistenti: 32.000 righe e altrettante colonne. Nonostante la gran mole di documentazione disponibile sull’organizzazione interna degli oggetti di OpenOffice non é stato possibile rintracciare in quali parametri é memorizzato il numero di righe e colonne effettivamente usato. La documentazione del SDK di OpenOffice mostra alcuni esempi di salvataggio ed esportazione di un file di Excel tramite codice. Tra i vari formati di esportazione disponibili c’é anche un formato HTML. I file esportati in questo formati sono formati da solo testo formattato tramite tag HTML, inoltre viene esportato tutto il contenuto di tutti i fogli di calcolo presenti nel file originale. La soluzione adottata prevede di esportare il file in un formato più semplice da gestire in un file di appoggio, accedere al file esportato caricandolo in un stringa e ripulirlo dai tag HTML tramite uno StringTokenizer. 4.3 L’anteprima di documenti Il programma creato per mostrare l’anteprima di file prodotti con la suite Microsoft Office é molto semplice, ma necessita l’installazione di OpenOffice sul computer che lo vuole eseguire. Il funzionamento é semplice, si crea una finestra normalmente, tra i pannelli si aggiunge l’oggetto BasicOfficeBean, che può essere trovato nella sezione Java del SDK della Developer Guide di OpenOffice. Questo oggetto si limita a inserire all’interno dell’applicazione Java l’ambiente e la strumentazione di OpenOffice.Il problema di questa soluzione é la continua persenza a video delle barre delle opzioni legate a OpenOffice, che permettono di modificare il contenuto del file. Questo comportamento dell’applicativo é errato, infatti bisogna fornire un’anteprima del file e non una finestra per modificarlo. Negli esempi di codice forniti nel SDK é stata trovata una soluzione simile ma che nasconde tramite del codice alcune opzioni. Una ricerca nella documentazione ha mostrato una quantità impressionante di opzioni disponibili, protected Object getType(\emph{XComponent} xC) { XSpreadsheetDocument xSpreadsheetDocument = (XSpreadsheetDocument) UnoRuntime.queryInterface(XSpreadsheetDocument.class, xC); if (xSpreadsheetDocument!=null) return xSpreadsheetDocument; XTextDocument xTextDocument = (XTextDocument) UnoRuntime.queryInterface(XTextDocument.class, xC); if (xTextDocument!=null) return xTextDocument; 17 4.3 L’anteprima di documenti XText xText = xTextDocument.getText(); XEnumeration xParagraphEnumeration = null; XTextContent xTextElement = null; // create an enumeration access of all paragraphs of a document XEnumerationAccess xEnumerationAccess = (XEnumerationAccess) UnoRuntime.queryInterface(XEnumerationAccess.class, xText); xParagraphEnumeration = xEnumerationAccess.createEnumeration(); // Loop through all paragraphs of the document while (xParagraphEnumeration.hasMoreElements()) { xTextElement = (XTextContent) UnoRuntime.queryInterface(XTextContent.class, xParagraphEnumeration.nextElement()); XServiceInfo xServiceInfo = (XServiceInfo) UnoRuntime.queryInterface(XServiceInfo.class, xTextElement); // check ifs the current paragraph really a paragraph or an anchor of a frame or picture if (xServiceInfo.supportsService("com.sun.star.text.Paragraph")) { XTextRange xTextRange = xTextElement.getAnchor(); //System.out.println("This is a Paragraph"); to += xTextRange.getString(); } } Figura 4.4: Estrazione del testo tramite l’accesso hai paragrafi. XStorable xStorable = (XStorable) UnoRuntime.queryInterface(XStorable.class, xSpreadsheetDocument); // Set up the Overwrite and FilterName properties PropertyValue[] propertyvalue = new PropertyValue[2]; ; propertyvalue[0] = new PropertyValue(); propertyvalue[0].Name = "Overwrite"; propertyvalue[0].Value = new Boolean(true); propertyvalue[1] = new PropertyValue(); propertyvalue[1].Name = "FilterName"; propertyvalue[1].Value = "HTML (StarCalc)"; // Store the document xStorable.storeToURL(cAppFileUrl, propertyvalue); Figura 4.5: Esportazione di un file Excel in un file HTML. tra le quali alcune per limitare la libertà di azione dell’utente. Il codice in figura 4.6 mostra il codice necessario per nasconder la barra dei menu dal pannello caricato nell’applicazione. Per evitare di dover scrivere molte volte del codice simile, che aumenta la confusione nel codice e la possibilità di sbagliare durante le modifiche, é stata creata una classe per eseguire questo genere di operazioni ripetitive. La classe creata però non contiene direttamente i valori su cui poter agire, questi infatti sono troppo numerosi per stare in un’unica classe. Estendendo la classe sono state create sette sottoclassi che coprono ognuna delle specifiche aree delle funzioni offerte dal programma. La classe CommandGlobal contiene i comandi globali di OpenOffice (es. Save, OptionBarVisible, . . . ) mentre la classe CommandCalc contiene le opzioni per modificare l’aspetto e il funzionamento della parte legata alla gestione dei fogli di calcolo (es. EuroConverter, DrawChart, . . . ). OfficeCommand command; if (isDocumentLoaded() == true) { command = new OfficeCommand(SID_TOGGLEMENUBAR); command.appendParameter("MenuBar", new Boolean(false)); command.execute(this); 18 4.3 L’anteprima di documenti officeBean.load(file.toURL().toString()); glob.setCommand("Save", false, this.officeBean); glob.setCommand("MenuBarVisible", false, this.officeBean); glob.setCommand("StatusBarVisible", false, this.officeBean); glob.setCommand("FunctionBarVisible", false, this.officeBean); glob.setCommand("CommonTaskBarVisible", false, this.officeBean); glob.setCommand("NavigationBarVisible", false, this.officeBean); glob.setCommand("ObjectBarVisible", false, this.officeBean); glob.setCommand("OptionBarVisible", false, this.officeBean); glob.setCommand("ToolBarVisible", false, this.officeBean); officeBean.setVisible(true); Figura 4.7: Caricamento di un file nel componente OpenOffice e rimozione delle barre degli strumenti Grazie all’uso di queste classi la creazione del programma é stata molto semplice e si limita a poche righe di codice. L’interfaccia grafica ricalca quella del programma di estrazione del del testo, presenta la barra con l’indirizzo del file aperto, in pulsante per scegliere il file da aprire tramite le funzioni di selezione file di Java e il pannello con all’interno OpenOffice. Questo programma permette di effettuare anteprime di tutti i formati supportati da OpenOffice : Word, Excel, PowerPoint, HTML, RTF, i formati proprietari della suite, . . . 19 Capitolo 5 Risultati e Conclusioni Dopo aver svolto il lavoro di implementazione é necessario analizzare i risultati ottenuti dai programmi. Il tempo impiegato dai programmi é un buon metro di valutazione per applicativi dimostrativi come quelli realizzati. Oltre al lavoro di valutazione obbiettiva é necessario guardare oltre e iniziare a valutare nuove soluzioni al problema, che potranno essere realizzate con strumenti oggigiorno non ancora disponibili. 5.1 Risultati I programmi sono stati testati su tre computer, il computer su cui é stato sviluppato, un pc linux con un processore P4ht 2,4GHz cun 1 GB di RAM e un portatile con Intel Clereon 1.2 GHz con 256 MB di RAM. Il portatile ha installato Windows XP Home Edition con Service Pack 2, mentre il computer di sviluppo la versione Professional con Service Pack 2. La macchina linux invece ha installato un distribuzione Slackware 10.1 con kernel 2.6.11.10 ricompilato per supportare la RAM. I primi due computer non hanno avuto problemi ad eseguire i due programmi con prestazioni simili e tempi di caricamento pressoché uguali. Il portatile invece ha avuto difficoltà ad eseguire i due programmi, questo perché la poca memoria disponibile nel sistema rallentava molto le operazioni di caricamento. Dopo questi test pertanto é consigliabile eseguire i programmi sucomputer dotati almeno di 512 MB di RAM, per evitare eccessivi rallentamenti durante il caricamento dei componenti necessari all’esecuzione. I programmi prodotti con JBuilder sono semplici e funzionali, questo per permettere una corretta valutazione delle reali prestazioni del codice che fa uso della componente OpenOffice.org. Come é possibile vedere nell’immagine 5.1 l’estrattore del testo si limita a mostrare il contenuto della stringa estratta a video. Questa non é era specificato nel testo della consegna, ma risulta utile per valutare il corretto funzionamento del programma. Nel caso in cui vengano integrati gli oggetti all’interno di un altro prodotto, i metodi a loro associati ritornano delle stringhe. Il programma Anteprima, funziona anch’esso molto bene, ma mantiene una particolarità: nel pannello presentato all’interno della finestra Java gli strumenti presenti rispecchiano il tipo di file aperto. Come é possibile vedere in figura 5.2 i documenti di testo presentano il classico righello con le dimensioni della pagina. Nel caso di file di Excel rimane visibile la barra che 5.1 Risultati Figura 5.1: L’estrattore del testo visualizza il testo estratto da un riassunto. schermo. Figura 5.2: L’anteprima di un file di Word grazie ad OpenOffice. Per valutare l’efficenza dei due programmidi prova, é stato misurato il tempo necessario per eseguire le operazioni di anteprima ed estrazione del testo. Queste misurazioni sono state effettuate tramite una piccola classe cronometro che calcola il tempo passato tramite l’orologio di sistema. Le misurazioni pertanto sono da ritenersi sperimentali e strettamente dipendenti dal sistema operativo e dal numero di processi attivi durante l’esecuzione dei test. Come é possibile osservare nelle seguenti tabelle il programma Anteprima, ha bisogno di caricare l’interfaccia grafica di OpenOffice all’apertura del primo file della sessione. Questa operazione é in genere abbastanza laboriosa 21 5.1 Risultati 22 [todo]Tabella di word Tabella 5.1: Tempi di anteprima di file Word. il tempo necessario a visualizzare l’anteprima di un file di word dipende dalla lunghezza del testo e dalle dimensioni del file. Fattore da non escludere é la complessità del file, molte immagini, grafici, ed elementi complessi rallentano l’anteprima dei file. I file usati come bozze sono anche ricchi di testo aggiuntivo dovuto al salvataggio progressivo del file, come spiegato nella sezione [todo riferimento]. [todo]Tabella di Excel Tabella 5.2: Tempi di anteprima di file Ecel. Anche nei file di Excel la dimensione e il numero di celle presenti nel file sono elementi che determinano la performance delle operazioni di anteprima. Ma l’elemento che forse più ne penalizza le performance é la quantità di formattazione presente all’interno delle celle. Questa più é complessa maggior tempo richiede per una corretta visualizzazione dei file. [todo]Tabella di powerpoint Tabella 5.3: Tempi di anteprima di file Powerpoint. Per l’anteprima le presentazioni di PowerPoint é molto importante il numero di slide che fanno parte della presentazione. Per ognuna di esse infatti viene generata una anteprima al volo e mantenuta in memoria in attesa che venga visualizzata. Altri file inclusi nella presentazione, quali musiche, immagini, grafici, non rallentano molto l’apertura perché vengono caricati solo quando effettivamente necessari. Gli effetti tra le slide vengono usati solo durante la visualizzazione della presentazione a pieno schermo e durante il processo di anteprima vengono ignorati. le prestazioni dell’estrattore del testo come é possibile vedere dalla tabella [todo riferimento] sono molto buone su file di dimensioni contenute. Man mano che la dimensione del file aumenta anche il tempo di esecuzione della funzione di estrazione. Questa non è propiamente una pecca poiché l’estrazione del testo e la sua successiva immissione all’interno della base di dati non necessita del un response time necessario per un’interfaccia grafica. 5.2 Sviluppi futuri [todo]Tabelle di estrazione del testo Tabella 5.4: Le performance dell’estrattore del testo. 5.2 Sviluppi futuri Il lavoro svolto all’interno dell’azienda, tramite la realizzazione dei due programmi demo, si é rivelato molto utile. Ha permesso di conoscere prodotti e soluzioni potenti per risolvere il problema. I programmi demo richiedono comunque delle modifiche, atte sopratutto a migliorarne le prestazioni. All’interno della classe che gestisce i comandi settabili all’interno del pannello di OpenOffice, visto nel paragrafo [todo ref], andrebbero migliorati gli algoritmi di ricerca delle chiavi. L’estrattore invece ha bisogno di un nuovo set di codice per gestire l’estrazione del testo dai file PowerPoint, negli algoritmi di estrazione andrebbe rivista il sistema di allocazione dello spazio delle stringhe che può portare a un sovraccarico del sistema, con relativo rallentamento delle altre applicazioni ospiti. Inoltre il rapido sviluppo della suite OpenOffice ha portato molte novità all’interno del panorama futuro delle applicazioni d’ufficio. La prossima release di OpenOffice, la 2.0, promette un nuovo standard per il salvataggio dei file. Il nuovo formato, chiamato OpenDocument, é basato su file XML1 compressi. Il nuovo formato promette una maggiore interoperabilità tra le varie applicazioni che ne faranno uso. Lo standard é promosso da OASIS (Organization for the Advancement of Structured Information Standards), un’organizzazione che promuove standard aperti. Recentemente lo standard é stato sottoposto all’International Organization for Standardization (ISO) per far diventare OpenDocument uno standard ISO/IEC. Gli sforzi di OASIS per rendere OpenDocument il formato standard per la prossima genereazione di applicativi per l’ufficio rischiano di essere nulli se Microsoft non includerà il supporto a tale formato nella prossima versione della sua suite. Infatti, nonostante faccia parte del consorzio OASIS, ha già annunciato che nel nuovo Office 12, previsto per il prossimo anno, il formato di default per salvare i file sarà basato sulle specifiche WordprocessingML, SpreadsheetML e altri formati basati su XML. La comunità open-source é molto scettica rispetto ai nuovi formati di Office. Nonostante infatti le specifiche sono state pubblicate dalla stessa Microsoft, molti temono che il formato non sia ancora completo, cosa che potrebbe a portare a modifiche in corso d’opera. Il tipo di licenza utilizzato da Microsoft é incompatibile con le licenze usate solitamente da progetti open-source come la GPL, infine sono state usate alcune licenze Microsoft all’interno del formato che minano la possibilità di ottenere implementazioni di terze parti. WordML e i nuovi formati di Office 12 sono molto simili allo standard OpenDocument, infatti ambedue usano dei file XML comepressi tramite algoritmi di compressione ZIP. La release della nuova versione di OpenOffice é molto importante perché permetterà di installare all’interno dei browser prodotti da Mozilla Foundation un plug-in che permetterà di aprire i documenti supportati dalla suite nella finestra del browser stesso. Questo plug-in permetterà di ottenere un effetto simile a quello offerto da Internet Explorer insieme ad Microsoft Office. Grazie a questo plug-in la soluzione al problema di anteprima può essere risolto tramite il solo uso di WebClient, il cui funzionamento abbiamo illustrato nella sezione [todo ref]. Infatti sarà il componente di WebCliente 23 5.3 Conclusioni 5.3 Conclusioni Quasi, ma non prorio, l’intro al passato. 24 5.3 Conclusioni Figura 5.3: La barra dei file di Excel rimane visibile per mostrare il reale contenuto della celle. Figura 5.4: Tramite i pulsanti in alto a destra é possibile par partire la presentazione delle slide. 25 Bibliografia [1] Irpe Presentazione di DocWeaver. Irpe, 19-Set-2005. [2] Wikipedia Wikipedia. Wikipedia, http://www.wikipedia.org [3] OpenOffice.Org Developer’s Guide. OpenOffice.org, http://api. openoffice.org/DevelopersGuide/DevelopersGuide.html, 26-Aug-2003. [4] Java Sun Developer Network. Sun Microsystem http://java.sun. com/docs/books/ [5] OpenOffice.org http://www.openoffice.org. [6] Daniel Rentz Microsoft Compound Document File Format OpenOfice.org, 24-Mar-2005. http://sc.openoffice.org/compdocfileformat.pdf. [7] Daniel Rentz Microsoft Excel File Format OpenOfice.org, 24-Mar-2005. http://sc.openoffice.org/excelfileformat.pdf. [8] Microsoft Microsoft Word 97 Binary File Format Microsift, 21-Dec-1998. http://www.wotsit.org/download.asp?f=wword8. [9] Microsoft Microsoft PowerPoint 97 File Format SDK OpenOfice.org, 24-Mar-2005. http://www.wotsit.org/download.asp?f= powerpoint97.