tesi di laurea - e-lite: intelligent and interactive...

114
POLITECNICO DI TORINO Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica Tesi di Laurea Documentazione ed editoria elettronica mediante tecnologia PDF Relatori ing. Fulvio Corno ing. Maurizio Rebaudengo Candidati Daniele Berto Iacopo Ghisio Marzo 2001

Upload: vonga

Post on 16-Feb-2019

218 views

Category:

Documents


0 download

TRANSCRIPT

POLITECNICO DI TORINO Facoltà di Ingegneria

Corso di Laurea in Ingegneria Informatica

Tesi di Laurea

Documentazione ed editoria elettronica mediante tecnologia PDF

Relatori ing. Fulvio Corno ing. Maurizio Rebaudengo

Candidati Daniele Berto Iacopo Ghisio

Marzo 2001

I

Sommario

Lo studio svolto nella tesi è orientato alla gestione automatica di documentazione elettronica di un sito di commercio di e-commerce. Il punto chiave, dopo aver raccolto il materiale elettronico, consiste nell’esecuzione di elaborazioni riguardanti la formattazione e la protezione di documenti; tra i vari standard utilizzabili si è scelto di lavorare con il formato PDF, poichè rispetta vincoli di prestazioni, modificabilità e protezione necessari a garantire un prodotto sicuro ed ottenibile con elaborazioni sufficientemente veloci. Non è trascurabile il fatto che l’applicativo che permette la visualizzazione dei documenti, da parte degli utenti, è disponibile gratuitamente. In un’ottica di gestione automatizzata del processo di generazione di prodotti commerciabili si è progettato il sistema in modo tale da ridurre al minimo l’intervento da parte di un operatore, mantenendo la flessibilità; alcuni problemi di dimensioni delle pagine e di formato iniziale dei documenti rappresentano casi particolari trattati. L’architettura del sistema, sviluppata come client-server, viene divisa in due parti principali: la parte off-line, caratterizzante le operazioni eseguite in modo statico e con bassi requisiti di prestazioni, e la parte on-line, che gestisce le richieste dinamiche provenienti dalla rete, che richiede alte prestazioni ed efficienza, i quanto non si deve far attendere troppo tempo un cliente pagante. La tesi e’ descritta in 8 capitoli.

Sommario II

Il primo capitolo contiene l’introduzione e descrive gli obbiettivi e le soluzioni adottate all’interno del lavoro. Il secondo capitolo descrive i concetti generali del commercio elettronico ed i problemi ad esso relativi. Il terzo capitolo riporta le nozioni fondamentali e le tecnologie riguardanti l’editoria elettronica. Il quarto capitolo riguarda i formati elettronici, ponendo maggiore attenzione alla descrizione del formato PDF®. Il quinto capitolo descrive gli applicativi software che supportano il formato PDF® e le loro principali caratteristiche. Il sesto capitolo riporta l’architettura e la struttura dell’applicazione di commercio elettronico sviluppata. Il settimo capitolo contiene una dettagliata descrizione dei problemi e delle soluzioni tecniche adattate nello sviluppo del progetto. L’ottavo capitolo sintetizza le conclusioni, i possibili sviluppi ed i risultati ottenuti dal progetto.

1

Capitolo 1

Introduzione

Negli ultimi anni lo sviluppo tecnologico ha messo a disposizione una finestra sul mondo, accessibile grazie ad Internet. Dapprima si concretizzò la possibilità di comunicazione e scambio dati in qualunque luogo servito da una linea telefonica, successivamente i servizi Internet sfruttarono anche connessioni satellitari e canali dedicati ad alta velocità. Si potrà sfruttare qualunque risorsa elettronica grazie alla rete delle reti; per sua natura programmi e dati sono facilmente distribuibili attraverso le linee digitali e ciò ha permesso lo sviluppo di un commercio, sia legale che illegale, di tali risorse. Con timore si affacciano sul mercato aziende e negozi virtuali che distribuiscono servizi di natura non digitale; il principio è simile al caso di beni interamente in formato elettronico ma richiede appoggio di risorse materiali. L’acquisto di un oggetto fisico piuttosto che elettronico comporta oneri materiali di spedizione e prolungamento dei tempi medi di attesa causati dall’utilizzo di mezzi terrestri. Se per esempio volessimo acquistare un CD musicale potremmo semplicemente visitare un sito apposito e ordinare il prodotto; tale richiesta potrebbe essere soddisfatta in qualche giorno a costi di trasporto elevati. La musica ora grazie ai nuovi metodi di compressione viene distribuita tramite la rete in pochi minuti. Lo scopo della tesi è di sviluppare un’applicazione in grado di rendere commerciabile un gruppo di oggetti, di natura strettamente materiale ed adatti alla conversione in formato elettronico, quali i libri. Essi infatti possono essere facilmente convertiti in uno dei formati digitali oggi esistenti ed in seguito venduti o scambiati annullando praticamente i costi di spedizione. Dopo un’attenta analisi dei prodotti in commercio e delle possibilità da essi offerte si è concretizzata la possibilità di manipolare dei documenti in formato elettronico. Si può

Capitolo 1 ~ Introduzione 2

pensare di trasformare un libro stampato in un file tramite l’ausilio di uno scanner, oppure partire da un documento già in formato digitale, ed automatizzare il processo di gestione e formattazione del testo ivi contenuto in modo da ottenere dei prodotti commerciabili, distribuibili e visionabili tramite la rete.

1.1 Obiettivi e Soluzioni Nell’ottica di utilizzare le nuove tecnologie come ausilio allo studio ed alla reperibilità di materiale diddattico, si è pensato di orientare il progetto di ricerca nell’ambito della raccolta e della distribuzione di appunti universitari. Certamente bisogna garantire la facilità di reperire informazioni riguardanti l’argomento desiderato, la libertà di consultare la documentazione e tutelare l’autore degli scritti. Inoltre si deve sopperire al fatto che solitamente gli appunti universitari sono fogli sparsi scritti a mano che quindi devono essere convertiti in formato digitale per la distribuzione remota agli interessati. Tale procedura non dovrà essere complicata e lunga, in modo da non pesare troppo sul costo dell’elaborato. Si è deciso di privilegiare l’aspetto di automazione del progetto per alleggerire il lavoro umano nella catena di produzione dei prodotti finali, garantendo la personalizzabilità dei risultati in base alle richieste. I passi da compiere in questo procedimento vanno dalla mera conversione da carta a digitale utilizzando strumenti ottici quali gli scanner all’impaginazione del documento fino alla protezione dello stesso da accessi indesiderati. La copia grezza ottenuta dal primo passaggio dovrà essere impaginata secondo certe regole per rendere il prodotto simile ad un libro e facilmente consultabile creando così un documento master che rappresenta l’essenza digitale della copia cartacea. Per sopperire alle esigenze di copyright si elaborerà ulteriormente il documento prima della spedizione al singolo studente interessato; egli potrà visionare la buona fattura del prodotto, prima del pagamento, sia in termini di editoria che di contenuti e valutarne così l’acquisto. La realizzazione di tali passi viene resa semi automatica dall’integrazione di ambienti esistenti con applicazioni scritte ad hoc alleggerendo così le competenze di chi gestirà l’intera struttura.

1.2 Risultati La scelta della soluzione implementata è stata condizionata dai prodotti in commercio, dalla facilità di utilizzo di questi e la loro integrabilità con sistemi esterni appropriati. Punto critico della scelta è stata la possibilità di reperire informazioni tecniche sulle applicazioni esistenti per poterle adattare alle esigenze di editoria elettronica e di automazione. Dopo aver pesato le risposte a tali quesiti si è optato per la tecnologia PDF (Portable Document Format), che fornisce ambienti di utilizzo multipiattaforma

Capitolo 1 ~ Introduzione 3

disponibili gratuitamente in versioni sempre aggiornate. Tale formato oltre ad essere portabile ha una struttura robusta che si adatta bene alle esigenze della rete. La società Adobe®, che ha ideato questo formato elettronico, fornisce agli sviluppatori un insieme di librerie SDK (Software Development Kit) grazie alle quali si è potuto personalizzare ed ampliare le possibilità offerte dagli ambienti di sviluppo esistenti. Si è scelto di lavorare con il sistema operativo Windows® vista la diffusione di tale piattaforma; l’ambiente principale utilizzato è Acrobat® le cui funzioni base sono state opportunamente estese sviluppando il progetto come plug-in, ovvero un applicativo interno all’ambiente. Il plug-in è stato scritto in linguaggio C coerentemente con l’architettura di Acrobat SDK®, che fornisce librerie di funzioni necessarie alla gestione e manipolazione delle strutture dati e degli oggetti che compongono un documento PDF. Le funzionalità aggiunte hanno tralasciato il passaggio da formato cartaceo a digitale poichè non supportato nella libreria fornita e comunque già presente nell’ambiente di utilizzo; d’altro canto si è preferito aggiungere procedure di gestione relative alla formattazione di un documento grezzo, senza informazioni aggiuntive, che permettessero l’automatizzazione del processo. Esse comprendono il passaggio al documento master in cui viene aggiunta una copertina, informazioni riguardo agli autori dell’originale, un titolo ed un codice identificativo del documento. A causa della possibile imperfezione dei documenti grezzi si è prevista una funzionalità per eliminare alcune parti grafiche da ogni pagina. Altre funzioni sono relative alla creazione di documenti dimostrativi con un minor numero di pagine, per permettere la visione dell’elaborato a chi è interessato, oppure di copie distribuibili a scopo pubblicitario. A livello di sicurezza, si è voluto proteggere il prodotto distribuibile in modo da evitare la modifica sia accidentale che maliziosa dei contenuti; per questo motivo si prevede anche la possibilità di proteggere in modo diversificato i vari documenti. Grazie allo sviluppo di un tool che permette la creazione e la modifica di copertine utilizzabili nel processo automatico, si sono risolti vari problemi di adattabilità e di gestione. Altre caratteristiche da tenere presenti nella progettazione dell’applicativo prescindono dal documento e riguardano la gestione del sito che offre i servizi di commercio elettronico; in quest’ottica si offre una funzionalità di estrazione del testo contenuto nei vari appunti, in modo tale da poter essere utilizzato per alimentare un motore di ricerca interno. Bisogna specificare che purtroppo Acrobat® non è molto semplice da utilizzare per una mente digiuna di applicativi di questo genere; per questo motivo si è deciso di creare un’interfaccia che permettesse a chiunque di utilizzare le applicazioni sviluppate. Grazie alla semplicità di Visual Basic ed alla integrabilità di Acrobat® con tale sistema si è

Capitolo 1 ~ Introduzione 4

costruita una maschera che permettesse con semplici comandi di accedere alle potenzialità precedentemente descritte. Inoltre guardando al futuro si è capito che, per permettere l’utilizzo on-demand di alcune delle applicazioni sviluppate quando un utente decide di acquistare un prodotto, si sarebbero dovute aggiungere delle funzionalità all’ambiente Acrobat® che permettessero di interpretare dei comandi non provenienti da un utente alla console. Per questo motivo utilizzando tecniche di programmazione multi-thread è stato costruito all’interno di Acrobat® un server sempre attivo che ascolta richieste di creazione di documenti ad hoc; in questo modo più utenti contemporaneamente possono richiedere i servizi utilizzando un’interfaccia ASP fornita dal web server.

5

Capitolo 2

I concetti generali del commercio

elettronico

Con l’appellativo “Commercio Elettronico” (e-Commerce) si identifica comunemente la possibilità di acquistare beni attraverso Internet. Tuttavia l’e-Commerce è un’attività articolata e complessa con obiettivi precisi. Esso non è quindi propriamente un servizio di Internet o di una qualsiasi rete telematica, ma nel suo insieme è un’attività umana "tradotta" in un linguaggio differente da quello "materiale". I vantaggi che ne emergono possono essere enormi e sono intriseci nel nuovo sistema. Le possibilità offerte sono talmente flessibili da aver permesso lo sviluppo che oggi vediamo sulla rete ed hanno anche trascinato l’economia verso nuove soluzioni.

2.1 E-Generation L’esplosione di questo fenomeno segna simbolicamente una tappa importante nell’evoluzione della società umana: il raggiungimento di un grado di sviluppo tecnologico tale da poter accogliere e gestire in un sistema virtuale un sistema reale. In questa trasposizione, con perfetta analogia, si hanno soggetti, regole, ordinamenti, servizi, strutture, prodotti e relazioni.

Capitolo 2 ~ I concetti generali del commercio elettronico 6

2.1.1 E-Business

L’e-Business esiste concettualmente da qualche anno e racchiude al suo interno tutte quelle attività come il commercio elettronico che possono essere svolte mediante infrastrutture informatiche. Le attività che allo stato attuale possono essere virtualizzate sono molteplici. L’e-Commerce si amplia verso i servizi finanziari nel virtual banking e può estendersi verso tutta la catena del valore che contraddistingue la nascita, la produzione, la distribuzione e vendita di un bene. Ancora, appartenenti all’e-Business troviamo:

• l’informazione • l’intrattenimento • la didattica,

tre settori molto promettenti in quanto veicolano beni immateriali particolarmente adatti alla virtualizzazione.

2.1.2 Definizione e tipi di E-Commerce

Vi sono diverse definizioni di commercio elettronico. Senza la pretesa di aggiungerne una nuova a quelle esistenti possiamo dire, sintetizzando quelle maggiormente accettate, che il commercio elettronico è costituito da operazioni che coinvolgono imprese e individui, mirate allo scambio di beni materiali o immateriali a cui è assegnato un valore, attraverso un’infrastruttura informatica o una rete di telecomunicazione. In generale il commercio elettronico si estrinseca attraverso lo scambio di informazione che può essere codificata in qualsiasi modo ed inserita in una procedura di acquisto che prevede una transazione economica. Le parti che partecipano ad un’operazione di commercio elettronico definiscono la tipologia di quest’ultimo. Non vi è un’unica forma di Commercio Elettronico, perché gli ambienti nei quali si svolge l’attività commerciale e i soggetti coinvolti possono avere natura diversa. L’offerta di una soluzione di Commercio Elettronico si può rivolgere al cliente finale, all’agente, alla filiale internazionale o al fornitore. È evidente che le esigenze da soddisfare dipendono in modo significativo dalle dinamiche commerciali e dalla tipologia dei soggetti che si vuole coinvolgere. Tale impostazione finisce anche per

Capitolo 2 ~ I concetti generali del commercio elettronico 7

influenzare la scelta degli strumenti tecnologici che un’azienda adotta per fare commercio online. Questa precisazione di porta a identificare quattro tipi fondamentali di Commercio Elettronico:

• Business to Business.

Nella categoria B-to-B (Business to Business) rientrano tutte quelle transazioni nelle quali i soggetti coinvolti siano due o più aziende. Tipicamente un’impresa potrebbe utilizzare la rete per inoltrare ordini ai propri fornitori, acquisire documentazione sui prodotti, ricevere pagamenti o effettuarne. Questa tipologia di E-Commerce è quella che, come si è detto, esiste da più anni.

• Business to Consumer.

La categoria B-to-C (Business to Consumer) comprende, invece, i processi di vendita al dettaglio. Pertanto i soggetti coinvolti sono l’azienda che offre i propri prodotti ed il consumatore finale. L’esplosione di questa tipologia di Commercio Elettronico ha coinciso con la capillare diffusione di Internet negli uffici, nelle case, nelle scuole. Se, da un lato, questo nuovo media ha permesso ad aziende di tutto il mondo di entrare in contatto diretto con consumatori altrimenti difficilmente raggiungibili, dall’altro, per i consumatori stessi, si è aperta la possibilità di avere accesso ad una offerta straordinariamente ampia di prodotti, stando comodamente seduti davanti al proprio computer.

• Consumer to Consumer.

Questa è una forma più recente di Commercio Elettronico, salita alla ribalta dell’attenzione e della popolarità grazie al forte sviluppo sulla Rete dei siti di aste online. Su questi siti gli utenti della Rete possono scambiare tra loro prodotti secondo il modello dell’asta.

• Intra-Business.

È questo il caso che coinvolge un’azienda con sedi distribuite sul territorio o un insieme di aziende appartenenti allo stesso gruppo. In tali situazioni le esigenze di scambio di beni e servizi all’interno delle unità della struttura possono essere soddisfatte attraverso la Rete ed essere accompagnate da un rendiconto economico. Le principali caratteristiche del commercio intra-aziendale sono molto simili a quelle del B-to-B con la restrizione che di norma il gruppo di soggetti coinvolti è rigorosamente chiuso, la classificazione dei prodotti è già data e la transazione economica passa in secondo piano (può essere eseguita a distanza di tempo, a consuntivo).

Capitolo 2 ~ I concetti generali del commercio elettronico 8

2.1.3 Obiettivi e vantaggi dell’ E-Commerce

L’ obiettivo principale dell’e-Commerce è di svincolare totalmente il mercato da fattori temporali e spaziali con le relative conseguenze. Il compratore non è più vincolato ad orari predefiniti e non si deve più preoccupare di raggiungere fisicamente il luogo dove avviene la vendita: può accedere in qualsiasi momento da casa propria o dall’ufficio teoricamente a qualsiasi bene. Il primo risultato è che il problema relativo alla disponibilità di un bene in funzione della copertura del territorio si risolve: Internet è un mondo senza confini la cui metrica non ammette la dimensione spaziale. L’acquirente che acquista attraverso Internet può accedere ad insiemi di informazioni impossibili da ottenere nel caso di commercio tradizionale e può avvalersi di servizi personalizzati e più confacenti alle proprie aspettative che si riflettono anche nell’assistenza pre e post-vendita. Inoltre l’acquirente ha la possibilità di monitorare e selezionare i prezzi più convenienti in assoluto in uno spettro di offerta amplissimo. A questi vantaggi per il compratore, specularmente, emergono vantaggi anche per il produttore/venditore di beni. Questi possono essere raggruppati sotto due categorie: la prima coinvolge la razionalizzazione dei processi tradizionali, la seconda introduce nuovi elementi di competizione. La nuova matrice dettata dai meccanismi dell’e-Commerce permette all’impresa di personalizzare sempre di più l’offerta grazie ad una maggiore conoscenza delle esigenze della propria clientela e dalla padronanza di processi produttivi più agili e flessibili. Tutto ciò produce un aumento di competitività ed una teorica riduzione dei prezzi all’utente finale. Infine, ma forse elemento più importante, l’e-Commerce riduce drasticamente il livello di ingresso nei vari mercati ridimensionando l’aspetto finanziario a favore di quello di marketing e di prodotto. In altre parole esso attenua drasticamente il livello di rischio nel raggiungere e operare in nuovi mercati.

Capitolo 2 ~ I concetti generali del commercio elettronico 9

2.2 Problemi relativi al commercio elettronico Non si vuole in questa sede scrivere un elogio a tale sistema di scambi, bensì presentarne obiettivamente vantaggi e svantaggi ed analizzare le problematiche relative all’avviamento di tale attività.

2.2.1 Software e sicurezza

Uno dei problemi più rilevanti riguarda il software da utilizzare e la sicurezza che esso garantisce. Ricordiamo che spesso sulla rete e sul server del sito in esame sono presenti informazioni riguardanti i clienti; bisogna quindi garantire riservatezza ed impossibilità di accessi non desiderati. Si richiede quindi software di gestione delle transazioni, sistemi operativi ed applicazioni fault tolerant inattaccabili da pirati informatici. Proprio per la difficile risoluzione di questi problemi ancora non ci si fida completamente ad utilizzare la carta di credito come mezzo di pagamento attraverso la rete. Le soluzioni adottate sono molteplici e spaziano dal semplice pagamento al corriere, utilizzabile in caso di spedizione fisica di materiale, all’utilizzo di tessere prepagate che limitano i danni in caso di attacchi andati a buon fine, fino all’utilizzo di transazioni sicure con crittografia e firma digitale che si appoggiano direttamente alla banca del cliente.

2.2.2 Spedizioni ed affidabilità

Un altro punto critico relativo al suddetto discorso riguarda le spedizioni fisiche di beni materiali acquistati in rete; oggigiorno il ritmo di vita non è ancora così frenetico da impedire ai singoli individui di recarsi nei negozi e sopperire personalmente alle proprie necessità; considerata la lentezza delle spedizioni terrestri, la gente potrebbe rinunciare all’acquisto on-line orientandosi verso altre soluzioni. Bisogna anche considerare l’alto costo di tali spedizioni via terra per ottenere il bene acquistato in tempi brevi. Questi deterrenti non si presentano invece nel commercio di beni interamente digitali, come programmi e documentazione, che possono venire spediti grazie ai servizi internet. Un punto chiave è garantire affidabilità; a causa della vastità ed eterogeneità della rete, potrebbero sorgere, come già si ricorda, negozi virtuali fantasma dediti solo a rubare informazioni personali dei clienti e numeri validi di carte di credito. Chiaramente il requisito fondamentale di un negozio virtuale è guadagnarsi e mantenere la fiducia del cliente. La possibilità di muoversi su mercati globali e quindi di disporre di un gran numero di prodotti equivalenti tra cui scegliere, magari irreperibili nei negozi a causa di fattori

Capitolo 2 ~ I concetti generali del commercio elettronico 10

geografici o economici avversi, è il grande vantaggio del commercio elettronico; esso però deve avere requisiti di sicurezza ed affidabilità, superiori ad un esercizio di vecchia concezione, molto difficili da ottenere.

11

Capitolo 3

Editoria Elettronica

Mezzi di informazione che utilizzano supporti stampati ed in formato elettronico coesistono da svariati anni; dallo studio dell’andamento del mercato non sembra possibile che, a breve termine, ci siano sostanziali riduzioni dei volumi di stampa, benchè i ritmi di crescita dell’editoria elettronica siano in continuo aumento. Il formato elettronico non sembra a breve scadenza poter intaccare il ruolo primario di quello stampato, a causa di vantaggi intrinseci quali comodità di lettura e la trasportabilità. A fronte di questi punti di forza l’editoria elettronica contrappone altrettante peculiarità che per lo più interessano i contenuti ed i metodi di diffuzione. A causa dell’estrema semplicità di pubblicazione su Internet e WWW, recentemente sta assumendo consistenza il problema di certificazione della qualità e dell’identificazione della fonte di informazione. Quest’ultimo punto, con l’esplosione delle pubblicazioni su WWW, sta assumendo crescente importanza poichè ogni utente di Internet potrebbe essere un potenziale editore. Lo scenario dell’editoria on-line su Internet presenta tre possibili contesti di produzione:

• Editoria tradizionale

