Introduzione
Anatomia
Affinché rappresenti quanto possibile rigorosamente e nitidamente il contenuto di files PDF, PDF Clown è caratterizzato da una struttura stratificata che cela progressivamente i dettagli sintattici (quegli "strani geroglifici" ;-)) e rivela le entità semantiche (pagine, segnalibri, caratteri ecc.), permettendo agli utenti di ridurre la sezione d'accesso quanto desiderato.
![Struttura stratificata di PDF Clown [Diagramma: Struttura stratificata di PDF Clown]](/common/contents/projects/clown/layersOverview.png)
Ecco un diagramma di classe raffigurante le entità principali della libreria e le loro relazioni: notare che si tratta solo di una vista più dettagliata sui medesimi strati descritti sopra.
![Diagramma di classe di PDF Clown [Diagramma: Classi principali di PDF Clown]](/common/contents/projects/clown/classes.png)
Il diagramma sottostante rappresenta un oggetto Document (l'elemento alla radice di un file PDF modellato da PDF Clown) come è visto attraverso gli strati:
- Byte layer (file PDF grezzo): il rettangolo punteggiato dentro l'icona del file PDF contiene un frammento di dati che rappresenta un oggetto Dictionary di tipo Catalog (elemento-radice del file);
- Token layer (interpretazione lessicale (scansione) del file PDF): i bytes dell'oggetto Dictionary di tipo Catalog vengono aggregati in elementi atomici (lessemi);
- Object layer (strutture dati emergenti dall'aggregazione di lessemi): è riconosciuto lo schema di un oggetto indiretto, quindi viene istanziato un PdfIndirectObject che incapsula i dati dell'oggetto Dictionary di tipo Catalog;
- File layer (rappresentazione sintattica superiore del file PDF in PDF Clown): il PdfIndirectObject contenente l'oggetto Dictionary di tipo Catalog è schierato tra gli altri per rappresentare la struttura del file PDF;
- Document layer (rappresentazione semantica del file PDF in PDF Clown): l'oggetto Dictionary di tipo Catalog viene incapsulato in un oggetto Document, il quale eredita da PdfObjectWrapper (ponte tra l'object layer e il document layer).
![Un oggetto Document visto attraverso gli strati [Diagramma: Un oggetto Document visto attraverso gli strati]](/common/contents/projects/clown/layers.png)
Funzionalità
Manipolazione di contenuti
Qui intendo descrivere una tra le funzionalità supportate da PDF Clown, cosicché possiate meglio valutare la ricchezza e flessibilità che la sua architettura consente. Per favore notate che qui ci si riferisce alla versione 0.0.4 o successiva di PDF Clown (le versioni precedenti sono caratterizzate da un modello meno sofisticato).
La manipolazione di contenuti grafici può essere realizzata a diversi livelli, in base alle vostre esigenze d'astrazione:
- content stream (livello inferiore):
- content stream non gestito: questa è la rappresentazione inferiore dei contenuti grafici, espressi come bytes. Vi si può accedere tramite oggetti PdfStream.
- content stream gestito: questa è la rappresentazione sintattica inferiore dei contenuti grafici, espressi come tokens (pezzi letterali che costituiscono operazioni e oggetti grafici (testo, immagini, tracciati...)). Vi si può accedere tramite oggetti Parser.
- modello di contenuto (livello intermedio):
- modello di contenuto non gestito: i tokens vengono aggregati in operazioni e oggetti grafici, inconsapevoli del loro stato grafico corrente. Vi si può accedere tramite oggetti Contents.
- modello di contenuto gestito: operazioni e oggetti grafici sono contestualizzati nello stato grafico corrente. Vi si può accedere tramite oggetti ContentScanner.
- composizione (alto livello):
- composizione primitiva: operazioni e oggetti grafici vengono astratti in elementi grafici. Vi si può accedere tramite oggetti PrimitiveFilter.
- composizione statica: gli elementi grafici sono vincolati in aree di pagina a scopo di allineamento. Vi si può accedere tramite oggetti BlockFilter.
- composizione dinamica: gli elementi grafici possono estendersi attraverso le pagine a scopo di composizione fluida. Vi si può accedere tramite oggetti FlowFilter (NOTA: attualmente questo livello non è stato ancora implementato).
I livelli content stream e modello di contenuto sono utilizzabili sia in lettura che in scrittura di files PDF, mentre il livello di composizione è una funzionalità di sola scrittura.

Ultimi aggiornamenti del sito











