Convertitore gratuito da PDF a HTML

Estrai il testo dai documenti PDF e convertilo in HTML semantico pulito. Visualizza l'anteprima all'istante e scarica o copia il codice.

I tuoi dati non lasciano mai il tuo dispositivo
Rilascia qui un PDF o clicca per sfogliare (max 10 MB)

Elaborazione in corso…

Informazioni sulla conversione PDF → HTML

Questo strumento usa PDF.js per estrarre il testo dai file PDF e renderlo in HTML semantico. Ideale per convertire documenti in formato web-compatibile, archiviare contenuti o preparare testo per un'elaborazione successiva.

Casi d'uso comuni

Domande frequenti

Quali dimensioni di PDF sono supportate?

Questo strumento può elaborare PDF fino a circa 10 MB a seconda del tuo browser. I PDF molto grandi o complessi possono richiedere più tempo per essere elaborati.

Conserva la formattazione del PDF?

Lo strumento estrae il contenuto testuale e lo rende in paragrafi. I layout complessi, le immagini e gli stili sono semplificati in HTML pulito.

Posso scaricare l'HTML?

Sì. Clicca su «Scarica l'HTML» per salvare il contenuto convertito in un file .html, apribile in qualsiasi browser o editor.

Una breve storia del PDF, da PostScript a una pagina portabile

Il Portable Document Format fu un'idea di John Warnock, cofondatore di Adobe Systems, che in precedenza aveva co-inventato PostScript, il linguaggio di descrizione di pagina che, a partire dal 1985 con la Apple LaserWriter, rese possibile il desktop publishing. PostScript era straordinariamente potente, ma era un linguaggio di programmazione, non un formato di documento: un file PostScript descriveva come renderizzare una pagina quando veniva passato a un interprete, ma non era davvero pensato per essere letto, modificato o reso in modo coerente su macchine prive dei font giusti.

