Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Creare una versione PDF degli articoli di WordPress con mPDF

In questo articolo vedremo come creare una versione PDF per gli articoli di WordPress utilizzando la libreria mPDF.
In questo articolo vedremo come creare una versione PDF per gli articoli di WordPress utilizzando la libreria mPDF.
Link copiato negli appunti

Come funziona mPDF

mPDF utilizza un approccio basato sul rendering di una pagina HTML con un foglio di stile CSS per la stampa (il tipo media è print).

In pratica a questa libreria viene passato un documento HTML che verrà interpretato come da un browser e quindi trasformato in un file PDF.

mPDF supporta tutti i principali tipi di elementi HTML5 e molte proprietà CSS, supportando anche il posizionamento ed il floating all'interno del documento. Di fatto questa libreria consente anche di utilizzare proprietà CSS 2.1 e CSS3 per il tipo media screen.

Quale versione di mPDF?

Le recenti versioni di mPDF hanno cambiato radicalmente la struttura del codice della libreria. Ora viene utilizzato composer per l'autoloading delle classi e i namespace per l'inclusione dei componenti aggiuntivi e degli helper della libreria stessa.

Attualmente gli hosting condivisi supportano tutti PHP 5.6+ o PHP 7, ma non tutti consentono l'accesso shell per l'installazione di composer. Per questo motivo useremo la versione 6.0 della libreria che non necessita di questa dipendenza.

Preparazione del file CSS

Per prima cosa creiamo un file CSS per la stampa nella directory del tema in uso:

body { font: 14pt/24pt serif;}

Questa regola di base imposta la dimensione del font, il tipo di font e l'interlinea per il documento.

Quindi passiamo a normalizzare i collegamenti ipertestuali:

a { color: #000; text-decoration: none; }

Abbiamo rimosso la sottolineatura e uniformato il colore. Se il link è esterno possiamo stamparne l'URL con il contenuto generato:

a[href^=http]:after { content: ' (' attr(href) ') '; }

Ora dobbiamo rendere le immagini adattabili al contenuto della pagina:

img { display: block; max-width: 100%; height: auto; }

Ovviamente potete aggiungere altri stili specifici, ad esempio rimuovendo gli elementi presentazionali:

hr { display: none }

mPDF include già un foglio di stile predefinito, quindi gli stili omessi verranno ereditati da tale foglio di stile.

Includere la libreria

Nel file functions.php del nostro tema includiamo all'inizio la nostra libreria:

require_once( get_template_directory() . '/lib/mpdf/mpdf.php');

Ricordiamo che la costante TEMPLATEPATH è stata deprecata quindi dobbiamo far ricorso alla funzione get_template_directory().

Definire la funzione di rendering

Sempre nel file functions.php definiamo una funzione che crea un documento HTML come stringa e lo passa ad mPDF per il rendering:

function my_render_pdf() {
    global $post;
    $post_obj = get_post( $post->ID );
    $pdf_file_name = $post_obj->post_name . '.pdf';
    $html = '<html><head><title>' . $post_obj->post_title;
    $html .= '</title>';
    $html .= '<link rel="stylesheet" type="text/css"';
    $html .= ' media="print" href="';
    $html .= get_template_directory_uri() . '/pdf.css';
    $html .= '"></title></head>';
    $html .= '<body>' . $post_obj->post_content . '</body>';
    $html .= '</html>';
    $mpdf = new Mpdf();
    $mpdf->WriteHTML( $html );
    $mpdf->Output( $pdf_file_name, 'I' );
}

La nostra funzione reperisce i dati grezzi del post corrente utilizzando get_post() poiché WordPress aggiunge dei filtri ai campi che modificherebbero l'output finale.

Quindi passiamo la stringa HTML alla libreria specificando il nome del file PDF e il tipo di visualizzazione ("I" sta per inline, ossia nel browser).

Usare la funzione

Nel file single.php utilizzeremo una query string in questo modo:

<?php if( isset( $_GET['print'] ) && $_GET['print'] == 'pdf' ): my_render_pdf(); exit; endif; get_header(); ?>

Quindi realizziamo l'URL nel link di stampa:

<a href="<?php the_permalink(); ?>?print=pdf">...</a>

Ti consigliamo anche