WordPress: creare la versione PDF dei post con la libreria MPDF

WordPress: creare la versione PDF dei post con la libreria MPDF

La libreria MPDF genera file PDF a partire da un input HTML. Questa libreria è ampiamente personalizzabile sia tramite il suo file di configurazione che attraverso fogli di stile CSS specifici. Fornendo una stringa HTML, questa viene convertita in un file PDF perfettamente funzionante. In questo articolo vedremo come utilizzare questa libreria per generare la versione PDF dei nostri post di WordPress.

Carichiamo la libreria all'interno di una nuova directory del nostro tema che chiameremo inc (se non esiste già). Quindi il percorso del file principale della nostra libreria sarà /tema/inc/MPDF54/mpdf.php.

Quindi dobbiamo modificare il file single.php in modo che se il parametro GET output non è impostato, quest'ultimo esegua normalmente il codice di WordPress. Viceversa, se questo parametro è impostato su pdf, viene usata la libreria MPDF per generare il nostro PDF a partire dal contenuto del post corrente:


<?php
if(!isset($_GET['output'])) {

get_header(); ?>

		<div id="container">
			<div id="content" role="main">

			<?php
			/* Run the loop to output the post.
			 * If you want to overload this in a child theme then include a file
			 * called loop-single.php and that will be used instead.
			 */
			get_template_part( 'loop', 'single' );
			?>

			</div><!-- #content -->
		</div><!-- #container -->

<?php get_sidebar(); ?>
<?php get_footer(); 
} else if(isset($_GET['output']) && $_GET['output'] == 'pdf') {

	require_once(TEMPLATEPATH . '/inc/MPDF54/mpdf.php');
	$mpdf = new mPDF(); 
	global $post;
	$html = str_replace('[pdf-link]', '', $post->post_content);
	$mpdf->WriteHTML($html);
	$mpdf->Output();
	exit;


}

?>

Quindi nel file functions.php dobbiamo creare uno shortcode per generare un link alla versione PDF del post corrente:


function create_pdf_link() {

	global $post;
	$id = $post->ID;
	$url = get_permalink($id);
	$link = '<p><a href="' . $url . '?output=pdf">Versione PDF</a></p>';
	
	return $link;

}

add_shortcode('pdf-link', 'create_pdf_link');

E questo è il risultato finale:

[caption id="attachment_4119" align="aligncenter" width="802"] Il nostro post in versione PDF[/caption]
Torna su