Nel 1991, Warnock fece circolare un memo interno di Adobe che divenne noto come Progetto Camelot. La premessa: Adobe avrebbe dovuto costruire un unico formato di file capace di catturare qualsiasi documento (compresi i suoi font, l'impaginazione, la grafica vettoriale e le immagini) e di riprodurlo in modo identico su qualsiasi computer, su qualsiasi sistema operativo, indipendentemente dall'applicazione che lo aveva creato in origine. Quando la proposta fu rifinita, il progetto aveva un nome di prodotto: Adobe Acrobat.

Acrobat 1.0 e PDF 1.0 furono presentati alla fiera Comdex Fall di Las Vegas nel novembre 1992 e distribuiti ai clienti nel giugno 1993. La decisione commerciale cruciale di Adobe arrivò nel 1994, quando iniziò a regalare Acrobat Reader, una mossa che rispecchiava quanto era accaduto con i browser HTML e gettò le basi di milioni di installazioni. Il formato attraversò diverse revisioni: PDF 1.1 (1996, collegamenti esterni e sicurezza), 1.2 (1996, AcroForms), 1.3 (2000, firme digitali), 1.4 (2001, trasparenza), 1.5 (2003, object stream e JPEG 2000), 1.6 (2004, OpenType e 3D), 1.7 (2006). Nel 2008, il PDF 1.7 fu pubblicato come ISO 32000-1:2008; il PDF 2.0 seguì come ISO 32000-2:2017, con una seconda edizione sostanzialmente rivista (ISO 32000-2:2020) che incorporò gli errata corrige ed è l'attuale riferimento autorevole.

Diversi profili PDF specializzati esistono accanto allo standard principale: PDF/A (ISO 19005-1:2005, con -2 nel 2011 e -3 nel 2012) è il profilo di archiviazione che vieta le funzionalità dipendenti da risorse esterne o software futuro (niente JavaScript, niente audio, niente crittografia, i font devono essere incorporati); PDF/X è il profilo di prestampa usato dall'industria tipografica; PDF/E è il profilo ingegneristico per i disegni tecnici; PDF/UA (ISO 14289-1:2014) è il profilo di accessibilità universale che richiede una struttura logica e il tagging affinché gli screen reader possano presentare il contenuto in ordine di lettura; PDF/VT è il profilo variabile e transazionale usato nella stampa unione personalizzata.

Perché la conversione da PDF a HTML è strutturalmente difficile

Un PDF è, al suo livello più basso, un insieme di oggetti numerati (dizionari, array, stringhe, numeri, nomi e stream binari) disposti con una tabella di riferimenti incrociati alla fine che consente a un lettore di saltare a qualsiasi oggetto senza analizzare l'intero file. Gli oggetti formano un albero radicato in un oggetto Catalog che punta a un albero Pages, il quale contiene oggetti Page. Ogni Page fa riferimento a un content stream: le istruzioni effettive che disegnano la pagina.

Un content stream è una sequenza di operatori grafici compatti in un piccolo linguaggio imparentato con PostScript ma non Turing-completo. Per il testo, usa Tf (imposta font e dimensione), Td (sposta la posizione del testo), Tm (imposta la matrice del testo), Tj (mostra una stringa), TJ (mostra un array di stringhe con scostamenti opzionali dei singoli caratteri per il kerning) e ET (fine del testo). Il punto cruciale è che tutto è posizionale. Un paragrafo di testo corrente non è memorizzato come un paragrafo. È memorizzato come una serie di comandi Tj o TJ, ciascuno dei quali disegna un glifo o una breve sequenza di glifi a una specifica coordinata x e y sulla pagina. Non esiste alcuna nozione di frase, paragrafo, intestazione, elenco o colonna, ma solo la questione di dove ogni carattere si trovi fisicamente.

L'HTML è l'inverso: un albero scorrevole di elementi semantici in cui l'impaginazione è responsabilità del renderer e lo stesso HTML può rifluire per adattarsi a un telefono, a un desktop o a uno screen reader. Convertire un PDF in HTML richiede quindi di decodificare a ritroso una struttura che il PDF non è mai stato tenuto a registrare. Un convertitore deve esaminare la distribuzione spaziale del testo su ogni pagina e dedurre:

Nulla di tutto questo si risolve leggendo il content stream nell'ordine, perché l'ordine nello stream non è necessariamente l'ordine di lettura. Un motore di impaginazione che ha prodotto il PDF potrebbe aver disegnato gli elementi nell'ordine più efficiente per il rendering, che può essere dall'alto in basso a zig-zag, oppure per font, oppure per colore. Il testo di un singolo paragrafo può essere intervallato con il testo di paragrafi vicini nello stream sottostante. È per questo che gli estrattori di PDF che si limitano a concatenare le stringhe nell'ordine dello stream producono un output confuso per qualsiasi cosa più complessa di un romanzo a colonna singola.

Se il PDF è stato taggato, cioè se il suo autore ha incluso un albero della struttura accanto al contenuto visivo, il lavoro diventa molto più facile. Un PDF taggato include una gerarchia di elementi di struttura (P per il paragrafo, da H1 a H6 per le intestazioni, L per l'elenco, LI per la voce di elenco, Table, TR, TD, Figure, Caption) che rispecchiano il vocabolario semantico dell'HTML. Il PDF/UA impone il tagging per l'accessibilità proprio perché i PDF non taggati sono essenzialmente opachi alle tecnologie assistive. In pratica, però, la maggior parte dei PDF in circolazione non è taggata, o è taggata male dallo strumento di creazione, perciò un convertitore robusto deve ripiegare sull'analisi del layout anche quando i tag sono presenti.

Le principali librerie open source di rendering PDF

PDF.js è la libreria JavaScript scritta da Mozilla, lanciata originariamente nel giugno 2011 come progetto sperimentale guidato da Andreas Gal. Analizza e renderizza i PDF interamente nel browser usando il canvas HTML5 e JavaScript, senza richiedere alcun plugin nativo. PDF.js è stato integrato in Firefox come visualizzatore PDF predefinito a partire da Firefox 19 nel marzo 2013, sostituendo il plugin Adobe Reader. Espone un'API JavaScript che consente a una pagina di estrarre il contenuto testuale con metadati posizionali (ogni sequenza di testo viene restituita con la sua x, y, larghezza, altezza, nome del font e dimensione del font). Questo strumento è costruito su PDF.js.

Poppler è una libreria C++ derivata da xpdf, il venerabile visualizzatore PDF che Glyph and Cog mantiene dalla fine degli anni '90. Poppler alimenta le funzionalità di rendering PDF degli ambienti desktop Linux (Evince in GNOME, Okular in KDE), le utility da riga di comando pdftotext e pdftohtml e molte pipeline di elaborazione PDF lato server. MuPDF, di Artifex Software (la stessa azienda che mantiene Ghostscript), è una libreria C più piccola e veloce destinata all'uso embedded. PDFium è il motore incluso in Google Chrome e Microsoft Edge per la visualizzazione PDF integrata; è un fork del Foxit PDF SDK proprietario che Google e Foxit hanno reso open source congiuntamente nel maggio 2015. qpdf è una libreria C++ e uno strumento da riga di comando incentrato sulla manipolazione strutturale anziché sul rendering: può decomprimere, cifrare, decifrare, linearizzare e riscrivere i PDF senza modificarne il contenuto visivo.

Per produrre specificamente output HTML, il progetto su misura più importante è pdf2htmlEX, scritto in origine da Lu Wang nel 2012 e ora mantenuto da un gruppo della community. pdf2htmlEX adotta un approccio diverso dalla maggior parte dei convertitori: invece di provare a ricostruire HTML semantico, riproduce il layout visivo del PDF nel modo più fedele possibile emettendo elementi div a posizionamento assoluto per ogni sequenza di testo, incorporando i font originali come file Web Open Font Format (WOFF) e usando le trasformazioni CSS dove necessario. Il risultato è una pagina web che appare indistinguibile dal PDF originale, ma l'HTML sottostante è un muro di span position: absolute privi di qualsiasi significato semantico.

Fedeltà del layout contro flusso semantico, il compromesso centrale

Questo è il compromesso centrale nella conversione da PDF a HTML: puoi avere la fedeltà del layout oppure puoi avere il flusso semantico, ma è difficile avere entrambi. Un convertitore orientato alla fedeltà come pdf2htmlEX produce un output che si stampa e appare come l'originale ma è opaco a uno screen reader e rigido su uno schermo di telefono. Un convertitore orientato al flusso come pdftotext o il getTextContent di PDF.js seguito da una semplice ricostruzione dei paragrafi produce HTML pulito, leggibile e accessibile, ma perde la ricchezza visiva della sorgente: i colori, i font esatti, il posizionamento delle immagini, le griglie delle tabelle e ogni senso della pagina originale.

Lo strumento di Absolutool si colloca decisamente sul versante orientato al flusso. Estrae il contenuto testuale usando PDF.js e lo emette come paragrafi, dando priorità alla leggibilità, all'accessibilità e a una dimensione di file ridotta rispetto a una riproduzione perfetta al pixel. Se ti serve la via della riproduzione visiva (ogni glifo nella sua posizione originale, font originali incorporati, impaginazione esatta conservata) pdf2htmlEX è lo strumento da considerare; se ti serve la via dei paragrafi leggibili (riutilizzo dei contenuti, pubblicazione web, HTML indicizzabile dai motori di ricerca, output accessibile agli screen reader) questo strumento è adatto allo scopo.

Font incorporati, immagini e il contenuto vettoriale sottostante

Un PDF può incorporare qualsiasi font voglia, e un convertitore che vuole preservare l'aspetto originale ha tre opzioni. Incorpora e servi: il convertitore estrae ogni font incorporato dal PDF, lo riconfeziona come web font in un formato che i browser comprendono (WOFF o, dal 2018, WOFF2 con la sua compressione Brotli più aggressiva) e vi si collega dall'HTML generato. Questo preserva l'aspetto originale ma gonfia la dimensione del file e può incorrere in problemi di licenza se i diritti di incorporamento del font non si estendono alla ridistribuzione sul web. Sostituisci: mappa ogni font incorporato su un font di sistema simile (un font PDF con grazie potrebbe diventare Times New Roman o Georgia), accettando una certa deriva visiva in cambio di un output più piccolo e pulito. Ignora: scarta del tutto le informazioni sul font e lascia che il browser applichi un font di testo predefinito, che è ciò che fa la maggior parte dei convertitori orientati al flusso, perché l'utente legge l'HTML con lo stile normale del browser.

Le immagini presentano una scelta analoga. Un convertitore può estrarre le immagini incorporate come file separati e farvi riferimento dall'HTML; rasterizzare intere pagine come immagini e incorporarle inline (trasformando il PDF in poco più di una galleria di immagini); oppure eliminare del tutto le immagini ed emettere solo testo, che è la scelta fatta da questo strumento, appropriata per il riutilizzo dei contenuti anziché per la riproduzione visiva. Il contenuto vettoriale (linee, forme, tracciati disegnati dagli operatori grafici del PDF) è ancora più scomodo, perché non c'è un modo pulito per rappresentarlo in HTML semantico; i convertitori che vogliono preservarlo tendono a ripiegare su SVG inline o sulla rasterizzazione in PNG.

Quando il PDF è un'immagine: ripiego OCR per i documenti scansionati

Una frazione significativa dei PDF in circolazione non sono affatto documenti in senso strutturato: sono immagini scansionate di documenti cartacei, impacchettate in involucri PDF perché il PDF è il formato universale per inviare cose simili alla carta su internet. Un PDF scansionato non ha alcun content stream di testo; ogni pagina è una singola immagine raster incorporata che per caso raffigura del testo ma non lo contiene come caratteri leggibili dalla macchina. Estrarre il testo da un PDF del genere richiede il riconoscimento ottico dei caratteri (OCR), che è un'operazione fondamentalmente diversa dall'estrazione del testo.

Il motore OCR open source dominante è Tesseract, sviluppato in origine agli HP Labs tra il 1985 e il 1995, reso open source nel 2005 e mantenuto da Google dal 2006 fino a quando, intorno al 2018, Google ne ha affidato la gestione principale a un gruppo della community. Tesseract supporta più di un centinaio di lingue, gira su ogni piattaforma principale e alimenta le funzionalità OCR di innumerevoli strumenti desktop e server. Il framework Vision di Apple, disponibile su macOS e iOS dal 2017, include un'API di riconoscimento del testo veloce e accurata, usata dalle app di screenshot e foto integrate nel sistema operativo. Google Cloud Vision, Azure Computer Vision e Amazon Textract sono i principali servizi OCR in cloud; per i documenti nello specifico, sia Textract sia Document Intelligence di Azure vanno oltre l'OCR grezzo per riconoscere tabelle, coppie chiave-valore e campi di moduli.

Un convertitore da PDF a HTML basato su browser che gira interamente lato client non può generalmente eseguire l'OCR: i modelli OCR pesano come minimo decine di megabyte e l'inferenza è troppo lenta per essere eseguita in modo interattivo sul portatile di un utente. Se il tuo PDF contiene pagine scansionate senza testo estraibile, questo strumento produrrà un output vuoto per quelle pagine, e il passo successivo giusto è uno strumento OCR separato o un servizio lato server.

Perché le persone convertono i PDF in HTML

I casi d'uso ricadono in una manciata di schemi ricorrenti:

Ciascuno di questi ha requisiti leggermente diversi, ma condividono un filo comune: l'utente vuole il contenuto del PDF (le parole, la struttura, il significato) senza essere vincolato dal rigido formato legato alla pagina che il documento originale ha scelto.

Altre domande

Perché il mio HTML convertito appare diverso dal PDF originale?

Questo strumento è orientato al flusso: estrae il testo ed emette paragrafi puliti nel font predefinito del tuo browser, dando priorità alla leggibilità, all'accessibilità e all'indicizzabilità nei motori di ricerca rispetto alla fedeltà visiva. Se ti serve una riproduzione perfetta al pixel del layout originale (font incorporati, posizionamento esatto, colori originali) guarda agli strumenti orientati alla fedeltà come pdf2htmlEX, che emette elementi div a posizionamento assoluto che corrispondono visivamente al PDF di origine ma producono HTML essenzialmente illeggibile per gli screen reader e rigido sugli schermi dei telefoni.

Perché il mio PDF a più colonne esce disordinato?

Il PDF non memorizza l'ordine di lettura, solo le posizioni. Un convertitore deve dedurre i confini delle colonne dalla distribuzione spaziale del testo. Per i semplici layout a due colonne l'euristica di solito funziona; per i layout complessi con note a margine, note a piè di pagina che si intrecciano con il testo corrente o testo che attraversa un canaletto tra le colonne, può produrre un output fuori ordine. Se hai un PDF taggato (uno che include un albero della struttura), l'accuratezza è nettamente migliore; per i PDF non taggati, il risultato dipende da quanto chiaramente le colonne sono separate fisicamente dallo spazio bianco.

Il mio PDF è scansionato (solo immagini), perché non viene estratto nulla?

Un PDF scansionato non ha contenuto testuale: ogni pagina è un'immagine raster di testo anziché testo che il parser può leggere. Estrarre il testo richiede l'OCR (Tesseract, Google Cloud Vision, il framework Vision di Apple, ecc.), che è un'operazione fondamentalmente diversa dall'analisi del PDF. Questo strumento non include un motore OCR perché i modelli sono troppo grandi per essere distribuiti con uno strumento da browser. Il passo successivo giusto è un servizio OCR dedicato o uno strumento desktop con OCR integrato.

Posso convertire un PDF protetto da password?

Se il PDF ha una password di apertura (devi digitare una password solo per visualizzarlo), PDF.js genererà un errore anziché convertirlo. Se il PDF ha solo una password dei permessi (l'apertura è libera ma la stampa/copia sono limitate), il comportamento varia: la maggior parte delle build moderne di PDF.js rispetta i permessi e può rifiutarsi di estrarre il testo. In ogni caso, la via più pulita è rimuovere prima la protezione nello strumento PDF originale, poi convertire. Rimuovere la protezione da un PDF che possiedi legalmente va bene; farlo su un PDF che non possiedi potrebbe non andare bene.

Strumenti correlati