Come creare un file PDF in PHP

Data la sua diffusione e la sua portabilità, il formato PDF è diventato uno standard aperto incluso nella categoria ISO (International Organization for Standardization). I documenti PDF possono contenere collegamenti e pulsanti, campi modulo, audio, video e funzionalità di business logic. In questo tutorial vedremo come creare file PDF con PHP grazie alla libreria gratuita FPDF.

Per un programmatore è fondamentale saper generare file PDF. In quanto, documenti in PDF sono spesso usati anche in presentazioni, report, grafici e tanto altro. Inoltre i file creati in questo formato hanno l’enorme vantaggio di essere letti e visualizzati nello stesso modo su qualsiasi dispositivo.

Tutti i linguaggi di programmazione hanno librarie che permettono di creare file in PDF. Naturalmente anche PHP ha le sue.

In particolare, in PHP esistono diverse librerie, sia gratuite che commerciali. In questo tutorial useremo la libreria FPDF in quanto gratuita, facile da usare e ben documentata.

La prima cosa che devi fare, per iniziare ad usarla, è collegarti a questa pagine e scaricare l’ultima versione disponibile. Quindi, dopo il download, estrai il contenuto in una sottocartella del tuo progetto. Per esempio, puoi creare una nuova cartella, chiamarla “lib” o “FPDF”, e copiare all’interno la libreria.

Da questo momento, sei pronto per scrivere il codice necessario per generare file in PDF.

Come creare un file PDF in PHP con FPDF

Ovviamente la prima cosa che devi fare è importare, con la parola chiave require, la libreria. Se la libreria si trova nella sotto cartelle lib, il codice che dovrai scrivere inizierà con:

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

Subito dopo, crea un oggetto della classe FPDF:

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

Il costruttore della classe FPDF accetta tre parametri, che sono:

__construct([string orientation [, string unit [, mixed size]]])

  • 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‘;

I valori di default sono orientation: ‘P‘, unit: ‘mm‘, size:  ‘A4‘;

Puoi anche specificare un formato personalizzato passando come parametro size un array bidimensionale, dove dovrai indicare larghezza ed altezza, usando come unità di misura quella passata con il parametro unit.

Per esempio, se vuoi creare un documento nel formato 100×150 mm, devi scrivere:

$pdf = new FPDF('P','mm',array(100,150));

Hai appena creato un documento vuoto. Ora devi aggiungere una pagina, specificare il Font e aggiungere del testo.

La pagina va aggiunta con il metodo AddPage([string orientation [, mixed size [, int rotation]]]). Per ogni nuova pagina che aggiungi puoi modificare orientamento e formato. Ma, se non passi parametri al metodo, la pagina sarà creata sulla base di quelli passati al 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 stampare del testo.

Approfondiremo più avanti come aggiungere Font al documento. Per ora usiamo quelli standard:

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

Quindi, aggiungi la chiamata a questi metodi al codice:

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

Ora, per completare il tuo primo documento in PDF devi aggiungere del testo.

Come aggiungere del testo ad un PDF

FPDF ti permette di aggiungere del testo al documento usando diversi metodi, come Cell(), MultiCell(), Write() e Text().

Per il nostro esempio useremo il metodo Cell():

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

I primi due parametri sono larghezza e altezza della cella, il terzo parametro è il testo.

Inoltre, il metodo Cell(), ti da la possibilità di aggiungere il bordo alla cella, specificare se il testo dev’essere allineato a destra, sinistra o centrato, di aggiungere un link al testo e scegliere uno sfondo.

Naturalmente, puoi aggiungere più celle alla stessa pagina chiamando più volte il metodo Cell().

Dopo aver terminato il tuo documento, lo devi inviare al browser, con il metodo Output();

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

A questo punto vediamo il codice completo per creare il tuo primo file PDF in PHP.

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

Puoi passare alcuni parametri al metodo Output(), come destinazione, nome file e codifica:

Output([string dest [, string name [, boolean isUTF8]]])

Con il parametro dest puoi specificare la destinazione dove mandare il documento. Puoi usare uno dei seguenti valori:

  • 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.

Il parametro name è il nome che sarà assegnato al file. Se non specificato il file si chiamerà doc.pdf.

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

Conclusioni su come creare un file PDF in PHP

In questo articolo abbiamo visto come, con poche righe di codice, è possibile creare facilmente un documento PDF in PHP. Nel prossimo articolo vedremo “Come creare una tabella in un file PDF con PHP e FPDF“.

Se hai necessità di estrarre dati da un file csv, ti consiglio di leggere Come leggere un file CSV in PHP.

Spero di esserti stato utile con i miei consigli.

Nuovi articoli e tutorial sulla programmazione in PHP ed in altri linguaggi ti aspettano su blogamico.it. Quindi resta in contatto, 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 241 posts and counting.See all posts by Rocco Vincy