Come convertire un file HTML in PDF

Ti è mai capitato di dover creare un file PDF in modo dinamico e automatico, ad esempio per creare una fattura, un catalogo, una conferma d’ordine, un report?
Sicuramente avrai pensato “Sarebbe fantastico poterlo fare in modo semplice partendo da una pagina HTML…”.
Non sei il solo! L’esigenza di generare un file PDF in modo automatico è una delle esigenze più diffuse del web. In questa guida scopriremo quanto sia semplice generare un file PDF da HTML usando una potente libreria PHP chiamata Dompdf
- Leggi l'articolo, ti bastano solo 5 minuti, 6 secondi
Sei di fretta? Scarica il PDF e consultalo quando vuoi!
Sommario
| 1 Come installare Dompdf |
| 2 Il tuo primo PDF: un esempio concreto |
| 3 Personalizzazione dello stile e CSS |
| 4 Link utili |
| 5 Conclusioni |
| 6 Commenti |
Come installare Dompdf
Partiamo dalla base: l’installazione della libreria Dompdf, necessaria a raggiungere il nostro scopo.
Il modo più semplice per farlo è usare Composer. Assicurati quindi di avere a disposizione Composer nel tuo progetto e nella cartella del progetto lancia tramite terminale il comando:
composer require dompdf/dompdf
Ed il gioco è fatto!
Se non conosci Composer, ti suggerisco di approfondire l’argomento, mi rigrazierai!
Se non hai Composer, o non sai come utilizzarlo, puoi comunque scaricare il pacchetto da GitHub e includere manualmente i file.
Il tuo primo PDF: un esempio concreto
Ma partiamo subito dalla pratica per comprendere la semplicità di Dompdf.
Iniziamo col creare un markup HTML, che sarà la base per il nostro primo file PDF generato:
<img src="https://code4life.it/wp-content/uploads/2025/04/logo.png" alt="Logo Code4Life.it"> <h1>Ciao!</h1> <p>Questo è un PDF generato da HTML con Dompdf utilizzando la guida di Code4Life.it!</p> <br /> <a href="https://code4life.it/" target="_blank" style="color: #000;">Visita Code4Life.it</a>
Abbiamo inserito anche una immagine, per un esempio più completo.
A questo punto creaimo un piccolo script PHP in cui istanziamo un oggetto Dompdf:
require 'vendor/autoload.php'; // Autoloader Composer
use Dompdf\Dompdf; // Includo la libreria DOMPDF
$dompdf = new Dompdf(); // Istanzio l'oggetto
$html = '
<img src="https://code4life.it/wp-content/uploads/2025/04/logo.png" alt="Logo Code4Life.it">
<h1>Ciao!</h1>
<p>Questo è un PDF generato da HTML con Dompdf utilizzando la guida di Code4Life.it!</p>
<br />
<a href="https://code4life.it/" target="_blank" style="color: #000;">Visita Code4Life.it</a>
';
$dompdf->loadHtml($html);
$dompdf->setPaper('A4', 'portrait');
$dompdf->render();
$dompdf->stream("documento.pdf", ["Attachment" => false]);Davvero semplice no? In questo modo abbiamo convertito il nostro frammento HTML in un file PDF, che viene mostrato nel browser. E ci sono volute poche righe di codice per farlo!
Come puoi notare, abbiamo detto a Dompdf di creare un PDF in formato A4 orientato in verticale (portrait), ma ovviamente puoi decidere il formato e l’orientamento che preferisci.
Inoltre, con la riga:
$dompdf->stream("documento.pdf", ["Attachment" => false]);
abbiamo in pratica chiesto a Dompdf di visualizzare il file PDF generato a partire da HTML nel browser, grazie al metodo stream(). Volendo, modificando il parametro ["Attachment" => false] in ["Attachment" => true] ne forzeremo anche il download.
Se invere vuoi salvare il file PDF generato da Dompdf sul server, per conservarlo o usarlo successivamente, puoi sostituire la riga di stream con:
file_put_contents("documento.pdf", $dompdf->output());In più, puoi vedere che per il link abbiamo inserito uno style inline per modificare il colore del link e renderlo nero.
Si, hai capito bene! Se vuoi puoi addirittura inserire CSS inline nel tuo frammento HTML.
Su questo argomento, forse vale la pena spendere qualche parola in più, sei d’accordo?
Personalizzazione dello stile e CSS
Come hai potuto vedere, abbiamo inserito uno stile in linea per dare un tocco personale al link nel file PDF generato con Dompdf, trattandosi di una modifica semplice.
Per stili più elaborati, puoi inserire un tag <style> nel template HTML, ad esempio:
<html>
<head>
<style>
a { color: #000; }
</style>
</head>
<body>
<img src="https://code4life.it/wp-content/uploads/2025/04/logo.png" alt="Logo Code4Life.it">
<h1>Ciao!</h1>
<p>Questo è un PDF generato da HTML con Dompdf utilizzando la guida di Code4Life.it!</p>
<br />
<a href="https://code4life.it/" target="_blank">Visita Code4Life.it</a>
</body>
</html>Abbiamo ottenuto lo stesso risultato dello stile inline, ma con ua scrittura più manutenibile ed estendibile.
È possibile anche creare layout più o meno complessi e più personalizzati, usando dei veri e propri templates con fogli di stile. Ad esempio, puoi inserire lo style CSS in un file, che chiameremo template.css:
a { color: #000; }e il markup HTML in un altro file, che chiameremo template.html e che conterrà a sua volta lo stylesheet:
<html>
<head>
<link rel="stylesheet" href="https://tuosito.it/stile.css">
</head>
<body>
<img src="https://code4life.it/wp-content/uploads/2025/04/logo.png" alt="Logo Code4Life.it">
<h1>Ciao!</h1>
<p>Questo è un PDF generato da HTML con Dompdf utilizzando la guida di Code4Life.it!</p>
<br />
<a href="https://code4life.it/" target="_blank">Visita Code4Life.it</a>
</body>
</html>Infine, non resta che modificare lo script che genera il file PDF a partire da HTML per includere il file esterno, anziché dichiarare il markup nello script stesso:
require 'vendor/autoload.php'; // Autoloader Composer
use Dompdf\Dompdf; // Includo la libreria DOMPDF
$dompdf = new Dompdf(); // Istanzio l'oggetto
$html = file_get_contents('template.html'); // Il file HTML contiene il <link> al CSS locale
$dompdf->loadHtml($html);
$dompdf->setPaper('A4', 'portrait');
$dompdf->render();
$dompdf->stream("documento.pdf", ["Attachment" => false]);Ecco il risultato finale:
Link utili
Ecco infine qualche link utile se desideri approfondire gli argomenti di cui abbiamo parlato:
Conclusioni
Nella maggior parte dei casi più comuni, Dompdf è uno strumento perfetto per generare file PDF dinamici con PHP a partire da un markup HTML, ma considera che per casi più complessi o pixel-perfect ci sono soluzioni più avanzate (ovviamente più complesse).
Creare un PDF da HTML con Dompdf è davvero semplice e alla portata di tutti. Abbiamo visto con un esempio pratico come in pochi minuti sia possibile trasformare un template HTML in un documento scaricabile, stampabile, pronto all’uso.
Hai già in mente un progetto in cui potresti usarlo? Una fattura? Un preventivo automatico?