Rappresenta la maggior parte dell’editoria elettronica, dove un precedente prodotto gia esistente su supporto cartaceo tradizionale viene riprodotto in formato digitale.

• Organizzazioni intermediarie

Sono delle società il cui scopo è quello di realizzare servizi editoriali elettronici partendo da dati forniti da un editore tradizionale. Lo scopo è quello di realizzare

Capitolo 3 ~ Editoria Elettronica 12

dei prodotti sofisticati, tramite specifiche competenze tecniche e organizzative, evitando l’onere all’editore tradizionale.

• Editoria multimediale

Sono i nuovi soggetti che pensano al prodotto esclusivamente in funzione del supporto utilizzato, sfruttando completamente tutte le nuove capacità.

La vera differenza che separa questo genere di editoria da quella cartacea è l’ingegnerizzazione dei contenuti e del flusso di produzione.

3.1 Cenni storici: tecnologie editoriali L’era della stampa a livello di processo industriale iniziò con la creazione del tedesco Johann Gutemberg dell’omonimo torchio. La novità essenziale di questo sistema consisteva nell’utilizzare caratteri mobili nella costruzione della matrice di stampa, anzichè essere costituita da un unico modulo. Solo nel 1814 la macchina per la stampa di Koening apportò una prima sostanziale modifica utilizzando l’energia termica al posto della fatica umana. Nel 1866 la prima macchina rotativa (dal nome Walter) entrò in funzione nella tipografia del Times di Londra. La sua novità consisteva nell’utilizzare una matrice cilindrica per la stampa, in maniera da realizzare un processo continuo di riproduzione con muovimento rotatorio, enormemente più produttivo del precedente metodo. Nel 1886 la macchina denominata “linotypè” cambierà la maniera di comporre tipograficamente le pagine: il procedimento, totalmente manuale, di reperimento ed inserimento dei singoli caratteri diventa automatico (giustificazione automatica) mediante l’uso di una apposita tastiera. Il successivo passo è costituito dalla nascita della fotocomposizione intorno al 1950. In tale processo il tipografo agisce ancora su di una apposita tastiera che però, incide direttamente su una particolare pellicola usando un principio chimico-fotografico saltando il procedimento meccanico. Con ciò finisce l’età del piombo fuso e della “lavorazione a caldo” ed inizia l’era della “lavorazione a freddo”, in cui la composizione viene gestita sempre più tramite l’elaboratore elettronico. Oggi l’uso dell’informatica è stato esteso all’intero processo di produzione del giornale; si è così ottenuto il passaggio del modello produttivo da quello tipografico a quello redazionale. Questo significa cioè integrare la produzione in un unico flusso, ovvero non dover scrivere i pezzi giornalistici in redazione e quindi rivederli a posteriori per motivi di impaginazione in sede tipografica; ma creare il formato finale di impaginazione ed i relativi testi direttamente a partire dai giornalisti in redazione, in maniera interattiva ed autonoma.

Capitolo 3 ~ Editoria Elettronica 13

3.2 Il formato digitale e le nuove tecnologie La fornitura di servizi informativi on-line su Internet è iniziata negli Stati Uniti, con l’editoria telematica in varie forme nelle modalità e nei contenuti. Un primo livello di diffusione di editoria telematica è costituito tecnicamente dalle newsletter, ovvero e-mail diffuse periodicamente, a pagamento o meno, dall’editore ad una lista di utenti abbonati (mailing list); cambia così la modalità di diffusione: non è più l’informazione che viene effettivamente spedita all’utente registrato su iniziativa dell’editore, ma è l’utente che richiede i dati (in maniera registrata o meno) nei tempi e nei modi che risultano a lui più congeniali. La diffusione delle informazioni su Internet, nel modo descritto, tecnicamente può essere realizzata essenzialmente attraverso tre strumenti principali e cioè in ordine di creazione cronologica con:

• File Transfer Protocol

• Gopher

• World Wide Web

Si deve notare che i primi due vengono citati per completezza poichè ormai sono obsoleti; la pubblicazione tramite l’ultimo sistema permette di usufruire dei vantaggi dell’architettura WWW quali essenzialmente la multimedialità e la possibilità di interazione, si pensi ad esempio alle interrogazioni su di un archivio. Secondo Philip Barker, professore dell’Interactive System Research Group dell’Università di Tesside in Inghilterra, i principali limiti che può accusare l’editoria cartacea tradizionale rispetto a quella elettronica sono:

• la difficoltà di riproduzione

• i costi di diffusione

• l’impossibilità di condivisione di singole copie

• la difficoltà di aggiornamento

• l’ingombro fisico

• la fragilità del supporto

• la mancanza di reattività sui contenuti

• l’impossibilità di usare suoni ed animazioni

• l’incapacità di monitorare direttamente l’attività del lettore e di giudicarne il livello di comprensione

• l’impossibilità d’autoconfigurarsi rispetto all’utente.

Capitolo 3 ~ Editoria Elettronica 14

A fronte di questi limiti brillano i vantaggi dell’editoria elettronica che possono essere elencati essenzialmente in:

• multimedialità

• enorme durata nel tempo

• abbattimento dei costi di diffusione

• tempestività di diffusione per le informazioni on-line

• interattività

Nell’ultimo importante punto, ovvero la generica area che potremmo classificare come interattività, possiamo rintracciare tutte le funzionalità aggiuntive che può rendere l’informatica su una base informativa (ipertesti - ipermedia - interrogazioni - agenti intelligenti).

3.3 Passaggio da carta a digitale In generale per convertire un documento da formato cartaceo ad elettronico lo si copia manualmente tramite la tastiera del pc, un lavoro lungo e noioso, oppure più agilmente si trasferisce un’immagine che rappresenta la sorgente dei dati, tramite uno scanner ottico. Si deve considerare che quest’ultimo, pur essendo un procedimento più breve del precedente, presenta degli inconvenienti come il bilanciamento della risoluzione dell’immagine ed il numero di livelli di grigio con la quantità di memoria utilizzata e la qualità dell’immagine trasferita. Se si tiene conto della risoluzione media desiderata e si considerano sia la lettura del testo a video sia la stampa si nota che una risoluzione di 300 dpi è sufficiente per leggere bene un documento da un monitor mentre non lo è se si desidera stamparlo; aumentando la risoluzione a 1200 dpi migliora notevolmente la qualità di stampa a scapito di maggiore occupazione di risorse. Scansioni di pagine stampate possono essere sottoposte a tre o quattro filtraggi spaziali durante l’elaborazione, ma soltanto con prove ripetute si possono evitare fastidiosi pattern di Moirè, ne sono un esempio le bitmap che contengono sia immagini che testo. Un’altra considerazione importante riguarda il formato JPEG che, pur fornendo elevate percentuali di compressione riducendo le componenti ad alta frequenza (i particolari), non dovrebbe essere utilizzato su bitmap contenenti testo e grafica poichè si rischia di rendere illeggibili le parole. Non si vuole comunque approfondire tale argomento in quanto già ampiamente trattato da vari applicativi commerciali.

Capitolo 3 ~ Editoria Elettronica 15

3.4 Copyright Il problema aperto per eccellenza rimane la concezione di copyright, in particolare nel campo dell’informazione on-line, facilmente duplicabile e ridistibuibile. Il maggiore ostacolo al pieno sviluppo dell’editoria elettronica risiede nella difficoltà di individuare criteri di tutela della paternità intellettuale di opere circolanti sulla rete. A differenza di quanto avviene con le pubblicazioni a stampa, nell’ambiente digitale l’informazione può essere catturata, manipolata e alterata senza che di ciò resti traccia. Il mondo di Internet, riguardo al copyright, è assai incerto, sfumato, ricco di contraddizioni e finora non si sono registrati precisi interventi legislativi in difesa di un patrimonio culturale così vasto e importante. Ma se è vero che "copiare" nell’era digitale è più veloce, più economico e più facile che in passato, è altresì vero che autori ed editori possono esercitare un ruolo "educativo", comunicando via rete con i propri interlocutori ed indicando quale è il possibile impiego dei materiali messi a disposizione: si viene così a stipulare una sorta di contratto morale che permette di incentivare le prospettive dell’editoria elettronica evitando un uso scorretto dei documenti.

16

Capitolo 4

Formati elettronici

Si vedrà ora una panoramica che comprende i formati elettronici più diffusi per immagazzinare ed elaborare testi. Si cercherà di individuare tra questi il più adatto ad essere modificato sotto certe condizioni, protetto da accessi maliziosi e utilizzabile con applicativi disponibili gratuitamente per il pubblico. I criteri su cui si baserà la scelta del formato riguardano soprattutto la reperibilità di documentazione, la semplicità di utilizzo nell’ottica di gestire la formattazione e le garanzie di protezione.

4.1 Doc Tra i vari tipi di file utilizzabili per il progetto certamente emerge il “doc” di Microsoft Word. È uno dei più diffusi grazie alla semplicità di utilizzo dell’ambiente Word in aggiunta ai buoni risultati ottenibili con poco sforzo. Permette una semplice interazione tra utente e documento digitale anche articolato su più file. Nasce nell’ambiente proprietario Office ma per il suo ampio utilizzo viene supportato anche da altri sistemi operativi; per questo motivo possono sorgere problemi di compatibilità tra sistemi diversi. Non offre un buon sistema di protezione, sia a livello di modificabilità dei contenuti, sia per quanto riguarda la sicurezza. Non si è voluto optare per tale formato a causa sia dell’impossibilità di reperire un ambiente di sviluppo utile all’analisi ed alla modifica dei documenti relativi sia dell’obbligo di utilizzare, in ambiente Windows, applicativi non disponibili gratuitamente.

Capitolo 4 ~ Formati elettronici 17

4.2 Ps È nato come linguaggio di descrizione di un documento e viene direttamente interpretato dalle stampanti laser. La rigidità implementativa dei documenti scritti in questo formato non ne permette una facile integrabilità in un ambiente automatico di sviluppo di elaborati orientati al commercio elettronico. Per questo motivo non esiste un applicativo che genera Poscript ma è il risultato di un’elaborazione su testi di altro tipo. Inoltre un file ps non permette la gestione efficiente di singole parti del documento.

4.3 Html Uno dei formati maggiormente diffuso è certamente l’HTML (Hyper Text Markup Language) impiegato per la stesura delle pagine internet. Il motivo della diffusione si deve ricercare nella sua semplicità di utilizzo. Si deve tenere presente, oltre alle limitazioni che riguardano la sicurezza, in questo caso completamente assente, anche il fatto che la sua incredibile facilità d’uso è dovuta alla mancanza di un gran numero di stili; per esempio i tag html che modificano il corpo del carattere sono solo sei ed inoltre alcuni di essi creano caratteri troppo grandi ed inutilizzabili per applicazioni di editoria un poco complesse. Mancano gli stili utilizzati per le diverse tipologie di paragrafo, i simboli greci e matematici indispensabili negli scritti tecnici.

4.4 PDF Il formato PDF (Portable Document Format) è stato progettato per l’interscambio di documenti in modo che il ricevente veda esattamente il documento come è stato creato indipendentemente da diverse elaborazioni fatte su di esso. La principale differenza con gli altri formati è che il PDF è concepito come un formato di descrizione delle pagine; ne risulta che ogni pagina contiene le informazioni utili alla visualizzazione e può essere isolata dalle altre. Il PDF viene generato dal PostScript ma non ne contiene la complessità. Esso è progettato con buone caratteristiche di sicurezza e crittografia; è inoltre disponibile un software freeware che permette la lettura di tale tipo di documenti. Dopo aver analizzato le caratteristiche dei formati presentati si è deciso di utilizzare quest’ultimo nel progetto. Entriamo ora più nel dettaglio.

4.4.1 Caratteristiche del formato PDF

Per valutare le potenzialità del PDF si devono prendere in considerazione diversi aspetti legati sia alle caratteristiche di alto livello, visibili agli utenti finali, sia a quelle di basso

Capitolo 4 ~ Formati elettronici 18

livello, più strettamente riguardanti gli aspetti implementativi del formato stesso e dei file che lo utilizzano. Si possono quindi distinguere:

• Adobe Imaging Model

È la rappresentazione grafica e testuale utilizzata, che coincide con quella usata dal linguaggio PostScript. Ne risulta una divisione in pagine nelle quali vengono inseriti elementi di varia natura, che possono essere caratteri, regioni definite tramite combinazioni di righe e curve, o immagini in formato digitale. Ogni immagine può essere mascherata in modo da renderne visibile soltanto una parte. Inizialmente una pagina viene descritta completamente vuota, successivamente vengono aggiunti dei marker che delimitano sezioni di pagina; ogni marker può essere sovrapposto ad altri limitandone la visibilità; sono simili a quelli utilizzati nel Postscript ma non essendo il PDF un linguaggio di programmazione viene esclusa la possibilità di utilizzare procedure, variabili e strutture di controllo. Viene migliorata l’efficienza a scapito della flessibilità definendo un set di operazioni ad alto livello implementate direttamente in codice macchina e non in Postscript rendendo più veloce la visualizzazione e la stampa delle pagine.

• Portabilità

Un PDF è un file binario in cui viene utilizzato l’intero set di caratteri a 8 bit. Sfortunatamente alcune applicazioni usano un set di caratteri stampabili a 7 bit, come per esempio alcuni programmi di posta, e non garantiscono la corretta interpretazione di certi caratteri come i fine linea. Per garantire l’integrità dei file PDF li si deve trattare come i file binari; per fare ciò si inseriscono caratteri con codice ASCII maggiore di 127 come header iniziale.

• Compressione

Per ridurre le dimensioni del file, il formato PDF supporta molti standard di compressione:

o JPEG per immagini a colori o scala di grigio

o CCITT Gruppo 3 e 4, LZW (Lempel-Ziv-Welch) e compressione Run Lenght per immagini monocromatiche

o LZW e compressione lineare di testo e immagini indicizzate

Usando la compressione JPEG si ottiene un fattore di compressione maggiore di 10. L’effettiva compressione delle immagini monocromatiche dipende dal filtro utilizzato e dalle proprietà dell’immagine, normalmente si hanno rapporti che vanno da 2:1 a 8:1. Le compressioni lineari e LZW del testo raggiungono approssimativamente un rapporto di 2:1.

Capitolo 4 ~ Formati elettronici 19

Tutti questi metodi di compressione producono dati binari che possono essere codificati in ASCII base 85 per mantenerne la portabilità.

• Font Independence

L’utilizzo dei font è un punto fondamentale nello scambio di documenti. Generalmente chi riceve il file dovrebbe avere gli stessi font utilizzati nel documento originale; diversamente i font verranno sostituiti con altri di default, producendo effetti indesiderati a causa delle diverse proporzioni, come il superamento di un margine o la sovrapposizione di caratteri. Si possono includere i font nel documento provocando un aumento considerevole delle dimensioni, ad esempio un documento di due pagine che utilizza quattro font cresce da 10K a 250K. Un’altra possibilità consiste nel convertire ogni pagina del documento in un immagine a risoluzione fissa, negando però la possibilità di interagire con i contenuti. Il PDF dispone di una soluzione che rende i documenti indipendenti dai font utilizzati per crearli. Contiene un font descriptor per ogni font utilizzato nel documento; esso è composto da: nome del font, dimensioni, informazioni sullo stile ed un vettore contenente le larghezze di ciascun carattere. Queste informazioni sono utili nel caso di font mancanti poichè permettono che esso venga emulato o sostituito da un altro simile mantenendo la formattzione; aggiungono tipicamente 1-2K alla dimensione del documento e sono utilizzabili per i font di tipo Adobe Type 1 e True Type®. Si possono inoltre utilizzare i font simbolici, quali lo ZapfDingbats, senza però includere informazioni aggiuntive simili alle precedenti che sarebbero comunque insufficienti, e quindi sono già integrati nell’ambiente Acrobat®.

• Generazione dei file

A causa di limitazione delle risorse di sistema e per considerazioni di efficienza è preferibile, e a volte necessario, che un programma generi file PDF in un unico passaggio, senza quindi creare file temporanei. Questo sistema si rende possibile grazie al fatto che si conosce la dimensione di un oggetto, specificata all’interno del file dopo l’oggetto stesso. Inoltre nel documento, dopo tutte le pagine, devono essere specificate informazioni come il numero di pagine.

Capitolo 4 ~ Formati elettronici 20

• Accesso casuale

Applicativi che estraggono e visualizzano una determinata pagina da un linguaggio Postscript devono parsificare il file in esame dall’inizio, finchè non viene trovato l’elemento desiderato. In media, il tempo necessario per visualizzare una pagina non dipende solo dalla sua complessità ma anche dal loro numero totale all’interno del documento. È un problema per la visualizzazione interattiva di documenti, dove è importante il tempo di accesso alla pagina. Ogni file PDF contiene una tabella di riferimenti incrociati, che viene utilizzata per accedere a pagine ed altri oggetti importanti nel file; essa viene memorizzata alla fine di quest’ultimo, permettendo alle applicazioni che generano PDF in un solo passo di scriverla e a quelle che li leggono di trovarla in modo semplice.

• Aggiornamento Incrementale

Certe applicazioni che permettono agli utenti di modificare documenti PDF contenenti svariate centiania di pagine non dovrebbero far attendere la riscrittura dell’intero file ogni qual volta vengano salvate le modifiche. Il PDF permette sia la modifica sia l’aggiunta in un file, lasciando intatti i dati originali. L’aggiunta incrementale contiene solo l’oggetto che è stato modificato o aggiunto e include una versione aggiornata della tabella dei riferimenti incrociati. Tale sistema permette di ottenere salvataggi con tempi proporzionali ai dati modificati invece che alle dimensioni del file; inoltre, vista la ridondanza dei dati, è possibile ripristinare l’originale.

• Estendibilità

Il formato PDF è stato progettato per essere estendibile. Sicuramente gli sviluppatori vorranno aggiungere caratteristiche che non sono ancora state implementate; per questo motivo è stato progettato in modo tale da poter essere esteso conservando la compatibilità con interpreti antecedenti le modifiche.

Capitolo 4 ~ Formati elettronici 21

4.4.2 PDF e Linguaggio Postscript

Nella sezione precedente sono state accennate le differenze fra il formato PDF ed il linguaggio Postscript; ci si propone ora di elencarle:

• Un file PDF può contenere oggetti come collegamenti ipertestuali, utili per la visualizzazione interattiva.

• Per semplificare il processo di descrizione delle pagine, il formato PDF non fornisce costrutti di programmazione.

• Il formato PDF rafforza il concetto di struttura di file e permette alle applicazioni di accedere in modo casuale a parti del documento.

• Il formato PDF contiene informazioni riguardanti le caratteristiche dei font per assicurare fedeltà di visualizzazione.

Per questi motivi, un file PDF non può essere inviato direttamente ad una stampante per l’elaborazione.

4.4.3 Sistemi di coordinate

I sistemi di coordinate definiscono gli involucri all’interno dei quali vengono visualizzati i documenti PDF; le posizioni, gli orientamenti, le dimensioni del testo, grafica ed immagini, che sono visualizzate in una pagina sono riferiti sempre ad un sistema di coordinate. Il PDF supporta alcuni sistemi di coordinate, per la maggior parte identici a quelli utilizzati nello standard Postscript:

• Device space

Il contenuto di una pagina viene visualizzato o stampato ed ogni dispositivo atto ad effettuare tali operazioni le rappresenta attraverso un proprio sistema di coordinate; in generale ogni dispositivo dispone del proprio. In dispositivi basati sui pixel, come schermi di computer, il sistema di coordinate viene specificato in termini della relativa unità di misura. I file PDF che utilizzano questo sistema vengono denominati device-dependent e possono essere visualizzati in modo diverso a seconda del dispositivo utilizzato. Ad esempio, un’immagine visualizzata su un monitor con risoluzione di 72 pixel per pollice e su una stampante a 600 dpi differiscono di un fattore 8, infatti un segmento di 8 pollici visualizzato sullo schermo corrisponde ad un segmento di un pollice sulla stampante. Inoltre i dispositivi differiscono anche per

Capitolo 4 ~ Formati elettronici 22

l’orientamento dei sistemi di coordinate: in un sistema l’origine può venire posizionata nell’angolo in alto a sinistra, con la direzione dell’asse y positiva verso il basso mentre in un altro nell’angolo in basso a sinistra con la direzione dell’asse y positiva verso l’alto. La Figura 4.1 illustra un esempio della differenza di visualizzazione su due dispositivi differenti.

Figura 4.1 Esempio di Device space

• User space

Il PDF, come il linguaggio Postscript, definisce un sistema di coordinate che rende il documento indipendente dal dispositivo di visualizzazione e dalla sua risoluzione. La trasformazione da user space a device space viene denominata current trasformation matrix (CTM). La Figura 4.2 mostra un oggetto in user space e come una trasformazione CTM lo rende device-independent.

Figura 4.2 Esempio di conversione da User space

Capitolo 4 ~ Formati elettronici 23

Lo stato di default di ogni pagina di un documento utilizza il sistema di coordinate user space con una risoluzione di 72 unità per pollice, corrispondente al punto tipografico. La direzione positiva dell’asse y è verso l’alto, mentre quella dell’asse x è verso destra. La regione visualizzabile e stampabile può essere diversa per ogni pagina ed utilizza il sistema descritto in Figura 4.3.

Figura 4.3 Aree di una pagina

• Text space

È il sistema di coordinate utilizzato per il testo, la trasformazione in user space viene realizzata attraverso la text matrix.

• Character space

I caratteri in un font sono definiti in questo sistema di coordinate, la sua trasformazione dal text space è realizzata tramite una matrice, che nella maggior parte dei font è predefinita ad eccezione del fattore di scala, modificato dalle dimensioni del font.

• Image space

Tutte le immagini sono definite in questo sistema e la sua trasformazione in user space è prestabilita e non può essere modificata; hanno tutte dimensioni 1x1,

Capitolo 4 ~ Formati elettronici 24

indipendentemente da quelle effettive, mentre in un Postscript vengono descritte utilizzando un ImageMatrix che ha le stesse dimensioni dell’originale. Nel PDF le immagini sono posizionate sempre nell’origine (angolo in basso a sinistra). Il compito di rappresentarla in modo corretto spetta alla trasformazione CTM, rendendola più portabile: la stessa immagine può essere utilizzata più volte nello stesso documento.

• Form space

Il PDF può contenere oggetti Form XObject, che verranno descritti nei paragrafi successivi. L’insieme delle operazioni che è possibile effettuare su questo tipo di oggetti sono le stesse del linguaggio Postscript ed il Form space è il sistema di coordinate utilizzato in questo contesto. Per poter passare allo user space si utilizza una matrice contenuta all’interno di un oggetto Form XObject.

