Come effettuare il parsing di un file PDF con PHP

Il parsing di un file PDF in PHP è un’operazione utile quando si ha la necessità di estrarre dati testuali da documenti PDF per analisi, indicizzazione o archiviazione. In questo articolo vedremo come farlo utilizzando una delle librerie più popolari: smalot/pdfparser.

1. Installazione della libreria

La libreria smalot/pdfparser può essere installata facilmente tramite Composer, il gestore di pacchetti per PHP.

composer require smalot/pdfparser

2. Esempio di utilizzo base

Dopo l’installazione, è possibile utilizzare la libreria per leggere e analizzare un file PDF come mostrato nel seguente esempio.

<?php
require 'vendor/autoload.php';

use Smalot\PdfParser\Parser;

$parser = new Parser();
$pdf = $parser->parseFile('documento.pdf');

$text = $pdf->getText();

echo nl2br(htmlentities($text));

3. Estrazione di metadati

Oltre al contenuto testuale, è anche possibile accedere ai metadati del PDF, come titolo, autore, soggetto, ecc.

<?php
$details = $pdf->getDetails();

foreach ($details as $key => $value) {
    echo $key . ': ' . (is_array($value) ? implode(', ', $value) : $value) . '<br>';
}

4. Parsing pagina per pagina

Se si desidera elaborare il contenuto di ogni pagina separatamente, è possibile farlo accedendo all’array di pagine:

<?php
$pages = $pdf->getPages();

foreach ($pages as $index => $page) {
    echo 'Pagina ' . ($index + 1) . ':<br>';
    echo nl2br(htmlentities($page->getText()));
    echo '<hr>';
}

5. Considerazioni

Il parsing di PDF può non essere sempre perfetto, poiché il formato PDF è complesso e può contenere testo incorporato in modi non convenzionali. La qualità dell’estrazione dipende dalla struttura del file PDF e da come il testo è stato inserito originariamente.

Conclusione

Utilizzando smalot/pdfparser, è possibile estrarre in modo relativamente semplice testo e metadati dai file PDF in PHP. Per esigenze più complesse, come l’estrazione di immagini o la modifica dei file PDF, potrebbero essere necessarie librerie più avanzate come TCPDF o FPDI.

Torna su