Come generare un file PDF con PHP

In questo tutorial vedremo insieme come generare un file PDF in PHP.

PDF è tra i formati più diffusi, è usato principalmente per la distribuzione di documenti digitali, ed è diventato uno standard ISO.  I file pdf sono visualizzati nello stesso modo su qualsiasi dispositivo. Conservano la stassa formattazione e l’impaginazione.

Con PHP puoi creare facilmente file in PDF usando delle librerie esterne gratuite, open source o con licenza commerciale.

Le librerie più diffuse, usate per generare file PDF in PHP sono:

  • TCPDF un ottima libreria open source, nata nel 2002, con la quale è possibile generare al volo documenti in pdf completi; è utilizzata da milioni di utenti ed integrata in migliaia di applicazioni Web e CMS;
  • FPDF una libreria open source, simile a TCPDF ma con qualche funzione in meno, semplice da usare e ben documentata;
  • PDFLib una libreria commerciale completa e che permette di generare e modificare file in pdf.

In questa guida useremo la libraria FPDF per generare i nostri PDF, poiché è semplice da usare e sul sito è presente anche la documentazione in italiano.

Generare file PDF in PHP con FPDF

La prima cosa che devi fare, per iniziare a realizzare i tuoi primi documenti, è collegarti a questa pagine e scaricare l’ultima versione disponibile della libreria. Quindi, estrai il contenuto della cartella compressa in una sottocartella del tuo progetto.

Ora, creiamo il  nostro primo script in php con FPDF.

Innanzitutto, importa la libreria. Se la libreria si trova nella cartella “lib”, il codice che dovrai inserire in cima al tuo script dev’essere:

<?php
require('lib/fpdf.php');

Il file PDF viene generato dalla classe FPDF, quindi creiamo un oggetto che è istanza della classe:

<?php
require('lib/fpdf.php');
$pdf = new FPDF();

Attraverso il costruttore della classe FPDF puoi specificare:

  • orientamento (orientation): ‘P‘ o ‘Portrait‘ (verticale), ‘L‘ o ‘Landscape‘(orizzontale);
  • unità di misura (unit): ‘pt‘: punti, ‘mm‘: millimetri, ‘cm‘: centimetri, ‘in‘: pollici;
  • il formato utilizzato per la pagina(size): ‘A3‘,  ‘A4‘, ‘A5‘,  ‘Letter‘, ‘Legal‘;

Se non specificati, i valori di default sono orientation: ‘P‘, unit: ‘mm‘, size:  ‘A4‘.

Abbiamo appena preparato un documento vuoto. Ora dobbiamo aggiungere una pagina, specificare il Font ed inserire del testo.

La pagina va aggiunta con il metodo AddPage([string orientation [, mixed size [, int rotation]]]), specificando, se necessario orientamento e dimensioni. Chiamando il metodo senza parametri, la pagina sarà creata in base ai parametri specificati dal costruttore.

Il Font lo devi indicare con il metodo SetFont(string family [, string style [, float size]]). E’ obbligatorio chiamare questo metodo almeno una volta prima di aggiungere del testo.

I Font standard che puoi specificare sono:

  • Courier (fixed-width);
  • Helvetica o Arial (sinonimi; sans serif);
  • Times (serif);
  • Symbol (symbolic);
  • ZapfDingbats (symbolic).

Ma puoi anche aggiungerne altri. Consulta la documentazione per sapere come fare.

Il codice da scrivere fino a questo punto sarà:

<?php
require('lib/fpdf.php');
$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);

Inserire del testo in un file PDF generato con FPDF

Ora, il nostro documento è pronto per ricevere del testo. Quindi, non ci resta che inserire il nostro testo e generare il primo file in PDF con PHP.

Per inserire del testo in un documento generato con la classe FPDF puoi usare uno dei seguenti metodi: Cell()MultiCell()Write() e Text().

Cell() e MultiCell() creano delle caselle all’interno delle quali puoi inserire del testo. Dovrai specificare le dimensioni della cella e se necessario aggiungere del bordo e specificare l’allineamento del testo.

Write() è il metodo più semplice per l’aggiunta di testo. I parametri richiesti sono solo l’altezza e il testo da aggiungere.

Text() è il metodo meno usato in quanto, per usarlo, bisogna specificare le coordinate dove inserire il testo, il ché lo rende poco User-Friendly.

Per il nostro esempio useremo il metodo Cell(),  essendo il metodo più usato, ma anche semplice da usare. La sintassi del metodo è:

Cell(float w [, float h [, string txt [, mixed border [, int ln [, string align [, boolean fill [, mixed link]]]]]]])

I primi due parametri (w e h) sono larghezza e altezza della cella mentre il terzo parametro(txt) è il testo.

Inoltre, puoi scegliere se aggiungere del bordo alla cella, specificare se il testo dev’essere allineato a destra, sinistra o centrato, puoi aggiungere un link al testo e scegliere uno sfondo.

Per aggiungere più celle alla stessa pagina devi chiamare più volte il metodo Cell().

Se vuoi indicare alla classe di andare a capo dopo una cella, lo puoi fare in due modi, o assegni il valore 1 al parametro ln del metodo Cell o chiami il metodo Ln().

In fine, per generare ed inviare al browser il file PDF devi usare il metodo Output();

Ricorda che dopo il metodo Output() non dovrai inserire altro codice che modifica il documento, altrimenti sarà generato un errore o verrà visualizzato un documento vuoto.

Completiamo il nostro codice e generiamo un file PDF con il testo “Hello Word”.

<?php
require('lib/fpdf.php');
$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,'Hello World!');
$pdf->Output();
?>

Ulteriori suggerimenti

Con il metodo Output() puoi specificare destinazione, nome file e codifica:

Per indicare la destinazione del documento puoi indicare uno dei seguenti parametri:

  • I: manda il ‘file inline’ al browser. Il plug-in sarà utilizzato se presente (valore predefinito);
  • D: manda al browser e forza il download del file con il nome dato con name;
  • F: salva il file in locale con il nome dato con name;
  • S: ritorna il documento come stringa.

Per quanto riguarda il nome, se non specificato il file si chiamerà doc.pdf.

Infine, la codifica dev’essere un valore booleano dove true indica che il documento segue la codifica UTF-8, mentre false la codifica è ISO-8859-1. Il valore predefinito è false.

Conclusioni – come generare file PDF con PHP

Spero di esserti stato utile con questa breve guida su come generare file PDF con PHP. Se vuoi approfondire l’uso della libreria FPDF puoi consultare la documentazione presente sul sito ufficiale o seguire alcune mie guide presenti sul blog come: “Come creare una tabella in un file PDF con PHP e FPDF“.

Su BlogAmico trovi anche altre guide che potrebbero esserti utile. Per esempio, se hai necessità di estrarre dati da un file csv, ti puoi leggere Come leggere un file CSV in PHP.

Se hai qualche domanda da farci o vuoi proporci suggerimenti, puoi farlo contattandoci sui social o via email. Seguici sulla nostra pagina Facebook.

Articoli correlati


Rocco Vincy

Analista/Programmatore, web developer e blogger, mi occupo di sicurezza informatica e delle comunicazioni. Co-fondatore del sito/blog "BlogAmico" Telegram: @RoccoVincy

Rocco Vincy has 245 posts and counting.See all posts by Rocco Vincy