• Pattern space

Nel PDF si definisce uno spazio di colori denominato pattern, che verrà descritto nei paragrafi successivi. Come per i Form, i pattern utilizzano un insieme di operazioni descritte nel linguaggio Postscript. Per convertirlo in un user space viene utilizzata una matrice contenuta all’interno dello stesso oggetto pattern.

Tutti questi sistemi sono correlati fra di loro secondo la gerarchia descritta in Figura 4.4.

Figura 4.4 Relazione fra sistemi di coordinate

Ogni collegamento nella Figura 4.4 rappresenta una trasformazione fra i vari sistemi, tali trasformazioni possono, per la maggior parte dei casi, essere modificate. Poichè i vari sistemi sono interconnessi fra di loro, i cambiamenti riguardanti un oggetto influenzano diversi sistemi di coordinate. Per esempio una variazione in un CTM che

Capitolo 4 ~ Formati elettronici 25

definisce la trasformazione fra user space e device space influenza form, testi, immagini e pattern che utilizzano lo user space.

4.4.4 Struttura generale del PDF

Un file in formato PDF può essere suddiviso in quattro parti distinte:

Figura 4.5 Suddivisioni di un PDF

• Oggetti: comprende le istanze, tranne alcune eccezioni, dei tipi base usati nel linguaggio Postscript.

• Struttura del file: determina il modo in cui un oggetto è memorizzato in un file PDF, il tipo di accesso consentito e le modalità di aggiornamento. Questa struttura è indipendente dalla semantica di un oggetto.

• Struttura del documento: specifica i collegamenti degli oggetti per rappresentare i componenti di un documento PDF come le pagine, le annotazioni, i collegamenti ipertestuali, i font, ecc...

• Descrittore di pagina: pur facendo parte di un oggetto pagina, rimane separato dagli altri e con essi ha una limitata interazione. Questo semplifica la conversione in linguaggio Postscript.

Vediamo ora più in dettaglio ognuna di queste parti.

4.4.5 Oggetti

Il formato PDF comprende sia oggetti di base che strutture dati.

• Oggetti di base: sono essenzialmente quelli che danno forma ad un testo, ai quali si deve aggiungere un Null-Object. Gli oggetti possono essere referenziati da altri per mezzo delle etichette. Essi sono:

Oggetti

Struttura del File

Struttura del Documento

Descrittore di Pagina

Capitolo 4 ~ Formati elettronici 26

o Booleani: possono avere valore TRUE o FALSE.

o Numeri: sono di tipo reale o intero; i primi possono essere solo in formato decimale mentre i secondi possono essere con o senza segno.

o Stringhe: una stringa è un insieme di interi senza segno ad 8 bit, scritti come una sequenza di caratteri delimitati da parentesi. Nel caso sia troppo lunga una stringa si può spezzare su più linee con il carattere ‘\’; quest’ultimo si può utilizzare per specificare nella stringa caratteri speciali o non stampabili come si può vedere in Tabella 4.1.

\n Linefeed \r Carriage return \t Horizontal tab \b Backspace \f Formfeed \\ Backslash \( Left parenthesis \) Right Parentesis \ddd Character code ddd (octal) Tabella 4.1 Caratteri speciali nelle stringhe

Le stringhe possono, come nel linguaggio Postscript, essere rappresentate in forma esadecimale1. In una stringa può comparire qualunque carattere a 8 bit ed in particolare, quando un documento è codificato, tutte le stringhe contengono valori a 8 bit. Le stringhe possono essere usate per molti scopi ed essere formattate in vari modi, per questo motivo la formattazione fa parte della definizione.

o Testo: comprende stringhe che contengono testo intelligibile e che possono contenere note, bookmark, nomi di articoli ed informazioni riguardanti del documento. Il testo può venire codificato sia in Unicode che con il sistema PDFDocEncoding2. Il testo può anche contenere sequenze di escape per indicare la lingua in cui è scritto il contenuto.

1 Per ulteriori dettagli nella rappresentazione delle stringhe, dei nomi, degli array e degli stream riferirsi ai paragrafi 4.4, 4.5, 4.6 e 4.8 del documento PDFSPEC.PDF. 2 PDFDocEncoding è un insieme che comprende anche ISOLatin1 e che è compatibile con una parte dell’Unicode.

Capitolo 4 ~ Formati elettronici 27

o Nomi: un nome, come una stringa, è una sequenza di caratteri ASCII che deve rispettare certe regole1.

o Array: sono sequenze di oggetti che possono essere diversi fra loro1.

o Dizionari: sono tabelle associative che contengono coppie di oggetti. Il primo elemento è la chiave ed il secondo il valore. La chiave deve essere un nome, mentre un valore può essere qualunque tipo di oggetto, incluso un altro dizionario. Si usano di solito per raggruppare gli attributi di oggetti complessi in cui ogni coppia chiave-valore specifica il nome ed il valore di un attributo. Questi oggetti sono i blocchi principali di un documento PDF, infatti essi vengono usati per rappresentane parti come pagine e font.

o Stream: similmente ad una stringa, è una sequenza di caratteri. Un’applicazione può leggere una piccola porzione dei dati ivi contenuti, mentre una stringa deve essere letta nella sua completezza. Per questo motivo, oggetti che contengono grandi quantità di dati, come le immagini ed i descrittori di pagina, vengono rappresentati con stream1.

• Strutture dati: oltre ai tipi di dati semplici ne esistono anche di più complessi3:

o Rectangle: si utilizzano per descrivere sezioni di pagina e bounding box di oggetti PDF come ad esempio i font. Sono rappresentati da un insieme di quattro valori, [llx lly urx ury], che specificano le coordinate di due vertici.

o Date: definisce le date secondo lo standard internazionale ASN.1; una data è rappresentata da una stringa nella forma: YYYYMMDDHHmmSSOHH’mm’ dove:

� YYYY indica l’anno

� MM indica il mese (01-12)

� DD indica il giorno (01-31)

� HH indica l’ora (00-23)

� mm indica i minuti (00-59)

� SS indica i secondi (00-59)

3 Per maggiori dettagli sulle strutture dati si veda il capitolo 7 del file PDFSPEC.PDF

Capitolo 4 ~ Formati elettronici 28

� O può essere il carattere +, -, Z indicando la relazione temporale con il fuso orario di Greenwich (GMT)

� HH’ indica il valore assoluto dello scostamento in ore da GMT (l’apice fa parte della sintassi)

� mm’ indica il valore assoluto della scostamento in minuti da GMT (l’apice fa parte della sintassi)

o Destination: una Annotation o un Outline possono specificare una destinazione che può essere una pagina, la zona da visualizzare o il fattore di scala da utilizzare. Essa può essere rappresentata esplicitamente da un Array o implicitamente attraverso un Name.

o File specification: congiuntamente alle informazioni riguardanti il file system, indica la posizione di un file. È rappresentato utilizzando una stringa od un dizionario, ma solamente file semplici, dove non è specificato il file system, possono essere rappresentati attraverso stringhe.

o Resource Dictionary: contiene gli stream riferiti a dizionari che riguardano la visualizzazione di una pagina.

o ProcSet: sono insiemi di istruzioni che possono essere utilizzati nell’ambito degli stream.

o Font: viene rappresentato attraverso un dizionario che ne specifica il tipo, il nome Postscript, la codifica e le informazioni utilizzate per sostituirlo in caso di mancata disponibilità. Si può includere un attributo Name che dovrebbe coincidere con uno di quelli contenuti all’interno del dizionario dei font nel corrente dizionario di risorse. Per ogni font si deve specificare la larghezza dei caratteri come lo spazio orizzontale compreso tra l’inizio di un carattere e quello del successivo. In un documento PDF le dimensioni del font sono specificate in unita nel character space e corrispondono a 1/1000 di unità nel text space.

Capitolo 4 ~ Formati elettronici 29

Figura 4.6 Character metrics

Esistono diversi tipi di font:

� Type 1: sono i caratteri base del linguaggio Postscript. Rispetto al Type 3 possono essere definiti in modo più compatto e fare uso di speciali procedure di disegno dei caratteri in modo da permettere una migliore qualità con minori dimensioni a basse risoluzioni. I più importanti fra questi sono raggruppati in figura.

Courier Courier-Bold Courier-BoldOblique Courier-Oblique Helvetica Helvetica-Bold Helvetica-BoldOblique Helvetica-Oblique Times-Roman Times-Bold Times-Italic Times-BoldItalic Symbol ZapfDingbats

Tabella 4.2 Base 14 Type 1 font

� Type 3: sono i font ridefinibili. Il PDF ne fornisce una variante in cui i caratteri vengono definiti tramite stream, sono detti anche CharProc, associati ai nomi dei caratteri. Vi si può accedere, come per i font, tramite un vettore di

Capitolo 4 ~ Formati elettronici 30

codifica. Differiscono dagli altri font per il fatto che non necessitano di un dizionario per le informazioni, che sono contenute all’interno dello stesso. Inoltre, pur non possedendo le peculiarità del tipo precedente, sono più flessibili del Type 1 a causa del fatto che gli stream possono contenere operatori PDF.

� TrueType: sono uno standard sviluppato dalla Apple Computer ed hanno le stesse chiavi del Type 1.

� Type 0: supportano codifiche single-byte o multi-byte e sono analoghi ai corrispondenti Postscript. I font di questo tipo, supportati dal formato PDF, devono venire definiti tramite CMap.

o CIDFont: sono progettati per contenere un elevato numero di procedure a cui si può accedere tramite un intero chiamato character identifier (CID). Fondamentalmente non è un font, non ha attributi di codifica e può essere utilizzato solo come derivato di un font Type 0.

o Font encoding: descrive la codifica dei caratteri e la corrispondenza tra il codice del carattere ed il suo nome. I nomi sono chiavi nel dizionario dei font usate per estrapolare il codice che disegna il carattere; si può considerare come il collegamento che associa i codici numerici dei caratteri con il loro disegno.

o CMap: si usa nei font Type 0 per definire la corrispondenza tra il codice del carattere, il numero del font ed il suo selettore.

o Font descriptor: specifica le dimensioni e gli attributi di un font, informazioni che servono per crearne un sostituto o sceglierne uno simile. Può essere anche usato per incorporare all’interno del file PDF il font stesso. È un dizionario le cui chiavi specificano i diversi attributi. Tutti i valori numerici, ivi contenuti, sono specificati in unità del character space; la conversione da character space a text space dipende dal tipo del font.

o Color space: specifica come i valori dei colori vengono interpretati. Alcuni operatori specificano implicitamente lo spazio dei colori da utilizzare, mentre altri necessitano di una specifica esplitita di tale sistema.

Capitolo 4 ~ Formati elettronici 31

Figura 4.7 Categorie di Color space

Come si puo vedere in Figura 4.7 ci sono diverse categorie:

� Device-dependent: i valori dei colori sono specificati con una percentuale relativa ai colori di sistema, questo implica che il colore effettivo dipende dalle caratteristiche del dispositivo di output.

� Device-indipendent: i colori sono definiti tramite una conversione nello standard XYZ, dove avviene una misura colorimetrica.

� Special: altri sistemi di codifica non standard4

o XObject: è un oggetto generico che comprende diversi sottotipi:

� Immagini: possono essere sia maschere che immagini campionate, vengono specificate tramite uno stream; sono supportate maschere a 1, 2, 4, 8 bit in scala di grigio e immagini a colori con 1, 2, 4, 8 bit per componente. Le immagini a colori possono utilizzare 1 (colore indicizzato), 3 (RGB, CalRGB o Lab), 4 (CMYK) o un numero arbitrario (DeviceN) di componenti. Nel PDF tutte le immagini hanno dimensione 1x1 unità in user space ed i dati vengono specificati da sinistra a destra e dall’alto al basso. Un’immagine deve essere scalata e posizionata secondo la matrice di trasformazione corrente. La maschera contiene campioni ad 1 bit, che indica se il colore deve essere applicato o meno in quella posizione.

4 Ulteriori dettagli riguardanti questi sistemi si possono trovare al paragrafo 7.12 nel file PDFSPEC.PDF

Capitolo 4 ~ Formati elettronici 32

� Form: contiene la descrizione di testo, grafica e immagini che possono essere visualizzate su più pagine oppure o in copie multiple su di un’unica pagina. Si noti che a partire dal PDF 1.2 con il termine form si intende un’oggetto differente, che verrà successivamente descritto come Acrobat Form, mentre il presente è un sottotipo della categoria XObject.

� Elementi Postscript: permettono di incorporare frammenti di linguaggio Postscript che vengono elaborati solo durante la stampa su un’apposita stampante. Vengono ignorati sia durante la normale visualizzazione che durante la stampa su una stampante non Postscript. Si noti che di solito gli applicativi che leggono il PDF non interpretano il Postscript, quindi questa soluzione viene utilizzata solamente in casi eccezionali.

o Funzioni: benchè il PDF non sia un linguaggio di programmazione, esso permette l’uso di svariati tipi di funzioni che includono anche formule matematiche. Le funzioni si possono suddividere in due insiemi: le prime utilizzate durante la stampa di informazioni vettoriali ad alta qualità device-dependent, le seconde, invece, usate con le tecniche di ombreggiatura.

o Extended graphic state: aggiunge parametri al Graphic State che verrà descritto nei paragrafi successivi.

o Halftone: il PDF ne supporta i tipi 1, 5, 6, 10, 16 corrispondenti agli stessi descritti nel linguaggio Postscript, a seconda del tipo sono rappresentati attraverso un dizionario o uno stream.

o Pattern: è un riempimento e viene suddiviso in due categorie principali:

� Tiling: è di tipo procedurale e richiede una serie esplicita di istruzioni.

� Smooth shading: è di tipo dichiarativo e include una descrizione dell’effetto desiderato in termini di passaggio tra colori in un’area specifica.

o Smooth Shading: definiscono regioni in termine di gradiente che possono essere utilizzati con gli operatori fill, stroke, show ed image mask.

Capitolo 4 ~ Formati elettronici 33

o Property list: è un dizionario che fornisce informazioni riguardanti sequenze di oggetti grafici. Puo essere scritto “in-line” oppure fare parte di un dizionario di risorse.

o Name tree: contiene tre tipi di nodi: root node (uno per albero), intermediate node e leaf node. I Name in un albero sono memorizzati nei leaf node, ordinati per valore binario, in cui ogni stringa è rappresentata come una sequenza di 8 byte.

o Number tree: ha lo stesso scopo di un dizionario, collegare chiavi e valori ma in modo differente; le chiavi sono valori interi anzichè oggetti PDF. I nodi ivi contenuti sono gli stessi descritti in precedenza per i Name tree.

4.4.6 Struttura dei file

Un file PDF fornisce la struttura rappresentativa di un documento, le modalità d’accesso ad ogni parte ed i meccanismi di aggiornamento La struttura può essere suddivisa in quattro sezioni: header, body, cross-reference table (tabella dei riferimenti incrociati) e trailer.

Figura 4.8 Struttura di un file PDF

Una linea di un file PDF termina con un carriage return, un linefeed o entrambi. Un file binario potrebbe avere linee di lunghezza arbitraria, tuttavia per mantenere la compatibilità con le altre applicazioni, tutte le linee che non fanno parte di uno oggetto stream non possono superare i 255 caratteri. Un’eccezione a questa regola si verifica quando si utilizzano i dizionari. Analizziamo più in dettaglio queste strutture:

Header

Body

Cross-reference table

Trailer

Capitolo 4 ~ Formati elettronici 34

• Header: la prima riga specifica la versione a cui il PDF fa riferimento. L’attuale versione è la 1.3, per cui un file PDF conforme a quest’ultima dovrà contenere “%PDF-1.3“. Applicazioni che utilizzino questa versione sono in grado di accettare file di versioni precedenti.

• Body: è composto da una sequenza di oggetti indiretti che rappresentano un documento. Gli oggetti, che sono dei tipi base descritti nelle sezioni precenti, rappresentano componenti del documento come font, pagine o immagini. Un commento, che ha la stessa sintassi del linguaggio Postscript, può comparire in una sezione qualunque all’interno del body. Tutto il testo contenuto tra due caratteri ‘%’ viene considerato come un commento; occorrenze del carattere ‘%’ che non contengano stringhe o stream non vengono considerati commenti.

• Cross-reference table: contiene informazioni che permettono l’accesso casuale agli oggetti del file, evitandone la lettura completa. La tabella contiene una voce per ogni oggetto indiretto che ne specifica la posizione relativa. Viene suddivisa in sezioni, che vengono aggiunte ogni volta che il file viene aggiornato5.

• Trailer: rende possibile la lettura veloce per alcune applicazioni della cross-reference table e di speciali tipi di oggetti. Le applicazioni leggono i file PDF dalla fine, contrassegnata da un simbolo di fine file ‘%%EOF’. Il terminatore viene preceduto da un offset, riferito all’ultima sezione della cross-reference table5.

Il contenuto di un file PDF può essere aggiornato senza riscriverlo interamente, i cambiamenti possono essere aggiunti alla fine del file, lasciandone completamente intatto il contenuto originale. Quando si aggiorna un file vengono aggiunti i nuovi oggetti, viene creata una nuova sezione alla cross-reference table ed inserito un nuovo trailer. La sezione aggiunta alla cross-reference table contiene delle voci che si riferiscono unicamente agli oggetti modificati, rimpiazzati ed eliminati, oltre che una per l’oggetto 0. Gli oggetti eliminati non vengono modificati, ma semplicemente marcati come cancellati all’interno della cross-reference table. Il trailer aggiunto contiene anche tutte le informazioni dei precedenti. A causa del fatto che le modifiche si aggiungono alla fine del file, è possibile che esistano diversi oggetti con lo stesso ID. Questo capita, per esempio, quando una annotazione viene modificata molte volte; siccome non viene eliminata, mantiene lo stesso ID ed una copia dell’oggetto viene inserita nella nuova sezione del file. La nuova sezione della cross-reference table include un puntatore alla versione più recente, aggiornando le informazioni contenute nelle sezioni precedenti. Nel momento in cui un 5 Per ulteriori dettagli sulla descrizione delle entry alla cross-reference table e dei campi del trailer riferirsi ai paragrafi 5.15 e 5.16 del documento PDFSPEC.PDF.

Capitolo 4 ~ Formati elettronici 35

programma come Acrobat® legge il file deve ricostruire la cross-reference table in modo che si possa accedere alle ultime versioni degli oggetti.

Figura 4.9 Struttura del file PDF dopo successivi aggiornamenti

4.4.7 Struttura del documento

Il PDF fornisce una rappresentazione elettronica di un documento, una serie di pagine che contiene testo, grafica, immagini, insieme ad altri informazioni come thumbnail, note, collegamenti ipertestuali e bookmark. La sezione principale di un PDF (body) è composta da una gerarchia di oggetti che insieme rappresentano un documento.

Capitolo 4 ~ Formati elettronici 36

Figura 4.10 Struttura di un documento PDF

La maggior parte degli oggetti in questa gerarchia sono dizionari. Gli elementi sono rappresentate da coppie chiave-valore i cui valori sono riferimenti indiretti ad altri elementi. Per esempio, l’oggetto catalogo (catalog) che è la radice dell’albero contiene la chiave “Pages” il cui valore è un riferimento indiretto all’oggetto posto come radice dell’albero delle pagine. Ogni pagina del documento contiene i riferimenti al suo contenuto, ai suoi thumbnail e alle note. Il trailer standard del file PDF specifica la posizione dell’oggetto catalogo come valore della sua chiave “Root”; inoltre specifica la posizione del dizionario “Info”, cioè una struttura che contiene informazioni generali riguardo al documento. Le singole parti di un documento possono essere6:

6 La descrizione completa di questi elementi si può trovare nel capitolo 6 del documento PDFSPEC.PDF

Capitolo 4 ~ Formati elettronici 37

• Catalog: è un dizionario posto come nodo radice del documento, contenente un riferimento all’albero delle pagine, agli article thread, alla lista dei nomi e all’albero degli oggetti, che rappresenta il profilo del documento. Inoltre, il catalogo indica se devono essere visualizzati automaticamente all’apertura del documento il suo profilo, i thumbnail ed una pagina diversa dalla prima.

• Page tree: è l’albero che fornisce l’accesso alle pagine del documento ed il loro ordinamento. Per ottimizzare le prestazioni di visualizzazione, Acrobat Distiller® e PDF Writer® costruiscono alberi bilanciati. La struttura ad albero permette alle applicazioni di aprire velocemente un documento composto da migliaia di pagine utilizzando memoria limitata. Le applicazioni dovrebbero essere in grado di utilizzare qualunque tipo di struttura ad albero contenente chiavi valide nei nodi. È da notare che la struttura del page tree di un documento è scorrelata dal contenuto dello stesso; per esempio, in un file PDF che rappresenta un libro, non c’è garanzia che un capitolo sia rappresentato da un singolo nodo.

• Page object: è un dizionario che descrive una singola pagina che contiene testo, grafica ed immagini; inoltre è un nodo dell’albero page tree. Può contenere chiavi addizionali che forniscono valori relativi ai suoi discendenti; tali valori possono essere ereditati. Per esempio (v. Figura 4.3) un documento può specificare un MediaBox per tutte le pagine definendone uno nel nodo di root. Una singola pagina può ridefinirlo semplicemente specificandone un altro.

Figura 4.11 Esempio di ereditarietà

• Thumbnail: certi documenti PDF possono comprendere anche versioni ridotte delle pagine. Non sono obbligatori e possono esistere solo per alcune pagine. L’immagine thumbnail di una pagina è il valore della chiave “Thumb” del page object. La struttura dell’oggetto è molto simile a quella di una immagine, infatti ne differisce solo per il fatto che non si includono alcuni attributi.

Capitolo 4 ~ Formati elettronici 38

• Annotation: sono note o altri oggetti associati alla pagina ma separati dal descrittore della stessa. Ci sono vari tipi di annotation:

o Text Note: aggiunge una nota di testo al documento.

o Hypertext link: è un collegamento che se attivato visualizza una destinazione o esegue un’azione.

o Movie: visualizza un filmato all’interno del documento.

o Sound: riproduce un suono da un file.

o Widget: vengono utilizzati in AcroForm per rappresentare campi e gestire le interazioni con l’utente.

o Trap network: sono Text Note visibili solo in formato elettronico e non stampabili.

o Aggiunte varie: possono essere linee, cerchi, rettangoli, sottolineature, ecc...

