Skip to topic | Skip to bottom
Home

Tesi
Tesi.PdFConverterr1.3 - 29 Nov 2004 - 19:55 - AngeloDiIoriotopic end

Start of topic | Skip to actions

PDF Converter

L'obiettivo della tesi era la realizzazione di un convertitore da PDF al formato generico di IsaWiki. Inizialmente si era pensato di realizzare questa trasformazione in uno step unico; successivamente si è scelta una soluzione in due step: PDF -> SVG -> formato-generico. In questa pagina con il termine primo convertitore ci riferiamo alla prima soluzione, con il termine "secondo convertitore" al risultato finale.

Risorse

Di seguito alcune riflessioni di Lauro, sviluppate nella preparazione della tesi.

Primo convertitore:

Il primo convertitore aveva l'obiettivo di convertire direttamente un documento PDF nel formato generico (sottoinsieme di html ben formato) di IsaWiki.

Per l'implementazione del programma mi sono basato sul programma open-source "Xpdf".

Ho individuato inizialmente le tipologie di informazioni che sarebbe stato possibile rappresentare nel formato di destinazione:

  • testo
  • immagini
  • strutture tabellari
  • stile grafico (font, colori, ecc...)

La procedura di conversione iniziava con tre scansioni mirate del documento: la prima individuava posizione e dimensioni delle immagini e salvava queste ultime come file bitmap (PPM e PBM), la seconda restituiva la lista delle parole nell'ordine di memorizzazione (raw order) nel file PDF originario, la terza analizzava ogni elemento di grafica vettoriale isolando le linee verticali ed orizzontali in due liste ordinate.

A questo punto il programma scandiva la lista di parole, ed in base alle coordinate del riquadro di ogni parola (bounding box) creava i paragrafi di testo.

In seguito venivano generate le strutture tabellari secondo criteri di prossimità fra testo e linee ortogonali.

Ho sospeso il lavoro su questo convertitore a seguito di alcune complicazioni fra le quali:

  • il formato di destinazione non prevede la separazione in più pagine, quindi sarebbe stato necessario individuare in ogni pagina del documento PDF intestazioni, numeri e più in generale ogni elemento decorativo ripetuto ed eliminarli
  • la corretta individuazione delle linee di delimitazione delle tabelle nell'intero insieme degli elementi di grafica vettoriale risultava troppo complicato in un'unica scansione

Nuovo convertitore:

Il nuovo convertitore genera una variante di SVG da PDF tramite l'utilizzo di "Xpdf" e "FreeImage".

SVG (Scalable Vector Graphcs) è un formato di grafica vettoriale in sintassi XML che ha potenzialmente lo stesso potere espressivo di PDF. Dunque la conversione da PDF ad SVG può essere lineare -e quindi poco complessa- con un risultato grafico più che soddisfacente; l'obiettivo del mio convertitore però è di generare un formato intermedio dal quale si riesca più agevolmente ad arrivare al formato generico di IsaWiki.

Le tipologie di informazioni estratte ed elaborate sono ora:

  • testo: il testo viene ora raggruppato sottoforma di "linee di testo", secondo criteri di prossimità e di direzione.
  • immagini: le immagini vengono salvate in files PBM o PPM e di seguito convertite in formato PNG o JPEG tramite la libreria "FreeImage" ed eventualmente inserite all'interno del documento SVG in base64.
  • elementi di grafica vettoriale: gli elementi di grafica vettoriale vengono convertiti in tre tipologie presenti in SVG: rettangolo, path (generico disegno con polilinee e curve), linea.
  • stile grafico relativo al testo ed alla grafica vettoriale: gli stili grafici vengono catturati ed espressi in sintassi CSS evitandone la duplicazione (stesse informazioni di stile per tutto il documento generato)
  • direttive di elaborazione grafica (clipping e masking): le clipping paths sono direttive che isolano l'area di visualizzazione ad una determinata area (path). Le image masks sono immagini (bicromatiche) utilizzate per creare effetti di mascheramento con lo sfondo.

Il programma può generare due tipi di documenti

  • SVG standard inglobato in HTML: viene generato un sistema di navigazione in HTML ed un documento SVG per ogni pagina del documento originario, tutti i tags e gli attributi sono SVG standard.
  • variante di SVG per IsaWiki: vengono introdotti alcuni tags ed attributi non SVG standard per permettere la generazione di un unico documento: ** <document> nodo radice del documento ** <page n="1"> delimitatore di pagina con relativo numero ** nel tag <tspan> vengono introdotti gli attributi xo,yo in caso di rotazione diversa da 0 e rappresentano le coordinate del punto calcolate secondo gli assi ortogonali XY e non rispetto agli assi ruotati

Xpdf

Xpdf è un programma open source scritto in C++ che comprende un visualizzatore e programmi di conversione: pdfimages, pdftops, pdftotext, pdftopbm.

La creazione di nuovi convertitori è comoda grazie alla presenza di una classe virtuale "OutputDev" che fornisce tutte le funzioni necessarie ad estrarre il contenuto dal file PDF.

FreeImage?

"FreeImage" è una libreria di conversione ed elaborazione di immagini e supporta svariati formati grafici.

Visualizzatori

Adobe SVG Viewer

Corel SVG Viever (consiglio questo perché più completo)

Note

fra poco inserirò alcuni esempi!

-- LauroCottafavi - 03 Jun 2004
to top


You are here: Tesi > ArgomentiDiTesi > IsaWiki > PdFConverter

to top

Copyright © 1999-2017 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Fabio's Wiki? Send feedback