PDF riformattati per eBook-Reader: trasferire le annotazioni sul PDF originale

Negli ultimi tempi il mercato dei tablet, degli eBook-Reader e degli smartphone si è sensibilmente sviluppato, portando in commercio molti modelli di varie marche più o meno famose; la caratteristica comune è legata soprattutto alle dimensioni, che ovviamente sono molto ridotte, in quanto questi dispositivi sono fatti per essere trasportati comodamente in una borsa o (per quanto riguarda gli smartphone) direttamente in tasca. Mi ricordo ancora quando questa estate, nell'Underground di Londra, molta gente aveva gli eBook-Reader, così da potersi tranquillamente leggere "Fifty shades of (Sasha) Grey" in santa pace e senza doversi vergognare della propria lettura, come invece sarebbe potuto succedere avendo in mano il libro cartaceo con la copertina in bella evidenza.

Ma non è questo il punto. Il punto è che gli schermi di questi dispositivi sono molto ridotti (tendenzialmente 600x800 pixel, per quanto riguarda gli eBook-Reader), non sono paragonabili a quelli di un pc normale, e per leggere dei documenti (come per esempio i PDF), sei praticamente costretto a compiere continui ingrandimenti e spostamenti della visuale, a meno che tu non voglia finirti gli occhi.

Il progetto su cui ho lavorato (insieme al mio amico e collega Guido Cocchi) partiva già da un lavoro svolto da altri due miei compagni di Università (Giannantonio D'Avico e Matteo Massai), i quali hanno creato questo programma che converte dei documenti PDF in un formato di facile lettura per gli eBook-Reader, impostando la larghezza fissa del documento a 600px e creando un flusso unico verticale di tutto il testo (tagliato all'incirca ogni 800px per creare le pagine) anche partendo da pagine con più colonne (come potrebbe essere un documento scientifico) e mantenendo l'ordine logico dei paragrafi del testo. L'immagine sottostante sicuramente vi chiarirà un po' le idee.

Come potete vedere, vengono individuati i vari blocchi di testo che compongono il documento (partendo dal titolo in alto, proseguendo con gli autori ed i paragrafi, e terminando con le note in basso); tutti questi blocchi vengono messi uno sotto l'altro seguendo l'ordine logico del testo e vengono riformattati con le dovute dimensioni. La tecnica utilizzata per trovare i vari blocchi è quella degli XY-Tree, che taglia (alternando) verticalmente ed orizzontalmente il documento in cerca di contenuto informativo (cioè, i pixel neri dei caratteri, a contrasto con i pixel bianchi dello sfondo) e creando tante "Patch" (fondamentali per il nostro programma) con le corrispondenti dimensioni e coordinate di riferimento, sia per quanto riguarda il documento riformattato che per quello originale. Ricordatevi quest'ultimo dettaglio. Non mi dilungherò su questa tecnica perchè non ho avuto la necessità di approfondirla per il mio progetto.

A questo punto abbiamo un PDF riformattato, pronto per essere comodamente letto su un eBook-Reader: qui entriamo in gioco io e Guido. Soprattutto davanti a dei testi scientifici, un lettore potrebbe avere la tentazione di annotarsi qualcosa, inserire dei commenti, ecc..., però vorrebbe anche che queste annotazioni venissero trasferite sul PDF originale di partenza.

I tipi di commenti presi in esame sono di due: quelli dell'Adobe (note cioè inserite attraverso il programma Adobe Reader) e le annotazioni manuali (quelle cioè fatte usando una pennina magnetica che a volte danno in dotazione con gli eBook-Reader).

L'idea principale è: troviamo le coordinate dell'annotazione, vediamo a quale "Patch" appartiene e riportiamola nel posto preciso sull'originale apportando tutte le dovute proporzioni e modifiche sulle dimensioni.

Per lavorare (creare, modificare, ecc...) sui PDF abbiamo sfruttato la libreria "PoDoFo", una delle pochissime librerie Open Source che gestiscono i PDF, la quale ci ha permesso di individuare tutte le note Adobe presenti nel documento, prendendo ogni volta le relative coordinate: in questo modo, tramite vari calcoli di posizionamento all'interno della "Patch" corrispondente e le dovute proporzioni legate alla posizione del blocco nel documento originale, siamo riusciti a trasferire con una buona precisione tali note da un PDF all'altro. Sotto, a sinistra il PDF riformattato con le note (in giallo); a destra, l'originale dopo aver trasferito le note.

Per quanto riguarda le annotazioni manuali, gli eBook-Reader creano dei file .svg che contengono le rispettive coordinate: tramite il programma "Inkscape", è stato possibile gestire queste annotazioni, estrapolandole dal file come se fossero delle immagini.

A questo punto, il gioco in teoria risulta molto simile a prima...in pratica però si è rivelato più complicato del previsto, in quanto un "frego" di questo tipo può far parte di più "Patch" contemporaneamente (proprietà voluta o no), perciò si è dovuto gestire questa problematica tagliando le annotazioni manuali in corrispondenza del cambio di "Patch" e considerando così due le due parti ottenute come se fossero due annotazioni distinte. Anche qui, molti calcoli di posizionamento e di proporzioni, ma alla fine si è risolto tutto per il meglio (o quasi). Sotto, a sinistra vedete il PDF riformattato con le annotazioni, mentre a destra l'originale modificato dopo l'esecuzione del programma.

...e questo è tutto! Il programma non funziona su Windows (sorry, ma è così) ed è stato creato in C++.

Per ulteriori dettagli, eccovi la relazione che abbiamo scritto per l'esame in cui spieghiamo più nel dettaglio tutte le magie che abbiamo dovuto fare per creare questo programma: relazione

Se qualcuno è interessato, questo invece è il link per il programma, compreso di tutti i file sorgenti sia del nostro elaborato che di quello di D'Avico-Massai (non ci giudicate per il codice, in alcune parti è stato scritto un po' velocemente xD ) e delle istruzioni per farlo funzionare: Elaborato

Alla prossima, gente! Ovviamente, come sempre, commentate per qualsiasi dubbio 🙂

Paolo Gerini

Umpa Lumpa della scienza, studente a tempo perso e ingegnere solo quando capita. Appassionato di sport e di musica (suona il pianoforte per far colpo sulle tipe), sembra anche che ogni tanto lavori ma pare più una leggenda.

PDF riformattati per eBook-Reader: trasferire le annotazioni sul PDF originale ultima modifica: 2013-04-01T23:06:46+01:00 da Paolo Gerini


Advertisment ad adsense adlogger