• Outline tree: permettono ad un utente di visualizzare un documento utilizzandone il nome. Come con le Annotation e l’attivazione di un Bookmark viene visualizzata un’altra pagina.

• Action: a partire dallo standard PDF 1.1, è possibile specificare un’azione da eseguire all’attivazione di un Link Annotation, Outline o all’apertura di un documento. Ci sono diversi tipi di azioni:

o GoTo

o GoToR

o Launch

o Thread

o URI

o Sound

o Movie

o SetState

o Hide

o Named

o SubmitForm

o ResetForm

Capitolo 4 ~ Formati elettronici 39

o ImportData

o JavaScript

• Name dictionary: il Catalog di un documento può contenere una chiave “Names” il cui valore è un dizionario; ciascun valore nel dizionario è un Name Tree che è simile a un Page Tree, i cui nodi contengono coppie di stringhe (i nomi) ed oggetti (i valori). Esso viene utilizzato come un dizionario, ma collegando le coppie chiave-valore in modo differente: le chiavi in un Name Tree sono stringhe e non oggetti PDF Name.

• Info dictionary: un suo riferimento, contenuto nel Trailer, fornisce informazioni riguardanti il documento. È un oggetto opzionale che può contenere una o più chiavi i cui valori sono stringhe aggiornabili tramite il viewer di un file PDF. Per questo motivo le informazioni ivi contenute possono non rispecchiare lo stato effettivo del documento.

• Article thread: identifica elementi correlati al documento, permettendo all’utente di seguire un flusso di informazioni suddivise su più colonne o pagine. Un documento può comprendere più thread, ciascuno caratterizzato da un nome e una lista di elementi chiamati bead. Un visualizzatore di PDF può permettere all’utente di scegliere un thread e navigarci all’interno; come in un giornale, i relativi bead possono non essere in pagine contigue. Il visualizzatore mantiene automaticamente il livello di zoom sull’oggetto in questione piuttosto che sull’intera pagina.

• File ID: un file PDF può contenere riferimanti ad un altro file PDF, memorizzandone il nome in due parti: un riferimento basato sul sitema operativo ed un identificatore di file (File ID). Esso caratterizza il file con il quale viene memorizzato, in modo da non incorrere in errori che possono comunque verificarsi semplicemente utilizzando un nome platform-indipendent. Viene normalmente memorizzato all’interno del trailer. È composto da due parti, una fissa e l’altra dipendente dagli aggiornamenti incrementali.

• Encryption dictionary: un documento può essere protetto grazie alla crittografia. Si deve specificare un encryption dictionary che include un security handler utilizzato per autorizzare gli accessi; inoltre contiene infomazioni sul nome del security handler e sull’algoritmo utilizzato.

• Acrobat form: a partire dalla versione 1.2 si definiscono certe caratteristiche che permettono l’interattività. Consiste in una collezione di campi intesi come un insieme di proprietà di selezione, visualizzazione e di gerarchia all’interno del form. Si possono utilizzare anche elementi tipici dei form come pulsanti, campi di testo, scelte multiple, ecc...

Capitolo 4 ~ Formati elettronici 40

• Sound: un suono è rappresentato da uno stream e le sue caratteristiche sono incluse in un dizionario.

• Web capture: si presenta sotto forma di plug-in7 che genera file PDF partendo da file HTML, PDF, GIF, JPEG, ASCII TXT locali o remoti; possiede speciali caratteristiche come la possibilità di stampare pagine multiple da un sito Web e memorizzarle localmente conservandone l’aspetto originario. Permette inoltre l’aggiornamento e la modifica dei file.

Figura 4.12 Struttura di un file generato da Web Capture

• Logical structure: a partire dal PDF 1.3 vengono fornite informazioni riguardanti la struttura del documento, come l’organizzazione in capitoli e sezioni. Può essere esteso al punto da poter specificare quali informazioni includere e come sono rappresentate, permettendo all’utente di navigare nel file senza conoscere le convenzioni del creatore del documento.

7 Si consulti il capitolo 5 per maggiori informazioni.

Capitolo 4 ~ Formati elettronici 41

4.4.8 Descrittore di pagina

Un descrittore di pagina può essere considerato come una sequenza di oggetti grafici collocati al suo interno, inoltre si possono sovrapporre e coprirea vicenda. Sono fondamentalmente cinque come si può vedere dalla Figura 4.13:

• Path object: ha una forma arbitraria composta da linee rette, rettangoli e cubiche, può essere autointersecante, non connesso ed avere buchi; di solito possiede un operatore che indica se è riempito, barrato o svolge funzioni di delimitatore. Le varie parti che lo compongono possono essere linee rette oppure curve, le ultime sono rappresentate utilizzando le cubiche di Bezier. Tutti gli operandi relativi al path object sono coordinate specificate in user space. Se l’oggetto in questione viene riempito, viene sovrapposto agli altri esistenti nello stesso spazio.

• Text object: è formato, a livello fisico, da una o più stringhe di caratteri posizionate ovunque nella pagina in vari orientamenti; a livello logico invece si può suddividere in text run composte da almeno un carattere ed aventi ciascuna il proprio stile e font; come un path può essere barrato, riempito od essere un delimitatore.

• Image object: è un insieme di campioni che usano un determinato modello di colore; le immagini possono essere posizionate ovunque nella pagina.

• External object: è un oggetto definito al di fuori di uno stream e comprende tre sottotipi:

o Immagini

o Form

o Sorgenti Postscript

• Shading object: rappresenta i passaggi di colore di un’area della pagina.

Oltre agli oggetti citati, il descrittore di pagina può contenere riferimenti ad altre parti ed oggetti del documento. La Figura 4.13 mostra la gerarchia di operazioni e le regole che definiscono gli oggetti grafici e le loro interazioni.

Capitolo 4 ~ Formati elettronici 42

Figura 4.13 Oggetti grafici e loro gerarchie

Capitolo 4 ~ Formati elettronici 43

Un oggetto molto importante, non appartenente a quelli visualizzabili nella pagina ma indispensabile nella gestione delle caratteristiche degli altri è il Graphic State; determina parametri come lo spessore delle linee ma, sebbene sia simile al corrispettivo definito nel Postscript, ha alcune importanti differenze:

1. nel PDF il graphic state è diviso in quattro distinti gruppi di parametri che sono specifici per testo, colore, graphic state stesso ed altre generiche operazioni; essi sono: Text State, Color, General Graphic State e Special Graphic State.

2. si può espandere la gamma di operazioni riguardanti il graphic state suddividendo le operazioni relative a colore di riempimento (fill color) e delle linee (stroke color): ciò è utile per separare le operazione su path object e text object.

3. Può essere ampliato con informazioni utili ai plug-in forniti dall’utente e non alla visualizzazione od alla stampa.

Il graphic state viene inizializzato per ogni pagina con valori predefiniti. Analizziamo ora i più importanti gruppi in cui si può dividere l’oggetto in questione:

• Special Graphic State: si riferisce ai parametri applicabili a tutti gli oggetti grafici. Vediamone alcuni parametri significativi:

o Clipping Path: restringe la regione della pagina dove si possono rappresentare gli oggetti; ciò che oltrepassa detti limiti non viene disegnato.

o Current Transformation Matrix: specifica la trasformazione da utilizzare per passare da user space a device space.

o Current Point: posiziona il punto di disegno corrente.

• General Graphic State: si riferisce a parametri grafici relativi a particolarità nella rappresentazione delle linee. Vediamone alcune caratteristiche:

o Flatness: imposta il massimo scostamento in pixel permesso tra una curva e la sua approssiamazione a linea retta.

Figura 4.14 Flatness error tolerance

Capitolo 4 ~ Formati elettronici 44

o Line Cap Style: imposta lo stile di disegno delle estremità di una linea.

Figura 4.15 Stili di delimitazione delle linee

o Line Dash Pattern: specifica lo stile di disegno delle linee tramite un array ed una fase; il primo rappresenta la lunghezza dei tratti pieni e vuoti mentre il secondo ne rappresenta la frequenza. Entrambe queste strutture specificano i valori in unità di user space.

Figura 4.16 Line Dash Pattern

Capitolo 4 ~ Formati elettronici 45

o Line Join Style: specifica lo stile da utilizzare nel punto raccordo di due o più linee.

Figura 4.17 Line Join Styles

o Line Width: specifica lo spessore delle linee in unità di user space.

o Miter Limit: si applica come limitazione quando due linee si incontrano ad angolo acuto ed è stato specificato il miter join come stile nel punto di raccordo poichè è possibile che in tale punto lo spessore della linea congiunta sia superiore a quello impostato. Viene calcolato con una apposita formula.

Figura 4.18 Miter length

• Color: vediamone alcuni parametri fondamentali:

o Fill Color: si usa come riempimento di path e caratteri.

o Stroke Color: definisce il colore del bordo di path e caratteri.

Capitolo 4 ~ Formati elettronici 46

o Fill Color Space: indica lo spazio in cui vengono specificati i singoli colori di riempimento.

o Stroke Color Space: indica lo spazio in cui vengono specificati i singoli colori dei bordi.

• Text State

Il text state è composto da parametri grafici che riguardano solamente elementi testuali. Tali parametri sono:

o Character spacing (Tc)

Viene specificato in unità di text space, indica la spaziatura fra caratteri della stessa parola. Nel sistema di coordinate di default la direzione positiva dell’asse x è verso destra mentre dell’asse y è verso l’alto. In una scritta orizzontale un valore positivo del parametro ha l’effetto di espandere lo spazio fra i caratteri, mentre in una verticale lo stesso effetto si ha con un valore negativo. La spaziatura viene applicata a tutti i caratteri.

Figura 4.19 Character spacing in una scritta orizzontale

o Word spacing (Tw)

Viene specificato in unità di text space ed ha lo stesso effetto e modalità di utilizzo del character spacing ma fra diverse parole.

Figura 4.20 Word spacing in una scritta orizzontale

Capitolo 4 ~ Formati elettronici 47

o Horizontal scaling (Th)

Modifica il carattere dilatandone e comprimendone la larghezza. Il parametro è definito come percentuale rispetto alla normale larghezza di un carattere (100%). Lo scalamento è applicato sempre nella direzione x indipendentemente dall’orientamento della scrittura.

Figura 4.21 Horizontal scaling

o Leading(Tl)

Viene specificato in unità di text space, indica l’interlinea fra due righe adiacenti.

Figura 4.22 Esempio di interlinea

o Text font and size (Tf ,Tfs)

Indicano rispettivamente il nome e la dimensione di un font, che sono, il primo, contenuto all’interno del corrente dizionario di risorse, mentre il secondo è un valore in unità di user space.

o Text Matrix (Tm)

Specifica la trasformazione necessaria per passare da text space a user space.

o Text rendering mode (Tmode)

Capitolo 4 ~ Formati elettronici 48

Specifica le modalità di disegno del testo, non può essere utilizzato con font Type 3.

Figura 4.23 Rendering mode

o Text Rise (Trise)

Specifica, in unità user space, lo scostamento della base della scritta dal default. Valori positivi (apice) o valori negativi (pedice) spostano verticalmente la scritta. Il valore di default per una scritta è 0, che indica la posizione normale di scrittura. Questo parametro viene applicato alla coordinata y indipendentemente dall’orientamento della scritta.

Figura 4.24 Text rise

Capitolo 4 ~ Formati elettronici 49

Vi sono due parametri addizionali che definiscono lo stato di un testo:

o TLM : matrice della linea corrente.

o TRM : matrice di rendering.

Su di un testo è possibile applicare un insieme di operatori che ne modificano le caratteristiche:

o Text Object operator

Gli operatori sugli oggetti di testo specificano le stringhe di caratteri, lo spostamento dal punto corrente e lo stato del testo. Si deve notare che se una pagina non contiene testo, non possono essere specificati degli operatori di testo.

o Text positioning operator

Servono per spostare la posizione corrente, che è un attributo insieme al punto iniziale della linea dell’oggetto di testo. Ulteriori dettagli sulle matrici utilizzate da questi operatori possono essere consultati nei capitoli successivi.

o Text rendering

La matrice di rendering a partire dalla Tm viene calcolata secondo le seguenti regole:

� traslata utilizzando la matrice Trise

� scalata utilizzando Tfs e Th

� trasformata con la corrente matrice di trasformazione che realizza il CTM

o Text string operator

Vengono utilizzati per visualizzare il testo nella pagina, inoltre se il testo è suddiviso in parole e paragrafi permettono di selezionare singoli caratteri dal testo e di cercare stringhe. Come il Postscript, il PDF supporta i caratteri non stampabili, che sono rappresentati tramite delle sequenze di escape.

50

Capitolo 5

Applicativi software

Nei capitoli precedenti sono state analizzate la struttura e le caratteristiche del formato PDF; ci si propone ora di illustrare le proprietà degli applicativi software che utilizzano tale standard, soffermandosi in particolare sulle caratteristiche ed i possibili impieghi di tali ambienti. Verranno analizzate le possibilità di interazione con l’utente, di ampliamento e di personalizzazione rese possibili grazie all’ausilio di librerie software e relativa documentazione.

5.1 Reader Raggruppa un insieme di applicativi dedicati all’interpretazione e visualizzazione di file in formato PDF. Si distinguono due categorie: reader commerciali e custom.

5.1.1 Acrobat® Reader

Il principale applicativo utilizzato per la lettura di file PDF viene fornito dalla Adobe® in versione freeware che ne permette una rapida diffusione sia in ambito aziendale che privato; tale caratteristica ne ha permesso la distribuzione in mercati già occupati da interpreti di altri formati elettronici (DOC, PS, ecc…). Fondamentalmente è un’interfaccia di visualizzazione dei file PDF che permette:

• la visualizzazione in varie modalità dei documenti: a pagine singole, multiple, con vari fattori di zoom, con barre di navigazione, documenti multipli e cronologia di azioni;

Capitolo 5 ~ Applicativi software 51

• la stampa dell’intero documento o di sue parti;

• la ricerca di parole;

• la selezione e la cattura di testo ed immagini;

• la visualizzazione di miniature (thumbnail) delle pagine;

• la gestione di segnalibri (bookmark);

• la gestione di collegamenti ipertestuali nello stesso ed in altri documenti;

• opzioni di visualizzazione all’interno di un browser: si intende la possibilità di integrarsi all’interno dell’ambiente di un browser estendendone le possibilità;

• la gestione di impostazioni di protezione: all’atto della creazione di un documento si possono specificare diverse impostazioni riguardanti la visualizzazione, la modifica e la stampa dei documenti; attraverso di esse si abilitano o si inibiscono alcune delle operazioni descritte precedentemente.

5.1.2 Custom reader

Gli ambienti di sviluppo rendono possibile la creazione di applicativi che offrano le stesse potenzialità dell’Acrobat Reader® personalizzandone le caratteristiche. A tale riguardo Adobe® fornisce un insieme di oggetti Visual Basic, della classe AcroExch, che rende possibile la progettazione di interfacce utente basate su tecnologie OLE (Object Linking and Embedding), in particolare essa è articolata in:

• AcroExch.App: è possibile collegare l’applicazione custom all’ambiente Acrobat®, in modo da poter controllare eventuali visualizzatori proprietari esterni; inoltre fornisce un’interfaccia verso tale ambiente attraverso cui è possibile accedere alla barra dei menù e dei pulsanti in modo da poter utilizzare funzioni già implementate altrimenti inaccessibili. Il livello applicazione fornisce l’accesso alla rappresentazione di un file PDF sullo schermo, detta AVDoc.

• AcroExch.AVDoc: rappresenta l’oggetto che controlla le proprietà di visualizzazione di un documento PDF all’interno di una finestra, sia interna che esterna all’applicazione. Ad ogni documento visualizzato è associato un AVDoc.

Capitolo 5 ~ Applicativi software 52

• AcroExch.AVPageView: controlla la parte di un documento visualizzabile all’interno di una pagina. Ogni AVDoc possiede un AVPageView e viceversa, contenente, per il documento attivo, riferimenti a oggetti PDDoc e PDPage.

• AcroExch.Hilite: rappresenta una regione di testo selezionata in un documento PDF. L’oggetto ha un solo metodo che è utilizzato da un PDPage per creare oggetti PDTextSelect.

• AcroExch.PDAnnot: rappresenta un’annotazione all’interno di una pagina appartenente ad un documento PDF; è possibile creare due tipi di annotazione:

o PDTextAnnot

o PDLinkAnnot

o Custom Annotation

• AcroExch.PDBookmark: ogni bookmark ha un titolo che appare sulla schermo e specifica un’azione da eseguirsi al click del mouse. Essi possono essere creati sia automaticamente dall’utente tramite l’interfaccia dell’applicazione sia programmati. L’azione tipica associata consiste nello spostare la visualizzazione nel nuovo contesto.

• AcroExch.PDDoc: rappresenta una sottoclasse di un documento PDF. Esiste una corrispondenza tra PDDoc ed ASFile:il primo è un oggetto non visualizzabile relativo ad un AVDoc, mentre il secondo corrisponde ad una rappresentazione ad alto livello di un file PDF anche suddiviso su più file fisici. Attraverso i PDDoc l’applicazione è in grado di eseguire la maggior parte delle operazioni riguardanti la selezione e la ricerca di parole oltre che alla creazione e alla cancellazione di thumbnail.

• AcroExch.PDPage: rappresenta una singola pagina all’interno di un documento PDF; così come un file PDF è composto da pagine, un PDDoc è composto da PDPage. Contiene una serie di oggetti che rappresentano la grafica della pagina (PDGraphic), una lista di risorse utilizzate nella visualizzazione, annotazioni (PDAnnot), un’immagine thumbnail opzionale e la sequenza degli article utilizzati nella pagina. La numerazione delle pagina inizia da 0.

• AcroExch.PDTextSelect: Rappresenta, all’interno di una singola pagina, un insieme o gruppi di parole anche disgiunte. Viene rappresentato da uno o più range di testo, che contengono, al proprio interno, il numero di parole.

Capitolo 5 ~ Applicativi software 53

Si deve notare che per utilizzare il reader sviluppato con il sistema di oggetti OLE, è necessario che l’intero pacchetto Adobe Acrobat® sia installato nel sistema.

Figura 5.1 Oggetti e metodi OLE

Capitolo 5 ~ Applicativi software 54

5.2 Writer Fanno parte di questa categoria tutti gli applicativi ed i metodi utilizzati per generare file PDF. Si tenga presente che a differenza di quanto si può fare con altri formati elettronici, per creare un file PDF è necessario convertire un documento già esistente; non è possibile cioè scrivere in ambiente Adobe® come lo si fa in ambiente Office® o similari. Diversamente dai reader, vi appartengono solo i programmi proprietari di Adobe® di alcuni dei quali verrà data una breve descrizione.

5.2.1 Acrobat PDFWriter®

In ambiente Windows si tratta di un driver GDI per una stampante virtuale in grado di generare un file PDF; si possono gestire le impostazioni sia tramite un’apposita interfaccia di controllo sia tramite il registro di configurazione di Windows®. In generale è il metodo più veloce per generare un PDF da un file in altro formato elettronico, presenta comunque una serie di incovenienti di conversione che lo rendono inadatto a successive elaborazioni eseguite sul documento.

5.2.2 Acrobat Distiller®

L’applicazione converte documenti scritti in linguaggio Postscript in file PDF; è possibile controllare una serie di parametri tramite operatori inseriti direttamente nel file sorgente oppure tramite l’interfaccia di controllo. Si può specificare la compressione di testo e grafica, la codifica e la risoluzione delle immagini, l’embedding dei font e così via. Il pacchetto include un’interfaccia grafica, un’interfaccia OLE ed un programma utilizzabile a linea di comando. Genera un file PDF ben strutturato ed utilizzabile anche in successive elaborazioni.

5.2.3 Acrobat Capture®

Serve per convertire direttamente in formato PDF documenti cartacei tramite uno scanner; fornisce prestazioni OCR (Optical Character Recognition) per generare documenti in cui si possono eseguire ricerche di testo. Oltre all’interfaccia grafica fornisce un’interfaccia OLE.

5.2.4 Acrobat®

Permette l’elaborazione di documenti PDF esistenti aggiungendo o modificando oggetti, cambiando le impostazioni di sicurezza, inserendo riferimenti, note, segnalibri, ecc…

Capitolo 5 ~ Applicativi software 55

Le grandi potenzialità del programma possono essere estese tramite plug-in proprietari, tra cui:

• Digital Signature: gestisce le firme digitali nei documenti;

• Acrobat Form: gestisce l’utilizzo dei documenti come form;

• Acrobat Search: gestisce la ricerca avanzata all’interno di documenti;

• Weblink: gestisce un’interfaccia verso un browser;

• Web Capture: converte pagine di un sito Web in un file PDF.

Inoltre si possono aggiungere altri Plug-in sviluppati da ditte esterne o aggiungerne dei propri, personalizzando in modo considerevole il sistema.

5.3 Plug-in Sono programmi, che aggiungono funzionalità all’ambiente, caricati durante l’inizializzazione sia di Acrobat® sia del Reader®; in ambiente Windows® sono sviluppati tramite DLL. Per poter eseguire una personalizzazione della modifica dei documenti, in modo da aggiungere tramite procedure automatiche campi, sicurezza ed altro, si è reso necessario lo sviluppo di un plug-in in ambiente Acrobat®. Verranno ora illustrate le caratteristiche e le principali proprietà.

5.3.1 Caricamento ed inizializzazione

Nel momento in cui Acrobat® viene caricato, automaticamente ricerca all’interno della directory PLUG_INS e sue sottodirectory eventuali plug-in; eventuali errori nella comunicazione con l’ambiente non comportano errori nel caricamento degli altri. La struttura principale deve seguire certe regole:

• implementare una funzione PIHandshake, definita tramite un opportuno prototipo, che riceve e specifica i dati ed alcune procedure di comunicazione con l’ambiente;

• specificare una procedura di Unload, nella struttura PIHandshake, che esegua la deallocazione della memoria, il rilascio degli oggetti utilizzati e la rimozione dei menù aggiunti all’inizializzazione; si rende necessaria per garantire la compatibilità con versioni future, in quanto probabilmente Acrobat® eseguirà lo scaricamento dinamico dei plug-in;

Capitolo 5 ~ Applicativi software 56

• non utilizzare finestre di dialogo nelle routine di inizializzazione poichè potrebbe interferire con il corretto caricamento di Acrobat®; si deve ricordare che Acrobat® può essere eseguito anche tramite eventi e non si può quindi prevedere l’esistenza di un utente alla console.

5.3.2 Comunicazioni

I plug-in comunicano con l’ambiente attraverso:

• HFT (Host Function Table): è una tabella di puntatori, caricata all’inizializzazione, condivisa da Acrobat® e dai plug-in; viene impiegata per richiamare funzioni di Acrobat® o di altri plug-in.

• Callback: permettono al plug-in di rispondere, con apposite procedure, a eventi scatenati nell’ambiente o da un’azione dell’utente.

• Notification: si riferiscono ad azioni che possono avvenire in ogni momento come ad esempio l’apertura di un documento.

Per utilizzarli si devono rispettare alcune regole:

• Assicurare il corretto comportamento del plug-in anche in assenza degli HFT da importare e restituire, in questo caso, una notifica di errore.

• Utilizzare ASCallbackCreateProto per creare funzioni callback invece dei sistemi standard di Windows®.

• Le callback devono essere registrate tramite la suddetta funzione una sola volta; quando non sono più utilizzate devono essere rilasciate utilizzando ASCallbackDestroy.

• Chiamare i metodi corretti per generare notification; non è indispensabile per il corretto funzionamento del plug-in ma, se non eseguito, potrebbe causare problemi ad altre applicazioni.

5.3.3 Handling delle eccezioni

All’interno dell’SDK è stato ricostruito il meccanismo di gestione delle eccezioni del C++ grazie alle macro DURING, HANDLER, END_HANDLER che definiscono la regione critica e le eventuali azioni da eseguire in caso di cattura di un eccezione. Si deve seguire un certo insieme di regole:

Capitolo 5 ~ Applicativi software 57

• delimitare il codice sospetto usando blocchi DURING / HANDLER;

• all’interno dei suddetti blocchi non utilizzare RETURN, poichè il loro utilizzo comporta il caricamento nello stack delle eccezioni di alcuni frame che devono essere rimossi, tramite E_RETURN, prima di ritornare dalla funzione;

• viceversa non devo esistere chiamate ad E_RETURN fuori dai blocchi di eccezioni, per lo stesso motivo suddetto;

• rilasciare tutte le risorse qualora avvenga un’eccezione;

• le variabili utilizzate nei blocchi delle eccezione dovrebbero essere dichiarate volatile poichè il sistema di eccezioni non garantisce la coerenza delle variabili memorizzate nei registri di sistema;

• nel caso di blocchi annidati non si deve ritornare dal più interno, per problemi di coerenza dello stack;

• verificare la validità degli oggetti con il metodo IsValid se esiste la possibilità che Acrobat® li abbia rilasciati;

• verificare che la versione utilizzata di Acrobat® sia in grado di supportare le funzionalità del plug-in;

5.3.4 Acquisizione e rilascio degli oggetti

Ogni qual volta venga acquisito un oggetto, con i metodi Acquire, lo si deve necessariamente rilasciare, mediante i metodi Release. Qualora Acrobat® trovi oggetti non rilasciati, cioè con reference count non nullo, quando non sono più necessari, verrà scatenata un’eccezione.

5.3.5 Allocazione di memoria

Per rispettare dei vincoli di compatibilità non possono essere usate le normali funzioni di allocazione dinamica di memoria, bensi si devono utilizzare Asmalloc ed Asfree.

5.3.6 Sicurezza

I documenti possono essere criptati per proteggere il loro contenuto da accessi non autorizzati, ciò viene consentito grazie all’esistenza un gestore di sicurezza specificato

Capitolo 5 ~ Applicativi software 58

nell’encryption dictionary, con il valore della chiave Encrypt nel trailer. Vengono protette in questo modo solo le stringhe e gli stream, mentre altri tipi di dato, utilizzati per gestire la struttura del documento, non sono codificati; gli elementi protetti sono criptati utilizzando l’algoritmo RC41 che previene l’accesso causato dalla semplice rimozione della password. Oltre alla codifica dei testi, altre possibili protezioni applicabili ad un documento sono:

• password di apertura (User Password);

• password di modifica delle impostazioni (Owner Password);

• permessi di stampa, selezione testo ed immagini, aggiunta note e di modifica dei contenuti.

Si deve utilizzare la funzione PDDocGetPermissions per controllare i permessi relativi al file in uso, prima di operare manipolazioni.

5.4 SDK Adobe® fornisce un insieme di librerie, documentazioni, esempi e template che permettono la progettazione e lo sviluppo di plug-in e prodotti perfettamente integrati con l’ambiente Acrobat®. È stato sviluppato un insieme di oggetti che consentono la creazione, la modifica e la sostituzione di parti del documento o della sua struttura; ad alto livello questi ultimi possono essere suddivisi in layer:

• Acrobat Viewer (AV) Layer: i suoi metodi permettono ai plug-in di manipolare i componenti dell’ambiente stesso, come per esempio i menu e le relative voci.

• Portable Document (PD) Layer: fornisce accesso agli oggetti che compongono il documento PDF, come per esempio le pagine e le annotazioni; lo si può ulteriormente suddividere in:

o PDFEdit: raggruppa il contenuto delle pagine in oggetti di cui è possibile modificare parametri e attributi; permette ai plug-in di leggere, scrivere, modificare e creare contenuti e pagine che possono a loro volta inglobare font ed immagini.

1 Per ulteriori dettagli consultare http://www.rsa.com

Capitolo 5 ~ Applicativi software 59

o PDSEdit: riguarda le caratteristiche e le informazioni sulla struttura del documento, che viene costruita, indipendentemente dalla sua rappresentazione fisica, tramite puntatori.

• Acrobat Support (AS) Layer: fornisce funzioni platform-indipendent che riguardano ad esempio la manipolazione dei file o l’allocazione di memoria.

• Cos Layer: garantisce l’accesso ai blocchi di basso livello utilizzati per manipolare i dati, come i dizionari e stringhe.

Figura 5.2 Acrobat Layer

Le prime due lettere del nome di un oggetto o di un metodo indicano l’appartenenza ad un determinato layer; è ora possibile dare una panoramica più dettagliata di tali oggetti e delle loro relazioni. Gli oggetti principali che vengono utilizzati sono:

• CosDoc: è la rappresentazione di un documento PDF a basso livello; non si può creare direttamente ma deve essere ottenuto come risultato di una funzione.

• ASFile e ASFileSys: incapsula l’accesso ai file e fornisce un’interfaccia comune al viewer, alle applicazioni ed ai plug-in verso il file system su diverse piattaforme. Un ASFile è una rappresentazione opaca di un file aperto, contenente un ASPathName ed un ASFileSys, che rappresentano rispettivamente il percorso del file specifico del sistema ed un insieme di funzioni per accedere ai diversi file system.

• PDDoc: è una rappresentazione logica di un documento PDF aperto; esiste una corrispondenza diretta fra PDDoc e ASFile. Un’applicazione può creare o aprire un documento utilizzando un ASFileSys e un ASPathName che solitamente si riferiscono a file su disco. Ogni documento contiene un albero di pagine, può

Capitolo 5 ~ Applicativi software 60

contenere un albero di bookmark ed articoli, ed infomazioni e strutture di sicurezza.

• AVDoc: rappresenta un documento visualizzato in una finestra, ne esiste uno solo; a differenza di un PDDoc, è sempre associato ad una finestra.

• AVWindow: fornisce metodi per creare e gestire finestre; i plug-in possono utilizzare i metodi dell’oggetto per creare proprie finestre di dialogo

• AVPageView: riguarda l’area del viewer che visualizza il contenuto di una pagina; ogni AVDoc possiede un AVPageView e viceversa, contiene riferimenti a oggetti di tipo PDDoc e PDPage riferiti al documento attivo. Si utilizza per visualizzare una determinata pagina, scegliere il fattore di scala, evidenziare una o più parole e così via. Esistono casi particolari in cui, nella visualizzazione in continuo delle pagine2, esso non sia riferito ad una specifica pagina; per fissare il riferimento di solito di usa il metodo AVPageViewSetPageNum.

Figura 5.3 Document Object Interrelationship

2 La visualizzazione può essere: a pagina singola, in continuo o a pagine affiancate.

Capitolo 5 ~ Applicativi software 61

• CosObj: è un oggetto generale in un file PDF e può essere di qualunque tipo appartenente al Cos layer.

• PDFileSpec: viene usato per specificare un file come oggetto di un’azione; può essere creato da un ASPathName o da un CosObj ed è di due tipi:

o un pathname platform-independent;

o una struttura dati contenente uno o più modi per localizzare il file su piattaforme differenti.

Figura 5.4 File I/O Object Interrelationships

62

Capitolo 6

Progetto e struttura di un’applicazione

in ausilio al commercio elettronico

Nei capitoli precedenti si sono descritte le caratteristiche generali delle applicazioni di commercio elettronico, di vari formati elettronici, motivando la scelta per il PDF, e si sono analizzati i vari applicativi che ne permettono l’utilizzo. In particolare nei paragrafi successivi verranno presentate le fasi dello sviluppo di un applicativo e l’analisi delle sue proprietà.

6.1 Struttura generale Nell’ottica di fornire un servizio di gestione elettronica della distribuzione di appunti universitari, si deve garantire l’accesso agli utenti interessati ed anche la possibilità di controllo da parte di un operatore, permettendogli di gestire il sistema ed il flusso dati sia ad alto che a basso livello. L’operatore occasionale sarà in grado di accedere al sistema progettato grazie ad un’interfaccia che riduce al minimo i requisisti di conoscenza dell’applicativo base; un operatore esperto invece, sarà in grado di interagire con il sistema e di modificare le sue impostazioni. La struttura generale del progetto realizzato è schematizzata in figura.

Capitolo 6 ~ Progetto e struttura di un’applicazione in ausilio al commercio elettronico 63

Figura 6.1 Struttura generale

La parte principale del sistema è sviluppata come un plug-in per l’applicativo Adobe Acrobat; fornisce un insieme di comandi utilizzabili sia all’interno dell’ambiente sia per mezzo di un’interfaccia di comunicazione realizzata ad hoc. Il database raccoglie al suo interno le informazioni necessarie al completamento del processo di formattazione del documento, infatti è strutturato in modo da contenere i seguenti campi:

• Codice Documento

• Autore

• Autori in forma abbreviata

• Titolo

L’interazione con il web viene realizzata attraverso un’interfaccia on-line che comunica con il resto del sistema tramite uno scheduler, che elabora le richieste multiple ricevute e le serializza prima di inviarle al plug-in. Tutto il sistema brevemente descritto, presuppone l’esistenza di documenti elettronici in formato PDF; possono venire realizzati con il processo illustrato in Figura 6.2:

Figura 6.2 Passaggio da formato cartaceo a formato PDF

I documenti in formato cartaceo vengono convertiti in formato elettronico con l’ausilio di uno scanner; il formato elettronico citato, che può ossere anche un punto di partenza, comprende i file doc di Word®, i Postscript e i formati di altri word processor da qui il passaggio verso lo standard PDF si ottiene con gli applicativi ed i metodi descritti nel capitolo 4.

Adobe Acrobat

Plug-in

Interfaccia Off-line

InterfacciaOn-line

Data Base

Scheduler

Documenti in formato elettronico

Operatore alla console

Richieste dal Web

Operatore alla console

Capitolo 6 ~ Progetto e struttura di un’applicazione in ausilio al commercio elettronico 64

Si descriveranno ora più in dettaglio i singoli elementi del sistema.

6.2 Struttura del plug-in Si è scelto di articolare il plug-in in varie funzioni, interagenti fra loro ed applicabili a singoli documenti PDF, per la necessità di disporre di vari formati del documento originale utilizzabili per diversi scopi. La creazione della struttura sotto indicata è stata influenzata da fattori commerciali ed implementativi.

Figura 6.3 Funzioni del plug-in

Le motivazioni commerciali hanno determinato la creazione delle funzioni:

• Documento Master: gestisce il passaggio da documento grezzo ad un formato intermedio, documento formattato, in cui appaiono informazioni riguardanti l’origine, il suo contenuto e di copyright.

• Copia Omaggio: genera una versione completa, da distribuire a fini promozionali, che contiene l’intero documento formattato, opportunamente modificato da scritte aggiuntive su ogni pagina, per evitarne una diffusione incontrollata.

Documenti PDF

Plug-in

Documento Master

Copia Omaggio

Copia Abstract

Estrazione Testo

Copia Vendibile

Creazione Copertina

Capitolo 6 ~ Progetto e struttura di un’applicazione in ausilio al commercio elettronico 65

• Copia Abstract: produce una versione dimostrativa, liberamente distribuibile, contenente solamente alcune parti del documento formattato, sulle quali vengono aggiunte scritte destinate ad evitare la lettura completa delle pagine.

• Copia Vendibile: genera la copia acquistabile on-line, completa di formattazione e resa unica dal codice dell’acquirente stampato su tutte le pagine.

Altre motivazioni di sviluppo e di gestione hanno richiesto la creazione di funzioni di supporto:

• Creazione Copertina: gestisce la creazione di una copertina personalizzabile da aggiungere al documento grezzo contenente le informazioni utili alla formattazione e generali di copyright.

• Estrazione Testo: esporta tutto il testo contenuto nel documento in modo da poterlo utilizzare all’interno di uno specifico motore di ricerca.

Figura 6.4 Flusso di lavorazione dei documenti

Oltre alle funzioni per la gestione dei documenti, il plug-in supporta la comunicazione con applicazioni esterne, necessaria per rendere accessibili i comandi sia da web che da altre applicazioni; la soluzione si è resa necessaria nell’ottica di una diversificazione degli operatori che saranno quindi in grado di interagire con il sistema senza accedere all’ambiente Acrobat. Le comunicazioni avvengono tramite un server, sempre attivo all’interno del plug-in, che gestisce ed elabora i messaggi provenienti da un canale esterno ed attiva le funzioni richieste.

Documento grezzo (PDF)

Documento Master

Creazione copertina

Copia omaggio

Copia Abstract

Copia vendibile

Estrazione testo File copertina

Capitolo 6 ~ Progetto e struttura di un’applicazione in ausilio al commercio elettronico 66

Figura 6.5 Struttura di comunicazione

6.2.1 Creazione copertina

Una parte del passaggio da documento grezzo a documento master consiste nell’inserimento di una copertina con certe informazioni posizionate in modo differente nella pagina e nell’aggiunta di una sezione di copyright. Le esigenze di mercato richiedono che essa possa cambiare a seconda di parametri variabili nel tempo oppure adattarsi a documenti particolari; per esempio una variazione del logo dell’azienda correlata oppure un riposizionamento dei campi all’interno della pagina. La soluzione più immediata, ma poco efficiente dal punto di vista informatico, sarebbe quella di creare svariate copertine in formato PDF in modo da sopperire a questi inconvenienti; per problemi che saranno discussi successivamente si è pensato di sviluppare un’applicazione ad hoc. Grazie ad essa si permette di aggiornare rapidamente la copertina senza doverne mantenere diverse versioni, di aggiungere e modificare gli oggetti in essa contenuti sia per via grafica che per via testuale. L’applicazione grafica mostrata in Figura 6.6 permette, tramite la visualizzazione di un modello di foglio A4, di posizionare vari oggetti al suo interno; genera un file testuale di interscambio, che può essere modificato anche manualmente secondo certe regole.

Server del Plug-in

(Gestore Messaggi)

Master

Omaggio

Abstract

Testo

Utente

Copertina

Capitolo 6 ~ Progetto e struttura di un’applicazione in ausilio al commercio elettronico 67

Figura 6.6 Interfaccia copertina

Sulla sinistra viene rappresentato un modello proporzionato di formato A4 nel quale si posizionano gli oggetti selezionati dall’elenco presente a destra; la prima pagina è la rappresentazione della corrispondente nella copertina mentre la seconda, selezionabile tramite la barra a scorrimento, funge da modello di posizionamento degli oggetti per le pagine successive del documento. Ogni pagina può contenere un numero illimitato di oggetti di tipo Immagine e Testo Statico e solamente uno per ogni altro tipo. Ogni categoria di oggetti viene rappresenta da un rettangolo di colore diverso che ne determina la posizione e la dimensione massima; utilizzando il tasto destro del mouse su un oggetto si può accedere al menù che permette di spostarlo, ridimensionarlo, selezionarlo ed impostarne le proprietà. Vediamo più in dettaglio i tipi di oggetto a cui vengono associati diversi parametri:

Capitolo 6 ~ Progetto e struttura di un’applicazione in ausilio al commercio elettronico 68

• Titolo: questo campo indica la posizione del titolo del documento all’interno della copertina; la sua larghezza specifica la larghezza massima occupabile da una riga del titolo reale, mentre l’altezza indica, relativamente al corpo del carattere, il massimo di righe su cui verrà scritto. I parametri dell’oggetto sono tipici di un testo generico:

o Font

o Stile

o Corpo

o Colore

Si veda, in figura, un esempio di scelta dei parametri di un testo; si deve notare che il campo Testo Statico, che in qui è disabilitato, si riferisce solo all’omonimo oggetto.

Figura 6.7 Selezione delle proprietà di un testo

• Autori: come per l’oggetto precedente, indica la posizione della scritta contenente gli autori del documento; la sua larghezza precisa la larghezza massima di una riga mentre l’altezza il numero massimo di righe. Le proprietà sono le stesse del precedente.

• Immagine: specifica la posizione di una immagine selezionata mentre le dimensioni del rettangolo vengono dimensionate a quelle effettive della bitmap; l’unico parametro che la caratterizza è il percorso del file.

Capitolo 6 ~ Progetto e struttura di un’applicazione in ausilio al commercio elettronico 69

Figura 6.8 Parametri dell’oggetto immagine

• Codice: rappresenta la posizione del codice univoco del documento; le dimensioni del rettangolo che lo identifica non sono vincolanti per l’oggetto. Le sue proprietà sono quelle di un testo generico.

• Iniziali Autori: è un oggetto posizionabile ovunque nelle due pagine anche se è pensato per essere inserito solo all’interno del documento, quindi nella seconda pagina dell’interfaccia. Le sue proprietà sono quelle di un testo generico.

• Titolo Troncato: rappresenta l’oggetto che contiene una versione abbreviata del titolo; è stato pensato per essere posizionato nella seconda pagina, ovvero nel modello per tutte le pagine del documento, ma comunque si può inserire anche nella prima. Il titolo viene troncato ad un numero di caratteri dipendente dalla larghezza del rettangolo nell’interfaccia copertina considerando anche il font ed il corpo del carattere. Le sue proprietà sono quelle di un testo generico.

• Pag. X: indica la posizione in cui viene inserito il numero di pagina nel documento. Le dimensioni del rettangolo non sono vincolanti e le proprietà sono quelle di un testo generico.

• Codice Cliente: indica la posizione del codice univoco che identifica l’acquirente. Le proprietà sono le stesse di un testo generico e le dimensioni del rettangolo che lo rappresenta non sono significative.

Capitolo 6 ~ Progetto e struttura di un’applicazione in ausilio al commercio elettronico 70

• Testo Statico: indica un testo fisso da inserire sia nella copertina che nelle pagine del documento da elaborare; può essere posizionato ovunque anche in copia multipla. Le dimensioni orizzontali del rettangolo vengono impostate a seconda della scritta contenuta nel campo omonimo delle proprietà.

Il risultato dell’applicativo è un file testuale di scambio che può anche essere generato e modificato manualmente seguendo le regole specificate nello schema:

Figura 6.9 Sintassi file inizializzazione copertina

Si deve notare che la X che segue la parola chiave Pagina deve assumere i valori 1 e 2 poiché il modello di copertina è formato da due pagine; la prima racchiude i campi della prima pagina del documento formattato mentre la seconda è un modello di posizionamento del campi che vanno inseriti nelle altre pagine, a partire dalla terza del documento. Ogni sezione relativa ad una pagina deve contenere, secondo lo schema, la parola chiave Numero oggetti = seguita dal numero di oggetti che ne sono contenuti. Seguono gli oggetti specificati dalla parola chiave Object in aggiunta al tipo ed una lista di parametri ad essi relativa come descritto in Figura 6.9.

Pagina X Numero oggetti = Y Object name1 - parametro 1 - parametro 2 ... - parametro n Object name2 - ... ... Object nameY - ...

Capitolo 6 ~ Progetto e struttura di un’applicazione in ausilio al commercio elettronico 71

Figura 6.10 Sintassi parametri degli oggetti

Si noti che, nella Figura 6.10, le scritte in grassetto indicano i campi obbligatori e le scritte in corsivo le parole chiave. Di seguito se ne riporta un esempio: Pagina 1 Numero oggetti = 5 Object Autori - Posizione X Min = 22,923 - Posizione Y Min = 45,225 - Posizione X Max = 78,223 - Posizione Y Max = 58,893 - Lunghezza Stringa = 38 - Font = Times-Roman - Corpo = 16 - Colore = 0,0,0 Object Codice - Posizione X Min = 74,785 - Posizione Y Min = 1,005 - Posizione X Max = 93,69627 - Posizione Y Max = 4,637097 - Lunghezza Stringa = 18 - Font = Courier - Corpo = 10 - Colore = 0,0,0

Object Titolo - Posizione X Min = 16,619 - Posizione Y Min = 13,065 - Posizione X Max = 85,96 - Posizione Y Max = 34,17 - Lunghezza Stringa = 35 - Font = Times-Bold - Corpo = 20 - Colore = 0,0,0 Object Immagine - Posizione X Min = 1,719198 - Posizione Y Min = 68,54839 - Posizione X Max = 46,57116 - Posizione Y Max = 99,28764 - Path = c:\appuntinet\logo.bmp - Width = 356 - Height = 345 Object Testo Statico - Posizione X Min = 50,71633 - Posizione Y Min = 86,89516 - Posizione X Max = 86,53295 - Posizione Y Max = 89,71774

- Lunghezza Stringa = 31 - Font = Courier - Corpo = 12 - Colore = 0,0,0 - Testo = http://www.appunti.net/ Pagina 2 Numero oggetti = 4 Object Titolo Troncato - Posizione X Min = 2,292 - Posizione Y Min = 1,407 - Posizione X Max = 46,991 - Posizione Y Max = 5,226 - Lunghezza Stringa = 43 - Font = Courier - Corpo = 10 - Colore = 0,0,0 Object Iniziali Autori - Posizione X Min = 9,169054 - Posizione Y Min = 94,95968 - Posizione X Max = 33,87005 - Posizione Y Max = 98,77866

- Lunghezza Stringa = 32 - Font = Times-Roman - Corpo = 8 - Colore = 0,0,0 Object Pag. X - Posizione X Min = 86,819 - Posizione Y Min = 94,95968 - Posizione X Max = 97,708 - Posizione Y Max = 98,49 - Lunghezza Stringa = 10 - Font = Courier - Corpo = 10 - Colore = 0,0,0 Object Codice Cliente - Posizione X Min = 62,46418 - Posizione Y Min = 94,95968 - Posizione X Max = 74,7851 - Posizione Y Max = 98,58871 - Lunghezza Stringa = 12 - Font = Courier - Corpo = 10 - Colore = 0,0,0

Figura 6.11 Esempio di file di inizializzazione della copertina

Object Tipo1 - Posizione X Min = xmin - Posizione Y Min = ymin - Posizione X Max = xmax - Posizione Y Max = ymax - Lunghezza Stringa = ls - Font = font - Corpo = corpo - Colore = R,G,B

Object Tipo2 - Posizione X Min = xmin - Posizione Y Min = ymin - Posizione X Max = xmax - Posizione Y Max = ymax - Lunghezza Stringa = ls - Font = font - Corpo = corpo - Colore = R,G,B - Testo = testo

Object Tipo3 - Posizione X Min = xmin - Posizione Y Min = ymin - Posizione X Max = xmax - Posizione Y Max = ymax - Path = path - Width = w - Height = h

Tipo1: - Titolo - Autori - Codice - Iniziali Autori - Titolo Troncato - Pag. X - Codice Cliente

Tipo2: - Testo Statico

Tipo3: - Immagine

xmin, ymin, xmax, ymax :percentuale rispetto ad un A4ls: numero intero font: si veda la tabella 4.2 corpo: numero intero R,G,B: componenti rgb di un colore path: percorso file w, h: numero di pixel

Capitolo 6 ~ Progetto e struttura di un’applicazione in ausilio al commercio elettronico 72

Il file prodotto con il suddetto sistema viene letto ed interpretato dal plug-in attraverso la funzione di creazione della copertina, che crea un documento PDF contenente tutti gli oggetti specificati dai parametri. Si noti che gli oggetti di testo, che nell’interfaccia copertina erano rappresentati da rettangoli colorati, sono indicati nel modello creato come stringhe corrispondenti alle parole chiave suddette, disposte su più righe coerentemente con le impostazioni.

Figura 6.12 Modello di copertina creata con l’applicativo sviluppato

6.2.2 Creazione documento Master

Il flusso di creazione dei documenti formattati prevede che si parta da un file PDF grezzo, ovvero creato con le tecniche spiegate nel capitolo 4, che gli si aggiunga una copertina opportuna contenente il modello di formattazione delle pagine; particolari documenti possono contenere oggetti PDF in posizioni sovrapposte ai campi da inserire, perciò si è aggiunta una funzione che, una volta impostati i margini superiore ed inferiore sia graficamente che in modo parametrizzato, elimini tutto ciò che ne è interno. Infine sarà possibile impostare i parametri di sicurezza del documento. La sequenza di procedure necessarie è la seguente:

Capitolo 6 ~ Progetto e struttura di un’applicazione in ausilio al commercio elettronico 73

• Caricamento parametri: avviene solo nel caso di utilizzo automatico dell’applicazione, ovvero tramite le interfacce mentre all’interno dell’ambiente Acrobat i parametri vengono gestiti tramite finestre di dialogo. Nell’ambito del comando in questione, per parametri si intende i percorsi di file e le informazioni da inserire nel modello di copertina. Si sono progettate diverse modalità per specificare i parametri:

o Automatica: vengono prelevati da un database predefinito.

o File: vengono prelevati da un database da specificare.

o Dialogo: una finestra richiede l’inserimento manuale delle voci.

Figura 6.13 Modalità di caricamento dei parametri

• Controllo della sicurezza: per poter modificare ed aggiungere oggetti ad un documento PDF è necessario che sia privo di protezioni; nel caso in cui non sia verificato, e si sta operando in ambiente Acrobat, si deve provvedere alla loro rimozione, se invece si opera tramite interfaccia il documento non potrà essere formattato.

Capitolo 6 ~ Progetto e struttura di un’applicazione in ausilio al commercio elettronico 74

• Eliminazione dei margini: si possono impostare le zone adiacenti alle estremità superiori ed inferiori del documento in modo da rimuovere tutti gli oggetti ivi contenuti; si fa eccezione per gli oggetti che rientrano in entrambi i margini, in quanto potrebbero esserci immagini di grandi dimensioni. In ambiente Acrobat questa soluzione è stata implementata anche in modo grafico come si può vedere dalla figura.

Figura 6.14 Impostazione dei margini da eliminare

• Inserimento della copertina: vengono prelevate dal file specificato come copertina le due pagine del modello e la pagina di copyright ed aggiunte all’inizio del file in questione; per ragioni di uniformità di formato, durante l’aggiunta delle suddette pagine, vengono calcolate, in base al modello, la

Capitolo 6 ~ Progetto e struttura di un’applicazione in ausilio al commercio elettronico 75

regione stampabile ovvero il cropBox e le dimensioni della pagina ovvero il mediaBox, che vengono applicate a tutte le restanti pagine del documento. Il risultato finale è di avere tutte le pagine in formato A4.

• Modifica dell’intestazione: la prima pagina del documento, ovvero la prima pagina del modello della copertina, contiene gli oggetti di testo che devono essere modificati in modo dipendente dal documento; il contenuto di tutti gli oggetti di testo, corrispondenti alle parole chiave, viene sostituito con le informazioni correlate prelevate dal database oppure precedentemente fornite con il comando.

Figura 6.15 Modifica dell’intestazione di un documento

• Impostazione delle pagine: la seconda pagina del documento contiene le informazioni di copyright e non dovrebbe essere modificata; la terza pagina invece è stata pensata solamente come modello per le altre pagine del documento. Allo stesso modo dell’intestazione, vengono prelevati i campi significativi, adattati con le informazioni fornite, o prelevate dal database, e opportunamente elaborate, ed aggiunti in tutte le pagine restanti.

Capitolo 6 ~ Progetto e struttura di un’applicazione in ausilio al commercio elettronico 76

Figura 6.16 Impostazione delle pagine di un documento

Si può notare dalla figura che, oltre ad essere state inserite nuove informazioni, le dimensioni della pagina sono cambiate, a causa del fatto che il documento originale non era in formato A4.

• Impostazione della sicurezza: una delle potenzialità del formato PDF è la possibilità di impostare diversi livelli di sicurezza; nello sviluppo dell’applicazione si è voluta mantenere la coerenza con le impostazioni che l’ambiente Acrobat fornisce, ovvero diversi livelli di protezione. Un file PDF® può essere protetto sia con una password utente richiesta per la visualizzazione sia con una password di owner richiesta per modificare le protezioni. Il documento master in fase di creazione può essere protetto, ma per rispettare il flusso logico delle operazioni che saranno descritte dovrebbe essere privo di protezioni.

6.2.3 Creazione copia Omaggio

Il passaggio precedente crea un file che, secondo il flusso logico precedentemente presentato, non dovrebbe appartenere al flusso di commercializzazione ma ne è solamente la base da cui partire. Uno dei documenti pensati per essere direttamente commerciabili è quello identificato come copia omaggio. Senza volersi addentrare negli scopi commerciali di tale documento se ne spiegheranno i passaggi utili a crearlo e le sue caratteristiche.

Capitolo 6 ~ Progetto e struttura di un’applicazione in ausilio al commercio elettronico 77

• Caricamento parametri: come per la creazione del documento master, la procedura viene effettuata se si utilizza l’applicazione in modalità automatica, ovvero tramite interfacce; altrimenti in ambiente Acrobat si deve utilizzare una finestra di dialogo.

Figura 6.17 Impostazione dei parametri di copia omaggio

Si prevede che la copia omaggio abbia una scritta impostabile, in dimensioni, posizione, orientamento e colore, in ogni pagina; per diminuire l’impatto ottico del risultato, senza privare il documento del messaggio, si è voluto impostare la scritta in modo da visualizzare solo i contorni dei caratteri e non il riempimento.

• Controllo sicurezza: si presuppone che il file master sia stato impostato senza informazioni di sicurezza, qualora questa ipotesi non sia verificata, se si utilizza l’ambiente Acrobat® sarà possibile rimuoverle e procedere con la formattazione; nel caso in cui si utilizzino le interfacce, pensate per velocizzare e semplificare il lavoro, non si potrà procedere.

• Estrai pagine: nel caso della copia omaggio, la procedura estrae tutte le pagine del documento master e le inserisce in quello nuovo.

Capitolo 6 ~ Progetto e struttura di un’applicazione in ausilio al commercio elettronico 78

• Inserisci scritta: inserisce una scritta predefinita sulla copertina del documento.

• Inserisci testo: inserisce la scritta impostata nei parametri all’interno di ogni singola pagina del documento, fatta eccezzione per la copertina.

Figura 6.18 Esempio di copia omaggio

• Imposta sicurezza: gestisce la protezione del documento che sta per essere generato in modo da evitare accessi maliziosi al file oppure manipolazione dei contenuti.

6.2.4 Creazione copia Abstract

Si è pensato di inserire nel flusso commerciale un tipo di documento che permettesse la visione parziale, puramente dimostrativa, del prodotto finale. La creazione del documento si basa sugli stessi principi della copia omaggio così come le procedure necessarie; le sole differenze riguardano:

• Estrai pagine: le pagine da inserire nel documento finale non saranno tutte quelle dell’iniziale ma solo un sottoinsieme che può contenere oltre a pagine casuali, definite tramite percentuale, anche pagine richieste per mezzo di parametri.

• Inserisci scritta: non esiste in questo contesto.

Capitolo 6 ~ Progetto e struttura di un’applicazione in ausilio al commercio elettronico 79

• Inserisci testo: a livello implementativo le operazioni sono identiche, varia soltanto la finalità del risultato; si vuole infatti inserire una scritta che permetta la visione del documento ma ne riduca la leggibilità in modo da incentivare l’acquisto.

Figura 6.19 Esempio di copia abstract

6.2.5 Creazione copia vendibile

Si richiede che l’ultimo documento rientrante nel flusso commerciabile sia personalizzabile a seconda del cliente. Le fasi di creazione che riguardano l’inserimento dei parametri, il controllo e le impostazioni della sicurezza, sono identiche alle precedenti; si aggiunge solo una fase che gestisce l’inserimento del codice univoco dell’acquirente su tutto il documento. In questo caso, dopo l’elaborazione richiesta, è possibile utilizzare il salvataggio incrementale che, in base a quanto riferito sulla documentazione dell’SDK, permette un minor tempo di attesa; per eseguire il salvataggio incrementale basta che nella directory di destinazione del documento appena eleborato esista la versione precedente.

6.2.6 Estrazione testo

La funzione in questione non riguarda esplicitamente la creazione di documenti commerciabili bensì fornisce un supporto alla gestione del sito web; il risultato è un file che contiene, senza formattazioni, tutto il testo del documento originale su cui viene

Capitolo 6 ~ Progetto e struttura di un’applicazione in ausilio al commercio elettronico 80

applicata, utilizzabile all’interno di un motore di ricerca che possa selezionare i documenti in base al contenuto.

6.3 Struttura per la gestione on-line In un’ottica di gestione di documenti in formato elettronico, attraverso un sito web, si forniscono un insieme di funzioni in grado di utilizzare i comandi, descritti nelle sezioni precedenti, mediante la rete. Il sistema è composto da varie parti interagenti fra di loro; all’utente verrà presentata una pagina web attraverso cui sceglierà uno o più documenti e, dopo una fase di registrazione e di eventuale pagamento, comunicherà la propria intenzione di scaricarli. Dopo questa fase al sistema sarà noto il codice univoco dell’utente e le indicazioini dell’insieme dei file richiesti, da queste informazioni si potranno creare un insieme di comandi, con gli opportuni parametri, da inviare al plug-in.

Figura 6.20 Schema di comunicazione on-line

La figura mostra lo schema di funzionamento del sistema di comunicazione dei comandi al plug-in; nel seguito verranno illustrate in modo approfondito le sue parti:

• Creazione richiesta: è una funzione attivata dall’esterno che riceve il comando, relativo all’operazione da eseguire ed invia attraverso un canale di comunicazione pubblico un messaggio, contenente il comando ricevuto, i suoi parametri e l’indicazione di un canale di comunicazione privato, su cui aspetterà la risposta dell’avvenuta esecuzione. Si possono inviare più comandi contemporaneamente creando più richieste; la loro serializzazione sarà gestita dal canale di comunicazione.

• Server di ricezione messaggi: riceve attraverso il canale di comunicazione pubblico uno o più messaggi provenienti dal blocco precedente; ricevuto il

Comando

Comando

Acrobat

Plug-in

Serializzatore messaggi

Creazione richiesta Server

ricezione messaggi

Coda

Creazione richiesta

Comando | Pipe

Comando | Pipe

Comando | Pipe

Comando | Pipe

Comando

Risposta Risposta

Scheduler

Capitolo 6 ~ Progetto e struttura di un’applicazione in ausilio al commercio elettronico 81

messaggio, ne delega la gestione ad un nuovo flusso di esecuzione, ritornando in ascolto.

• Coda: le richieste vengono, in modo mutualmente esclusivo, accodate nella struttura.

• Serializzatore messaggi: preleva, dalla precedente struttura, un messaggio, ne estrae la parte relativa al comando ed i suoi parametri e li invia al canale di comunicazione del plug-in, attendendone una risposta; una volta ricevuta la inoltra al gestore della richiesta attraverso il canale privato specificato nel messaggio.

• Plug-in: riceve il comando ed i suoi parametri, lo esegue ed invia sullo stesso canale la risposta di avvenuta esecuzione o il messaggio d’errore.

Nella struttura precedentemente descritta si è fatto riferimento ai comandi ed i loro parametri; nella tabella 6.1 vedremo quali regole sintattiche dovranno essere utilizzate per la comunicazione dei comandi. Sono composti da una stringa su una sola riga, in cui il delimitatore ◊ rappresenta il carattere di codice Ascii 001, le parole chiave sono scritte in grassetto e vanno riportate in forma integrale, le scritte in corsivo vanno sostituite con i corrispondenti campi mentre le scritte fra parentesi sono solo commenti esplicativi. Riportiamone alcuni esempi:

Figura 6.21 Esempi di comandi

CREA COPERTINA◊◊◊◊c:\\appuntinet\\copertina.ini◊◊◊◊c:\\appuntinet\\copertina.pdf◊◊◊◊ c:\\appuntinet\\copyright.pdf◊◊◊◊ CREA MASTER◊◊◊◊f:\\appuntinet\\grezzi\\AP00001.pdf◊◊◊◊f:\\appuntinet\\master\\AP00001.pdf◊◊◊◊ f:\\appuntinet\\copertina.pdf◊◊◊◊AP00001◊◊◊◊Grande Fratello◊◊◊◊Daniele Berto - Jacopo Ghisio◊◊◊◊Grande Fra◊◊◊◊D.Berto J.Ghisio◊◊◊◊2◊◊◊◊ELIMINA MARGINI = FALSE◊◊◊◊HAS USER PASSWORD = FALSE◊◊◊◊HAS OWNER PASSWORD = FALSE◊◊◊◊P=FALSE◊◊◊◊E=FALSE◊◊◊◊S=FALSE◊◊◊◊N=FALSE◊◊◊◊ CREA ABSTRACT◊◊◊◊c:\\appuntinet\\master\\AP00001.pdf◊◊◊◊c:\\appuntinet\\abstract\\AP00001.pdf◊◊◊◊Appunti NET◊◊◊◊70◊◊◊◊150◊◊◊◊Times-Roman◊◊◊◊110◊◊◊◊50◊◊◊◊255◊◊◊◊0◊◊◊◊0◊◊◊◊10◊◊◊◊◊◊◊◊HAS USER PASSWORD = FALSE◊◊◊◊HAS OWNER PASSWORD = TRUE◊◊◊◊ABC◊◊◊◊P=FALSE◊◊◊◊E=TRUE◊◊◊◊S=TRUE◊◊◊◊N=TRUE◊◊◊◊ CREA OMAGGIO◊◊◊◊c:\\appuntinet\\master\\AP00001.pdf◊◊◊◊c:\\appuntinet\\omaggio\\AP00001.pdf◊◊◊◊ Campione Gratuito Vietata la vendita◊◊◊◊40◊◊◊◊100◊◊◊◊Times-Roman◊◊◊◊40◊◊◊◊90◊◊◊◊255◊◊◊◊0◊◊◊◊0◊◊◊◊100◊◊◊◊◊◊◊◊HAS USER PASSWORD = FALSE◊◊◊◊HAS OWNER PASSWORD = TRUE◊◊◊◊ABC◊◊◊◊P=FALSE◊◊◊◊E=TRUE◊◊◊◊ S=TRUE◊◊◊◊N=TRUE◊◊◊◊ ESTRAI TESTO◊◊◊◊f:\\appuntinet\\grezzi\\AP00001.pdf◊◊◊◊f:\\appuntinet\\testo\\AP00001.txt◊◊◊◊ DOWNLOAD FILE◊◊◊◊c:\\appuntinet\\master\\AP00001.pdf◊◊◊◊c:\\appuntinet\\utenti\\~temp\\AP00001.pdf◊◊◊◊ 0000◊◊◊◊Copertina:◊◊◊◊56,73352◊◊◊◊0,8064516◊◊◊◊74,49284◊◊◊◊4,43484◊◊◊◊15◊◊◊◊Courier◊◊◊◊8◊◊◊◊0◊◊◊◊0◊◊◊◊0◊◊◊◊Pagina:◊◊◊◊64,46992◊◊◊◊ 94,75806◊◊◊◊75,93123◊◊◊◊98,58871◊◊◊◊11◊◊◊◊Courier◊◊◊◊8◊◊◊◊0◊◊◊◊0◊◊◊◊0◊◊◊◊HAS USER PASSWORD = FALSE◊◊◊◊HAS OWNER PASSWORD = TRUE◊◊◊◊ABC◊◊◊◊P=FALSE◊◊◊◊E=TRUE◊◊◊◊S=TRUE◊◊◊◊N=TRUE◊◊◊◊

Capitolo 6 ~ Progetto e struttura di un’applicazione in ausilio al commercio elettronico 82

Tabella 6.1 (a) Regole di composizione di un comando

CREA MASTER ◊File Origine ◊File Destinazione ◊File di Copertina ◊Codice Appunto ◊Titolo ◊Autori ◊Titolo Troncato ◊Iniziali Autori ◊Inizio numerazione ◊Elimina Margini

= TRUE ◊Margine Superiore ◊Margine inferiore

(oppure) = FALSE ◊Has User Password = TRUE

◊Password di lettura documento

(oppure) = FALSE ◊Has Owner Password

= TRUE ◊Password di protezione Sicurezza

(oppure) = FALSE ◊P = TRUE

( Disable Printing ) (oppure) = FALSE ◊E = TRUE

( Disable Editing ) (oppure) = FALSE ◊S = TRUE

( Disable Selecting ) (oppure) = FALSE ◊N = TRUE

( Disable Note ) (oppure) = FALSE ◊

CREA ABSTRACT ( oppure ) CREA OMAGGIO

(ha gli stessi parametri)

◊File Origine ◊File Destinazione ◊Testo del Logo su tutte le pagine

◊Posizione orizzontale scritta

◊Posizione verticale scritta

◊Nome del Font (Font Type 1,vedi tabella 4.2)

◊Corpo del Font ◊Inclinazione della scritta

◊R ◊G ◊B ◊Percentuale di estrazione delle pagine

( 100% se si crea l’Omaggio)

◊Pagine fisse ◊Elimina Margini

= TRUE ◊Margine Superiore ◊Margine inferiore

(oppure) = FALSE ◊Has User Password

= TRUE ◊Password di lettura documento

(oppure) = FALSE ◊Has Owner Password

= TRUE ◊Password di protezione Sicurezza

(oppure) = FALSE ◊P = TRUE

( Disable Printing ) (oppure) = FALSE ◊E = TRUE

( Disable Editing ) (oppure) = FALSE ◊S = TRUE

( Disable Selecting ) (oppure) = FALSE ◊N = TRUE

( Disable Note ) (oppure) = FALSE ◊

CREA COPERTINA ◊File Origine ◊File Destinazione ◊File di Copyright ◊

ESTRAI TESTO ◊File Origine ◊File Destinazione ◊

Capitolo 6 ~ Progetto e struttura di un’applicazione in ausilio al commercio elettronico 83

Tabella 6.1 (b) Regole di composizione di un comando

DOWNLOAD FILE ◊File origine ◊File destinazione ◊Codice identificativo dell’Utente ◊Copertina : ◊Xmin ◊Ymin ◊Xmax ◊Ymax ◊Numero caratteri del codice ◊Nome del Font (Font Type 1,vedi tabella 4.2) ◊Corpo del Font ◊R ◊G ◊B ◊Pagina: ◊Xmin ◊Ymin ◊Xmax ◊Ymax ◊Numero caratteri del codice ◊Nome del Font (Font Type 1,vedi tabella 4.2) ◊Corpo del Font ◊R ◊G ◊B ◊Elimina Margini = TRUE

◊Margine Superiore ◊Margine inferiore

(oppure) = FALSE ◊Has User Password = TRUE

◊Password di lettura documento (oppure) = FALSE ◊Has Owner Password = TRUE

◊Password di protezione Sicurezza (oppure) = FALSE ◊P = TRUE ( Disable Printing ) (oppure) = FALSE ◊E = TRUE ( Disable Editing ) (oppure) = FALSE ◊S = TRUE ( Disable Selecting ) (oppure) = FALSE ◊N = TRUE ( Disable Note ) (oppure) = FALSE ◊

Capitolo 6 ~ Progetto e struttura di un’applicazione in ausilio al commercio elettronico 84

6.4 Struttura per la gestione off-line La gestione di un sito di commercio elettronico può richiedere, a seconda dei casi, un differente numero di operatori con diversi livelli competenza; per tale motivo, nel progetto, si è scelto di aggiungere un’applicazione di interfaccia per i comandi di Acrobat. L’operatore esperto potrà utilizzare l’interfaccia fornita con la completezza dei parametri impostabili per ogni documento, mentre l’operatore occasionale, non competente nella formattazione dei documenti, può svolgere un compito meccanico utilizzando i parametri preimpostati. Si ricorda che l’impiego dell’interfaccia esclude la possibilità di utilizzo di Acrobat direttamente nell’ambiente; ciò serve per evitare conflitti di comandi causati dal fatto che Acrobat, per la gestione dei documenti, è un ambiente a thread singolo.

Figura 6.22 Comunicazione con il plug-in

L’interfaccia comunica con il Plug-in attraverso un canale nel quale vengono inviati messaggi contenenti i comandi, con un’opportuna sintassi (vedi tabella 6.1), e si aspettano le risposte di avvenuta esecuzione o di errore. La creazione del comando è delegata ad un’interfaccia; presenta una serie di schede indicanti i comandi relativi del plug-in, unitamente ai parametri indispensabili al loro utilizzo, ed un’eventuale finestra aggiuntiva di parametri specifici a seconda del comando, utile se si vogliono cambiare le impostazioni standard.

Acrobat®

Plug-in

Comando

Risposta

Interfaccia Off-line

Data base

Dati relativi ad

Capitolo 6 ~ Progetto e struttura di un’applicazione in ausilio al commercio elettronico 85

Figura 6.23 Interfaccia off-line

In figura è rappresentata la finestra principale dell’applicazione; si possono distinguere due parti:

• la sezione in alto comprende un insieme di schede, ciascuna relativa ad un comando, in cui si devono inserire i campi indispensabili;

• la sezione in basso è comune a tutti i comandi comprendente il tasto di invio, una barra di avanzamento delle operazioni e un check box che specifica se visualizzare o meno la finestra dei parametri specifici.

Esaminiamo ora, più in dettaglio, l’insieme dei parametri di ciascun comando.

6.4.1 Crea Copertina

Il comando di creazione della copertina utilizza il file di scambio precedentemente descritto per generare unitamente ad una pagina, riportante informazioni di copyright e contenuta in un secondo file, il file della copertina che verrà utilizzato nella creazione dei documenti formattati. Si devono specificare il file di origine, generato dall’interfaccia copertina oppure scritto a mano secondo le regole suddette, il file di destinazione, ovvero il PDF della copertina, ed un eventuale file opzionale le cui pagine

Capitolo 6 ~ Progetto e struttura di un’applicazione in ausilio al commercio elettronico 86

vengono inserite dopo la copertina; l’ultimo parametro è stato pensato per inserire nel documento eventuali informazioni di copyright o cose simili. Il comando suddetto non possiede parametri specifici poiché essi sono contenuti nel file di inizializzazione generato precedentemente.

6.4.2 Crea Master

La cartella relativa al comando comprende tre campi da completare con il nome del file di origine, indicante il documento PDF grezzo, la directory di destinazione, in cui verrà creato il file formattato con lo stesso nome dell’originale, ed un file aggiuntivo PDF che specifica il modello di copertina da utilizzare. Il comando possiede anche svariati parametri aggiuntivi che possano essere impostati nella seguente finestra.

Figura 6.24 Parametri di Crea Master

Si può specificare un database, da cui prelevare automaticamente le informazioni da inserire nella sezione campi, in cui la chiave di ricerca è il codice del documento

Capitolo 6 ~ Progetto e struttura di un’applicazione in ausilio al commercio elettronico 87

contenuto nel nome del file; i parametri della sezione campi possono inoltre venire modificati manualmente. La parte in basso nella finestra è composta dalle sezioni margini e sicurezza in cui si specifica rispettivamente se eliminare i margini del documento e le informazioni di sicurezza da applicare al documento formattato, ovvero la password utente, che serve per aprirlo, e la password di owner, che serve per modificare le impostazioni di protezione; si ricordi che, per ragioni di compatibilità con gli altri comandi, nel documento master non devono essere impostate restrizioni di sicurezza, qui riportate per ragioni di completezza e di flessibilità dell’applicazione.

6.4.3 Crea Abstract

La tabella relativa al comando richiede di inserire il campi relativi ad uno o più file di origine, ovvero i documenti master formattati, e alla directory di destinazione in cui salvare gli abstract dei documenti. Possiede anch’esso svariati parametri specifici suddivisi nelle sezioni scritta e sicurezza che comprendono rispettivamente il logo da inserire nelle pagine, comprensivo di parametri del testo e di posizionamento, la percentuale di pagine da estrarre dal documento base e le eventuali pagine fisse da inserire, oltre alle impostazioni di sicurezza da applicare ai documenti.

Figura 6.25 Parametri di Crea Abstract

Capitolo 6 ~ Progetto e struttura di un’applicazione in ausilio al commercio elettronico 88

6.4.4 Crea Omaggio

La descrizione dei parametri del comando in questione è identica alla precedente, cambiano solo le impostazioni predefinite.

6.4.5 Estrai Testo

I parametri del comando includono file di origine multipli, ovvero i documenti PDF da cui si desidera estrarre il testo, e la directory di destinazione dei risultati, che sono file di testo. Non possiede parametri specifici.

6.4.6 Download File

Rappresenta l’operazione base da eseguire on-line che per completezza può essere gestita anche off-line; è caratterizzata da parametri che indicano file di origine multipli, ovvero i documenti formattati, mediante la creazione di un master, a cui si vuole applicare il codice univoco dell’acquirente, la directory di destinazione ed il codice suddetto. Possiede svariati parametri specifici suddivisi in tre sezioni: codice sulla copertina e codice sulle pagine, che indicano il posizionamento dell’oggetto in questione, il numero di caratteri che lo compongono ed il loro stile, e le informazioni di sicurezza, che permettono di specificare le impostazioni del risultato.

Capitolo 6 ~ Progetto e struttura di un’applicazione in ausilio al commercio elettronico 89

Figura 6.26 Parametri di Download File

90

Capitolo 7

Problemi e soluzioni tecniche

Nei capitoli precedenti sono stati spiegati i concetti alla base della tecnologia PDF®, gli applicativi utilizzati per gestirla, i principali oggetti e le strutture che vengono impiegate in tale formato; ci si propone ora di illustrare in maggiori dettagli tali concetti basandosi in particolare sugli aspetti tecnici ed implementativi del progetto degli applicativi descritti nel capitolo 6. Verranno analizzati i principali problemi affrontati e le soluzioni adottate per farvi fronte.

7.1 Plug-in Durante la progettazione del sistema di cui si è parlato ci si è trovati a decidere quale tecnologia utilizzare e quale ambiente di sviluppo adottare; considerato che lo standard PDF® è proprietario ci si è dovuti orientare verso prodotti e soluzioni Adobe®. La società citata fornisce agli sviluppatori due tipi di soluzioni: una consiste nell’utilizzo di una libreria di funzioni adatte ad essere integrate in applicazioni esterne mentre l’altra presuppone l’utilizzo di un plug-in, sviluppato con un insieme di funzioni fornite, all’interno dell’ambiente Acrobat®; si è scartata la prima soluzione in quanto la PDFLibrary, alla data di inizio del progetto, non era liberamente disponibile, avrebbe richiesto una licenza di utilizzo, ed inoltre non avrebbe fornito la possibilità di utilizzare metodi grafici, ovvero quelli appartenenti al layer AV dell’ambiente. La seconda soluzione invece prevede l’ausilio di un insieme di funzioni, che vanno sotto il nome di SDK, da utilizzarsi all’interno dell’ambiente Acrobat® per ampliarne le potenzialità. Il plug-in è stato scritto in linguaggio C nell’ambiente Visual Studio integrando le funzioni fornite con le API di Windows 2000, per quanto riguarda l’interazione grafica

Capitolo 7 ~ Problemi e soluzioni tecniche 91

con l’utente; si noti che per motivi di compatibilità con l’ambiente Acrobat® non è stato possibile impiegare nel progetto le MFC Microsoft. A basso livello, un plug-in in ambiente Windows è una DLL che esporta un metodo denominato PlugInMain(...) che viene richiamato durante la fase di inizializzazione dell’ambiente Acrobat®; la struttura del metodo e la sua implementazione vengono forniti come esempio dall’SDK, perciò è sufficiente sviluppare tutte le funzioni correlate:

• Fase di inizializzazione: durante questa fase si creano i menu ed i bottoni all’interno di Acrobat®, i collegamenti con le procedure ed essi correlate, si inizializzano le strutture dati appositamente sviluppate come supporto al sistema ed infine si crea un altro thread di esecuzione funzionante da server, di cui si parlerà in seguito.

• Fase di rilascio: per evitare errori in fase di chiusura dell’applicazione si devono rilasciare tutte le aggiunte all’ambiente, come i bottoni, e le strutture dati allocate dinamicamente.

Nella struttura dell’ambiente i bottoni sono collegamenti a funzioni che, nel caso del progetto in questione, gestiscono la creazione dei documenti spiegati nel capitolo 6; i menu contengono voci che si riferiscono alle funzioni suddette ed anche ai metodi che impostano le preferenze di ogni comando. Nei paragrafi successivi si illustreranno in dettaglio le implementazioni delle suddette procedure e le loro interazioni.

7.1.1 Creazione copertina

Come si ricorda dal capitolo precedente, esiste un file di inizializzazione della copertina contenente i vari oggetti ed i relativi attributi; per poter utilizzare queste impostazioni e creare un file PDF, che costituirà il modello della copertina, si seguono diversi passi.

• Inizialmente si esegue il parsing del file, l’inizializzazione delle strutture dati e degli oggetti PDF ivi contenuti. Gli oggetti presenti nel file vengono memorizzati nelle strutture mostrate in Figura 7.1.

Capitolo 7 ~ Problemi e soluzioni tecniche 92

Figura 7.1 Strutture degli oggetti della copertina

Ogni oggetto è caratterizzato da informazioni generali riguardanti il tipo e la posizione dell’oggetto in coordinate relative allo user-space; le prime due strutture servono a contenere parametri specifici che differiscono a seconda del tipo di oggetto.

• Durante il parsing si raggruppano gli oggetti in liste relative a ciascuna pagina.

• Successivamente si crea il documento vuoto, utilizzando PDDocCreatePage, e vi si inseriscono tante pagine vuote PDDocInsertPage quante sono le liste di oggetti.

• Per ogni pagina, ottenuta mediante PDDocAcquirePage, viene creato un PDEContent1, ovvero un oggetto che rappresenta una collezione di elementi PDEElement1, che sono gli oggetti modificabili all’interno della pagina.

• Viene scandita la lista degli oggetti ed ognuno inserito nella pagina; per inserirli in modo da evitare che vengano raggruppati in uno solo durante il salvataggio ottimizzato del documento, si deve, per ognuno, creare un contenitore fisico, PDEContainer1, che lo contenga. Si deve precisare che ad ogni contenitore, sia esso una pagina oppure un PDEContainer, è associato un PDEContent all’interno del quale si possono inserire altri oggetti; si crea quindi un PDEContent relativo al PDEContainer specificato all’interno del quale sarà inserito un nuovo oggetto, come schematizzato in Figura 7.2. Quest’ultimo viene creato, con funzioni apposite, grazie alle informazioni contenute nella lista. Si distinguono:

o Testo: vengono utilizzati oggetti di tipo PDEText1 in cui i parametri grafici PDEGraphicState1, PDETextState1 e PDEFont1 sono inizializzati con i valori contenuti nella lista.

o Immagine: vengono utilizzati oggetti di tipo PDEImage1, creati a partire da un’area di memoria contenente una bitmap; quest’ultima

1 Si veda la descrizione degli oggetti nel sottoparagrafo 7.1.8

typedef struct _IMMAGINE { char *path; int height; int width; }Immagine;

typedef struct _TESTO { int numero_caratteri; char *font; int corpo; int R,G,B; char *testo_statico; int num_run; }Testo;

typedef struct _OGGETTO { char *tipo; double Xmin,Xmax,Ymin,Ymax; Immagine *immagine; Testo *testo; }Oggetto;

Capitolo 7 ~ Problemi e soluzioni tecniche 93

viene caricata in memoria attraverso una procedura che letto il file contenente l’immagine ne scambia le componenti R e B ed inverte l’orientamento in modo da essere compresa dal formato PDF.

• Successivamente si rilasciano, utilizzando PDERelease, tutti gli oggetti PDF che sono stati creati per permettere la corretta chiusura del documento copertina.

• Si deallocano gli elementi delle liste di appoggio per fare in modo che, ad una successiva esecuzione della procedura, non vengano utilizzati gli oggetti appartenenti ad esecuzioni precedenti.

Figura 7.2 Gerarchia degli oggetti in una pagina

7.1.2 Creazione documento master

Il documento master costituisce l’elaborato fondamentale per il sistema studiato nel capitolo 6; come si è visto, il primo livello di formattazione dei documenti prevede l’inserimento di una copertina, modificata con i campi appropriati, l’aggiunta di oggetti di testo all’interno di ogni singola pagina e l’eventuale rimozione di margini indesiderati. Tutte queste operazioni richiedono un certo numero di passi di formattazione.

• La prima operazione consiste nel controllare le impostazioni di sicurezza del documento, infatti se il quest’ultimo è protetto si deve provvedere alla rimozione delle restrizioni di accesso, in modo tale che si sia abilitati a modificare ed

Pagina

PDEContent

PDEContainer

PDEContent Oggetto

PDEContainer

PDEContent Oggetto

Capitolo 7 ~ Problemi e soluzioni tecniche 94

inserire oggetti nel nuovo documento. Il controllo avviene utilizzando una procedura di autorizzazione, PDDocAuthorize, che verifica la possibilità di modificare gli oggetti; se non si possiede questo diritto si cerca di modificarlo richiedendo una password. Si deve notare che la modifica di queste impostazioni può essere effettuata solamente utilizzando il plug-in all’interno dell’ambiente Acrobat®; mentre se si utilizzano le interfacce esterne la mancanza del diritto di modifica implica l’impossibilità di creazione del documento master.

• Si può procedere con la rimozione dei margini, cioè la cancellazione delle zone della pagina all’interno delle quali verranno scritti i campi di formattazione; se si abilita la rimozione di tali margini, la procedura individua tutti gli oggetti ivi contenuti, controllandone le posizioni all’interno della pagina, e li rimuove. Fanno eccezione gli oggetti che sono contenuti in entrambe le zone, in modo da evitare la cancellazione di oggetti molto grandi all’interno della pagina come immagini ottenute digitalmente mediante uno scanner. La visualizzazione dei margini all’interno dell’ambiente viene eseguita registrando una funzione come callback in modo da rispondere agli eventi di ridisegno.

• Viene inserito il file modello di copertina che costituirà la base per la formattazione; per effettuare tale operazione si utilizza PDDocInsertPages specificando l’inserimento di tutte le pagine. Durante questa fase avviene il ridimensionamento delle pagine in base al formato A4 che caratterizza le pagine della copertina; per effettuare tale operazione vengono acquisiti il cropBox ed il mediaBox dalla pagina della copertina ed applicati alle restanti pagine del documento.

• La prima pagina costituisce la copertina e viene realizzata sostituendo alle parole chiave ivi contenute i corrispondenti campi; poichè non si conosce il modello di copertina, il primo passo consiste nell’acquisire il PDEContent della pagina e scandirne gli elementi. Fra questi vengono selezionati i soli oggetti di testo PDEText ed analizzati i loro contenuti; le stringhe così ottenute vengono confrontate con le parole chiave che costituiscono le tipologie di campi inseribili. Ottenuta la corrispondenza con la parola chiave, questa viene sostituita con il campo corrispondente prelevato dal database o richiesto tramite dialogo. Per permettere la corretta visualizzazione dei cambiamenti, viene scatenato un evento che notifica la variazione dei contenuti, PDPageNotifyContentsDidChange.

• Una operazione analoga viene effettuata nella pagina template della copertina, che costituisce il modello per le posizioni, i parametri grafici e le tipologie dei campi all’interno di tutte le altre pagine. Una volta ottenuto l’oggetto viene utilizzato come modello per crearne altri all’interno di tutte le pagine; in pratica

Capitolo 7 ~ Problemi e soluzioni tecniche 95

il font, il graphic state, il text state e le matrici di trasformazione dell’oggetto PDEText vengono replicati ed inseriti all’interno dei PDEContent relativi ad ogni pagina. Il contenuto degli oggetti di testo viene preventivamente sostituito con il valore del campo corrispondente alla parola chiave ivi contenuta.

• La pagina di modello non è più necessaria, poiché le sue informazioni sono già state utilizzate, per cui la si rimuove dal documento, mediante PDDocDeletePages.

• Segue una fase di impostazione dei parametri di sicurezza che caratterizzeranno il documento master. È importante notare che al fine di ottenere una buona flessibilità del sistema è possibile inserire delle protezioni anche al documento master, ma questo ne inibisce, o comunque ne ostacola, il corretto inserimento all’interno del flusso di lavorazione dei documenti descritto nel capitolo precedente; infatti per poter procedere con le altre formattazioni ed ottenere i prodotti commercializzabili si dovrebbero nuovamente eliminare tali protezioni. Per effettuare tali operazioni viene impostato l’handler di sicurezza standard mediante PDDocSetNewCryptHandler e creata una nuova struttura dati PDDocNewSecurityData inizializzata con le impostazioni di sicurezza.

7.1.3 Creazione copia omaggio

La copia omaggio costituisce uno dei documenti finali del flusso di lavorazione; la base da cui partire è costituita dal documento master, creato utilizzando la procedura precedentemente descritta, mentre il risultato è un documento contenente tutte le pagine modificate da una scritta che classifica il documento come non vendibile. Queste operazioni di modifica vengono effettuate seguendo lo schema seguente.

• Viene effettuato un controllo di sicurezza in modo da verificare se si possono eseguire le operazioni successive; la descrizione di questa procedura è la stessa del documento master.

• La copia omaggio è costituita da tutte le pagine del documento, per cui non è necessario rimuovere alcuna pagina.

• Nella prima pagina del documento, quindi sulla copertina, viene inserito un oggetto di testo che identificherà il documento come campione gratuito; la scritta è creata a partire da impostazioni di default, utilizzando le procedure di creazione di un PDEText, cioè PDETextCreate e dei suoi parametri, vale a dire PDEFontCreate, PDEDefaultGState e PDETextAdd.

Capitolo 7 ~ Problemi e soluzioni tecniche 96

• In ciascuna pagina viene inserito un nuovo oggetto di testo, a lato di ogni pagina; per non intralciare la lettura del documento è possibile ruotare la scritta, agendo sulle matrici di trasformazione relative al testo.

• Per ottenere un documento non modificabile, condizione necessaria per vietare la rimozione degli elementi inseriti e distintivi della natura del documento, è possibile impostare informazioni e password di sicurezza. Le modalità con cui si effettua tale operazione sono state descritte nel sottoparagrafo 7.1.2, relativamente alla sicurezza del documento master.

7.1.4 Creazione copia abstract

La copia abstract costituisce un campione dimostrativo del documento completo, utilizzabile al fine di permettere una parziale visione del materiale. Il risultato di questa elaborazione contiene una parte delle pagine del documento master, modificate mediante una scritta che ne impedisce la lettura agevolata, costringendo chi vuole approfondire l’argomento ad acquistare il documento completo. Le operazioni necessarie ad eseguire l’elaborazione sono le stesse del sottoparagrafo 7.1.3, con alcune differenze, che nel seguito ci proponiamo di illustrare.

• Il documento è composto da un sottoinsieme di pagine di quello originale estratte casualmente oppure opportunamente specificate mediante una stringa; essa si compone di un elenco di pagine singole, separate da virgola, oppure di intervalli, indicati da numeri separati da meno.

• La scritta da inserire si estende per tutta la pagina ed è caratterizzata solo dai contorni dei caratteri. Ciò è reso possibile manipolando opportunamente la text matrix e la stroke matrix.

7.1.5 Creazione copia vendibile

La copia vendibile è uno dei risultati fondamentali nel flusso di lavorazione; questo tipo di documenti è costituito dal documento formattato, creato mediante la procedura master precedentemente descritta, reso univoco inserendo, all’interno della copertina ed in tutte le pagine, il codice identificativo dell’acquirente. Le procedure necessarie all’esecuzione di questa operazione sono molto simili a quelle degli altri documenti, ne fa eccezione il salvataggio che può essere eseguito, per migliorare l’efficienza in due modalità:

• Salvataggio completo: viene salvato l’intero contenuto del documento, ricostruite le strutture ed ottimizzata l’occupazione del file generato; questa

Capitolo 7 ~ Problemi e soluzioni tecniche 97

operazione è lenta e non efficiente nel caso di documenti scaricabili, richiede un grande tempo di attesa. Viene effettuato cambiando il nome del documento o inserendolo in una nuova directory.

• Salvataggio incrementale: vengono salvate sul file solamente le modifiche, riducendo il tempo di attesa per gli acquirenti. Le modifiche apportate dalla procedura non sono sostanziali, per cui si dovrebbero ridurre notevolmente i tempi di salvataggio, a scapito di un lieve incremento delle dimensioni finali del file. Viene utilizzato quando il file non cambia percorso, sovrascrivendo la copia esistente, che deve essere preventivamente copiata nella directory corrispondente.

7.1.6 Estrazione testo

Il documento creato in questa fase non rientra nel normale flusso di produzione e commercializzazione ma costituisce un supporto per la gestione di un motore di ricerca. Consiste nell’estrarre tutto il testo contenuto nel documento e memorizzarlo in un file TXT. Il risultato suddetto può essere ottenuto utilizzando le operazioni spiegate nel seguito.

• Viene controllato il diritto di selezione dei testi mediante la procedura di autorizzazione, analoga a quella descritta per la creazione dei documenti precedenti.

• Viene eseguita una ricerca su tutti gli elementi di testo e ne viene selezionato il contenuto, tramite PDETextGetText. Le stringhe estratte vengono collegate fra di loro e memorizzate in una variabile, allocata dinamicamente e opportunamente ridimensionata ad ogni aggiornamento.

• Vengono rilasciati tutti gli oggetti interessati come PDEContent e PDEText e memorizzato il contento della variabile in un file di testo.

7.1.7 Server

Il server di gestione dei comandi esterni viene registrato all’inizializzazione del plug-in, in modo che riceva la notifica di avvenuta inizializzazione di tutti i componenti di Acrobat® e poter funzionare correttamente. La procedura crea un thread di esecuzione, per poter funzionare in multitask rispetto al plug-in; il suo compito è ascoltare da una pipe i comandi, inviati dalle applicazioni esterne, ed inserire le risposte ad essi relative. Il ciclo esegue una connessione alla pipe ed attende i messaggi, una volta ricevuti ne elabora il contenuto per estrarre il comando da eseguire, richiama la procedura

Capitolo 7 ~ Problemi e soluzioni tecniche 98

corrispondente del plug-in, passando come parametro il resto del messaggio ed attende il risultato che verrà inviato sulla pipe. L’esecuzione verrà terminata mediante il comando DISCONNECT.

7.1.8 Oggetti PDF® utilizzati per la manipolazione dei documenti

Nei paragrafi precedenti sono stati utilizzati un insieme di oggetti che fanno parte principalmente del PD layer e del PDE layer; del primo fanno parte gli oggetti globali dei documenti mentre del secondo quelli modificabili all’interno delle singole pagine. Vediamo le caratteristiche degli oggetti del PD layer utilizzati nel progetto.

• PDDoc: una sua istanza rappresenta un documento PDF aperto e non necessariamente visualizzato; come visto nei capitoli precedenti, vi è una corrispondenza fra questo tipo di oggetti e la rappresentazione fisica del file PDF. Ci sono diversi metodi ad esso relativi:

o PDDocAcquirePage: ottiene una pagina di un documento che deve essere rilasciata una volta ultimate le lavorazioni su di essa.

o PDDocAuthorize: aggiunge, una volta verificate le impostazioni di protezione, alcuni permessi al documento scelto; nella Tabella 7.1 verranno illustrate le possibilità impostazioni possibili.

pdPermOpen Abilita alla visualizzazione del documento pdPermSecure Abitita alla modifica delle impostazioni di

sicurezza pdPermPrint Abilita alla stampa del documento pdPermEdit Abilita alla modifica del documento pdPermCopy Abilita la possibilità di copiare infomazioni

del documento pdPermEditNotes Abilita la possibilità di aggiungere,

modificare e cancellare note pdPermSaveAs Abilita l’esecuzione di un comando “Save

As …” pdPermOwner Abilita tutti i permessi dati al creatore del

documento pdPermSettable pdPermPrint + pdPermEdit +

pdPermCopy + pdPermEditNotes pdPermAll Abilita tutti i permessi pdPermUser Abilita I permessi riguardanti l’utente

(pdPermAll −pdPermOpen −pdPermSecure )

Tabella 7.1 Permessi di sicurezza

Capitolo 7 ~ Problemi e soluzioni tecniche 99

o PDDocClose: chiude un documento e rilascia tutte le sue risorse; si deve notare che il documento non viene salvato, per cui è necessario richiamare PDDocSave per memorizzare le modifiche.

o PDDocCreate: crea un nuovo documento vuoto.

o PDDocCreatePage: crea ed acquisisce il controllo di una nuova pagina; viene insertita in una posizione specifica. L’oggetto ottenuto è un PDPage e va rilasciato.

o PDDocDeletePages: cancella dal documento le pagine specificate.

o PDDocGetNumPages: restituisce il numero di pagine del documento; è importante notare che se si vuole utilizzare il numero ottenuto all’interno di altre procedure come la cancellazione o l’aggiunta di pagine, si deve sottrarre uno, poichè la numerazione inizia da zero.

o PDDocGetSecurityData: restituisce la struttura dati associata alle informazioni di sicurezza dell’handler corrente; contiene i permessi e le password associate al documento.

o PDDocInsertPages: inserisce delle pagine da un documento sorgente ad uno destinazione, vengono copiati tutti gli oggetti ed i riferimenti ad essi associati.

o PDDocNewSecurityData: crea una struttura dati di sicurezza associabile al nuovo handler del documento, che deve essere preventivamente creato mediante PDDocSetNewCryptHandler. La struttura creata viene allocata dinamicamente e deve essere rilasciata mediante Asfree quando le infomazioni sono state memorizzate utilizzando PDDocSetNewSecurityData.

o PDDocOpen: apre un documento specificato. Se il documento è già aperto, ne restituisce un riferimento.

o PDDocRelease: decrementa il reference count di un documento; quando raggiunge lo zero le risorse ad esso associate vengono rilasciate. È importante notare che se le risorse non vengono rilasciate, le successive aperture del documento potrebbero risultare incoerenti.

o PDDocSave: salva un documento sul disco; dopo un salvataggio il documento deve essere chiuso mediante PDDocClose che rilascia le risorse associte, e non utilizzare PDDocRelease. Esistono varie modalità di salvataggio come di può vedere dalla Tabella 7.2.

Capitolo 7 ~ Problemi e soluzioni tecniche 100

PDSaveFull Scrive l’intero file specificato. PDSaveCollectGarbage Rimuove gli oggetti non referenziati,

riducendo le dimensioni del file PDSaveCopy Scrive una copia del file in una specifica

locazione ma continua ad utilizzare la vecchia. Può essere specificato solo in aggiunta al PDSaveFull

PDSaveLinearized Scrive un file in modo lineare, riordinando gli oggetti.

PDSaveBinaryOK Salva il file in formato binario Tabella 7.2 Modalità di salvataggio

o PDDocSetNewCryptHandler: associa ad un documento un nuovo handler di sicurezza. Le modifiche verranno apportate al salvataggio del documento e non in fase di visualizzazione.

• PDPage: una sua istanza rappresenta una pagina di un documento; ogni pagina contiene una serie di oggetti visualizzabili al suo interno, un insieme di risorse utilizzate nella visualizzazione della stessa ed altri oggetti ad essa associati. I metodi, utilizzati nel progetto, che manipolano e gestiscono le suddette strutture sono:

o PDPageAcquirePDEContent: restituisce il PDEContent associato ad una pagina; per rilasciare questa risorse si deve richiamare una specifica procedura di rilascio, PDPageReleasePDEContent.

o PDPageGetMediaBox: restituisce il mediaBox associato ad una pagina, che rappresenta le dimensioni reali della pagina, come ad esempio le dimensioni A4.

o PDPageGetCropBox: restituisce il cropBox associato ad una pagina, che rappresenta la regione visualizzabile e stampabile di un documento.

o PDPageNotifyContentDidChange: questo metodo deve essere richiamato per notificare all’ambiente le modifiche apportate per poterle visualizzare.

o PDPageRelease: decrementa il reference count di una pagina.

o PDPageReleasePDEContent: decrementa il reference count del PDEContent; il content non viene automaticamente cancellato quando il suo reference count è zero, ma rimane in cache sino a quando questo spazio non serve ad un’altra pagina. Questo sistema incrementa l’efficienza dell’acquisizione del content.

Capitolo 7 ~ Problemi e soluzioni tecniche 101

o PDPageSetMediaBox: imposta il mediaBox per una pagina.

o PDPageSetCropBox: imposta il cropBox per una pagina.

o PDPageSetPDEContent: associa un PDEContent ad una pagina, operazione necessara qualora vengano inseriti nuovi oggetti nel content.

Ci si propone ora di illustrare le principali caratteristiche degli oggetti appartenenti al PDE layer.

• PDEElement: è la classe base astratta per gli elementi modificabili all’interno di una pagina da cui sono derivate tutte le altre; i metodi ad esso correlati servono a inizializzare ed ottenere informazioni generali comuni a tutti gli oggetti. I metodi più importanti utilizzati nel progetto sono:

o PDEElementGetGState, PDEElementSetGState: impostano e restituiscono il graphic state2 di un elemento.

o PDEElementGetMatrix, PDEElementSetMatrix: impostano e restituiscono la matrice di trasformazione che permette il passaggio allo user space.

• PDEObject: è un classe astratta da cui derivano tutti gli oggetti appartenente al layer PDE, ovvero gli oggetti modificabili dell’intero documento. Il metodo più importante utilizzato:

o PDERelease: decrementa il reference count dell’oggetto su cui è richiamato; se arriva a zero l’oggetto viene rilasciato. Si noti che non tutti i metodi che lavorano sugli oggetti incrementano il reference count.

• PDEText: è una classe progettata per rappresentare testo sotto forma di elementi chiamati run che possono contenere singoli caratteri o stringhe; ciascuno di questi può avere differenti proprietà grafiche. I più importanti metodi utilizzati nel progetto sono:

o PDETextAdd: aggiunge un carattere oppure una stringa ad un oggetto PDEText; in particolare necessita di un font, un graphic state ed un text state.

o PDETextCreate: crea un oggetto di testo vuoto.

2 Si veda la descrizione dettagliata del graphic state nel sottoparagrafo 4.4.8

Capitolo 7 ~ Problemi e soluzioni tecniche 102

o PDETextGetFont: restituisce un oggetto PDEFont associato ad un PDEText; si noti che varie run di PDEText possono avere font diversi.

o PDETextGetGState: restituisce il graphic state associato ad un oggetto PDEText; si noti che varie run di PDEText possono avere graphic state diversi.

o PDETextGetNumRuns: restitusce il numero di run contenute in un oggetto PDEText.

o PDETextGetNumChars: restituisce il numero di caratteri contenuti in un oggetto PDEText.

o PDETextGetStrokeMatrix: restituisce la stroke matrix corrispondente alla trasformazione della larghezza della linea di contorno; si noti che varie run di PDEText possono avere stroke matrix diversi.

o PDETextGetText: restituisce il testo contenuto in una specifica run dell’oggetto su cui viene chiamato ad operare.

o PDETextGetTextMatrix: restituisce la text matrix di trasformazione in user space relativa ad una specifica run o carattere appartenente all’oggetto si cui viene invocato.

o PDETextGetTextState: restituisce un oggetto indicante il text state di una specifica run o carattere.

o PDETextReplaceChars: sostituisce alcuni caratteri, dell’oggetto sui viene invocato, con altri; si deve tenere presente che il numero totale di caratteri deve rimanere invariato dopo la sostituzione.

o PDETextRunGetNumChars: restituisce il numero di caratteri appartenenti ad una run specificata di un oggetto di testo.

o PDETextRunSetFont: imposta il font da utilizzare per una determinata run; si noti che questo metodo decrementa il reference count del vecchio oggetto font mentre aumenta quello del nuovo.

o PDETextRunSetGState: imposta il graphic state relativo ad una run di un oggetto di testo.

o PDETextRunSetStrokeMatrix: imposta la stroke matrix di una run di testo.

o PDETextRunSetTextMatrix: imposta la text matrix di una run di testo.

Capitolo 7 ~ Problemi e soluzioni tecniche 103

o PDETextRunSetTextState: imposta il text state di una run di testo.

• PDEFont: è una classe le cui istanze contengono un riferimento ad un font utilizzato in una pagina; il principale metodo utilizzato nel progetto è:

o PDEFontCreate: crea un nuovo oggetto font basandosi su vari parametri quali uno stream, un font già esistente ed in base ad informazioni di formattazione grafica quali vettori larghezze di caratteri; è importante notare che si possono passare non tutti i parametri richiesti ma solo un loro sottoinsieme. Inoltre si ricorda che il corpo di un font non fa parte dell’oggetto stesso ma le varie misure si ottengono con uno scalamento.

• PDEImage: è una classe le cui istanze contengono un’immagine ed i suoi attributi. I dati dell’immagine possono essere associati ad uno stream. Il più importante metodo utilizzato nel progetto è:

o PDEImageCreate: crea un nuovo oggetto immagine a partire da dati in memoria oppure presenti in uno stream; si possono specificare inoltre dei color space diversi da quello di default ed anche dei filtri per l’immagine.

• PDEContent: è una classe le cui istanze contengono tutti gli oggetti modificabili di una pagina; contiene solo elementi PDEElement. I più importanti metodi utilizzati nel progetto sono:

o PDEContentAddElem: aggiunge un elemento ad un content; si deve indicare la posizione all’interno dell’elenco di oggetti che specificherà l’ordine di visualizzazione nella pagina.

o PDEContentCreate: crea un nuovo oggetto vuoto in cui si potranno inserire altri oggetti; non si deve associare ad una pagina poiché per fare ciò esistono metodi specifici relativi all’oggetto PDPage3.

o PDEContentGetElem: restituisce l’oggetto, che si trova in una certa posizione, di un content specifico.

o PDEContentGetNumElems: restituisce il numero di elementi presenti in un content.

• PDEContainer: è una classe le cui istanze contengono un insieme di oggetti PDEElement; servono per strutturare logicamente un documento in insiemi di oggetti separati. I più importanti metodi utilizzati nel progetto sono:

3 Per una più ampia trattazione dei metodi del layer PDE e di tutti gli altri non trattati si veda il documento APIREF.PDF della documentazione fornita con Adobe® SDK.

Capitolo 7 ~ Problemi e soluzioni tecniche 104

o PDEContainerCreate: crea un nuovo container da cui si potrà prelevare il content per inserirvi altri oggetti.

o PDEContainerGetContent: estrae il content relativo al container su cui si chiama il metodo.

o PDEContainerSetContent: imposta un nuovo content per l’oggetto in questione.

• PDEColorSpace: è una classe le cui istanze contengono un riferimento ad uno spazio di colori utilizzato all’interno della pagina; fa parte degli attributi grafici di un PDEElement. Nel progetto non sono stati utilizzati metodi ad esso relativi in quanto esiste un color space predefinito che soddisfa tutte le esigenze che ne prevedono l’utilizzo.

7.2 Applicazione di creazione del modello di copertina La creazione di una copertina standard è il punto fondamentale del flusso di lavorazione, per cui è necessaria una sua corretta costruzione. In un primo momento si era pensato di generare il modello della copertina semplicemente convertendo in PDF un documento in altro formato elettronico; questa soluzione si è rivelata inutilizzabile, poichè durante la conversione, può capitare, a causa di inefficienze nei programmi di conversione, che un oggetto di testo, contenente una delle parole chiave, venga spezzato in diversi oggetti che risultano irriconoscibili. Si rende necessaria la modifica manuale, molto laboriosa e quindi inaccettabile in un ottica di automazione del sistema. La risposta a questo problema è stata la realizzazione di un’applicazione che generasse un modello dal quale costruire in modo univoco, non erroneamente interpretabile, una copertina. È stata realizzata un’applicazione Visual Basic che permette il posizionamento di vari tipi di oggetti, descritti nel sottoparagrafo 6.2.1, in modo che vengano correttamente riconosciuti durande la generazione del file PDF®. L’applicazione genera un file testuale, editabile anche a mano secondo il protocollo descritto nel sottoparagrafo 6.2.1, che viene interpreatato dalle apposite funzioni progettate nel plug-in. Gli oggetti posizionati nel modello vengono catalogati per pagina ed inseriti in Collection che saranno successivamente interpretate ed scritte nel file prodotto.

Capitolo 7 ~ Problemi e soluzioni tecniche 105

7.3 Interfaccia off-line Permette di pilotare le funzioni fornite dal plug-in senza dover accedere all’ambiente Acrobat®, con il quale comunica attraverso un canale fornito dal server attivo nel plug-in. Si è scelto di utilizzare le pipe per modellare i canali di comunicazione sia del server del plug-in che delle interfacce. Si sono studiati diversi metodi di comunicazione:

• Messaggi DDE: l’ambiente Adobe® Acrobat® fornisce all’utente la possibilità di comunicare tramite un server DDE attivo al suo interno; tale sistema viene utilizzato per esempio quando si esegue un doppio click su un file PDF che deve essere aperto. Per mezzo del sistema descritto si possono richiamare tutte le voci di menu. Non si è optato per la soluzione descritta in quanto, nell’architettura degli ultimi sistemi operativi, è ritenuta obsoleta.

• DLL: la soluzione ottimale prevede la possibilità di esportare dal plug-in, oltre alla funzione necessaria al suo funzionamento, le procedure che eseguono i comandi richiesti. È una soluzione efficiente e perfettamente portabile dal C al Visual Basic. Il sistema progettato alloca in memoria parecchie strutture dati utilizzabili dalle diverse procedure per impostare i parametri; nel caso di un utilizzo remoto l’applicativo ASP richiama le funzioni che la DLL fornisce ma opera su dati caricati nel proprio spazio di memoria che differiscono da quelli presenti nello spazio di memoria di Acrobat®. Questo motivo rende inutilizzabile la soluzione descritta.

• Pipe: una pipe è un canale di comunicazione, simile ad un file, a cui si può accedere sia in lettura che scrittura semplicemente conoscendone il nome. Nel sistema progettato si utilizzano pipe con nome in modalità a messaggi. Il server all’interno del plug-in si mette in ascolto di messaggi provenienti dalla pipe e li interpreta per generare i comandi; successivamente vi inserisce un messaggio di avvenuta esecuzione od errore.

7.4 Interfaccia on-line L’architettura complessa del sistema client-server permette la gestione di più richieste contemporanee da parte degli utenti del sito. Il punto chiave dell’architettura è uno scheduler che accetta le richieste, provenienti dai client ASP, che vengono inserite nella pipe con nome su cui è in ascolto. Il messaggio contiene, oltre al comando da eseguire con eventuali parametri anche il nome di una pipe, creata appositamente del client, su cui verrà instradata la risposta generata dal plug-in. Lo scheduler al momento della ricezione di un messaggio crea un thread figlio che si occupa della rimozione dei dati

Capitolo 7 ~ Problemi e soluzioni tecniche 106

dalla pipe. Successivamente al ritiro del messaggio, il thread lo inserisce in una coda che viene gestita, coerentemente al problema dei readers&writers, in mutua esclusione. Tra i sistemi di gestione della mutua esclusione si è utilizzato quello che fa uso di sezioni critiche, ovvero vengono posti particolari chiamate a funzione prima e dopo la sezione che si vuole proteggere; le suddette funzioni si rivelano bloccanti se è presente il flusso di esecuzione di un thread all’interno della sezione, in tale modo si evita che più di un thread esegua comandi pericolosi. Contemporaneamente un altro thread creato dallo scheduler, e sempre attivo, controlla lo stato della coda e, entrando in sezione critica, ne processa i messaggi, togliendo le informazioni riguardati la pipe di ritorno, e li inserisce in modo seriale nella pipe del server del plug-in; prima di processare il messaggio successivo nella coda deve aspettare di ricevere la risposta riguardante l’elaborazione precedente, da inoltrare al client di cui possiede il nome di pipe. Si sono riscontrati problemi di prestazioni per quanto riguarda la gestione delle richieste in coda: il ciclo di scansione deve venire rallentato, con una opportuna funzione sleep, in quanto rischia di sovraccaricare il server; la soluzione adoddata è di attendere circa un secondo prima di rieseguire il controllo della presenza di richieste in coda. Si ritiene comunque che sia accettabile un ritardo protratto fino a 5 secondi. La necessità di serializzare le operazioni di gestione dei messaggi è dovuta al fatto che Acrobat®, pur essendo un ambiente multithread, non può gestire più elaborazioni contemporanee di documenti. Per questo motivo, durante l’utilizzo sia dell’interfaccia on-line che di quella off-line, si sconsiglia l’utilizzo dell’ambiente Acrobat®.

107

Capitolo 8

Risultati e Conclusioni

Il progetto e’ stato sviluppato in ambiente Visual Studio utilizzando sia il linguaggio C, con anche opportune procedure fornite dall’SDK di Adobe®, che il liguaggio Visual Basic 6.0. La parte scritta in C, che comprende il plug-in, da inserire in ambiente Acrobat®, e l’architettura del sistema client-server, incorporato in una DLL, si articola in più di 9000 linee di codice. La parte scritta in Visual Basic, che comprende l’applicazione che genera il modello della copertina e le interfacce on-line ed off-line, si articola in circa 7000 righe di codice. Con pochi adattamenti software si può garantire il funzionamento su una rete complessa formata da molti client, come in questo caso, e molti server, ovvero più Acrobat® che girano su diversi computer. L’idea è di modificare la parte chiamata scheduler in modo che memorizzi più nomi di pipe, invece che solo uno, su cui ascoltano i server dei plug-in e li gestisca con politiche di schedulazione. Il sistema complessivo offre una buona stabilità e funzionalità le cui performance sono state valutate utilizzando un computer con processore a 1000 Mhz e 384 Mb di ram a 10ns su cui gira Windows® 2000. La granularità della misurazione è di 1 secondo. Si può notare che, a parità di processore, i tempi dipendono in prima approssimazione dal numero delle pagine presenti nel documento; per quanto riguarda la copia master si deve tenere conto che, eliminando i margini, deve essere eseguita una scansione di tutti gli oggetti della pagina che aumenta i tempi di elaborazione. Si ricorda che i tempi stringenti sono solo quelli relativi alla copia vendibile poiché comporta l’attesa del cliente on-line.

Capitolo 8 ~ Risultati e Conclusioni 108

Copia Vendibile

3 6 7 11 16 2133

57

122

0

20

40

60

80

100

120

140

30 50 70 100 150 200 300 500 1000

pagine

secondi

Figura 8.1 Tempi di attesa di creazione della copia vendibile

Copia Master

7 11 15 22 33 4569

119

259

0

50

100

150

200

250

300

30 50 70 100 150 200 300 500 1000

pagine

secondi

Figura 8.2 Tempi di attesa di creazione della copia master senza eliminare i margini

Capitolo 8 ~ Risultati e Conclusioni 109

Copia Master con elimina margini

7 11 16 23 36 5181

149

361

0

50

100

150

200

250

300

350

400

30 50 70 100 150 200 300 500 1000

pagine

secondi

Figura 8.3 Tempi di attesa di creazione della copia master eliminando i margini

Copia Omaggio

3 6 7 10 16 2234

56

122

0

20

40

60

80

100

120

140

30 50 70 100 150 200 300 500 1000

pagine

secondi

Figura 8.4 Tempi di attesa di creazione della copia omaggio

Capitolo 8 ~ Risultati e Conclusioni 110

Copia Abstract

0 01 1

2 23

6

12

0

2

4

6

8

10

12

14

30 50 70 100 150 200 300 500 1000

pagine

secondi

Figura 8.5 Tempi di attesa di creazione della copia abstract

Come si nota dai grafici il comando che crea la copia vendibile e quella omaggio hanno gli stessi tempi di elaborazione; questo è dovuto al fatto che in entrambi bisogna solo aggiungere un oggetto di testo in ogni pagina. Il sistema progettato e’ attualmente utilizzato presso una ditta che offre servizi di e-commerce presente nell’incubatore del Politecnico di Torino.

Bibliografia 111

Bibliografia

Per la parte del progetto relativa al formato PDF®: Acrobat Interapplication Communication Overview, Technical Note #5164. Acrobat Interapplication Communication Reference, Technical Note #5165. Acrobat API Development, Technical Note #5167. Acrobat Core API Overview, Technical Note #5190. Acrobat Core API Reference, Technical Note #5191. Adobe PDF Library Overview, Technical Note #5189. Portable Document Format Reference Manual Version 1. 3. A Discussion of Cos Objects and Functions. Acrobat Developer FAQ. Tutti i documenti citati fanno parte della documentazione di Adobe® SDK reperibile al sito www.adobe.com. Per parte relativa alle API di Windows® ed alla programmazione multithread si veda la documentazione Visual Studio MSDN library.