Juil
7

Convertir une page HTML en PDF avec ZendParadoxPDF

Paradox PDF, conversion de fichier HTML en PDF

ZendParadoxPDF est un plugin Zend qui permet de générer à la volée un PDF à partir d’une page HTML. C’est à la base un plugin EZ Publish que j’avais déjà eu l’occasion d’utiliser et dont j’avais été très satisfait.

Pour cela, il faut avoir Java d’installé sur son serveur car le script appel un fichier JAR qui s’occupe de la génération PDF.

Mise à part cette petite contrainte, ce générateur est plutôt efficace par rapport à d’autres dans la mesure où il supporte assez bien le CSS et notamment l’attribut « float », ce qui évite d’avoir à refaire une vue spécifique avec une mise en page avec des tableaux . Pour générer un PDF, il suffit d’avoir un fichier XHTML valide.

Le plugin est simple à mettre en place et à utiliser :

– Copier le dossier ZendParadoxPDF dans le répertoire library
– Configurer le plugin dans RenderPDF.php

Attention, pour Windows, il faut mettre le chemin complet, je me suis fait bêtement avoir en pensant qu’il fallait juste indiquer le dossier où se situe Java…

//Chemin pour linux
$this->_javaEXEC = '/usr/bin/java';
//Exemple de chemin windows
// Les double quotes sont nécessaires si vous avez des espaces dans votre chemin
//$this->_javaEXEC = '"C:\Program Files\Java\jre6\bin\java.exe"';
$this->_paradoxPDFExec = realpath(dirname(__FILE__) . "/bin/paradoxpdf.jar");
$this->_tmpDIR = '/tmp/';
$this->_debugEnabled = false;

Dans votre controlleur :

public function articleToPDFAction()
{
   //On désactive l'appel au layout principal car la vue pdf contiendra le HTML complet
   $this->_helper->layout->disableLayout();
   $this->_helper->viewRenderer->setNoRender();
 
   $var1 = "my first var";
   $var2 = "my second var";
 
   $view = new Zend_View();
   $view->assign('var1',$var1);
   $view->assign('var2',$var2);
   $view->setScriptPath(realpath(dirname(__FILE__).'/../views/scripts/index')); // here set your own path
 
   $ZendParadoxPDF = new ZendParadoxPDF_View_Helper_RenderPDF();
 
   $ZendParadoxPDF->exportPDF($view->render('article-to-pdf.phtml'),"file_name"));
}

et votre vue :

Tout votre CSS doit être présent dans la vue, l’inclusion d’un fichier CSS ne fonctionne pas.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" /> 
<meta name="description" content="" />
<title>ZendParadoxPDF</title>
<style type="text/css">
@page
{
        size: a4 portrait;
        margin: 0.25in;
        padding: 1em;
}
 
/***********************************************************************************
 *********************YOU CAN ADD CUSTOM FONT***************************************
 ***********************************************************************************
 *@font-face
 *{
 *      font-family: "FreeSans";
 *      src: url("http://<?php echo $_SERVER['HTTP_HOST']?>/css/fonts/freesans.ttf");
 *      -fs-pdf-font-encoding: Identity-H;
 *}
 *
 *body
 *{
 *      font-family: "FreeSans";
 *}
 */
 
body
{
        font-family: Arial;
}
</style>
</head>
<body>
<span style="color: #ff0000;">YOUR XHTML CONTENT</span>
<h3>VAR1</h3>
var1=<?php echo $this->var1?>
<h3>VAR2</h3>
var2=<?php echo $this->var2?>
</body>
</html>

Vous pouvez télécharger ce plugin sur le site de ZendParadoxPDF.



Poster un commentaire

Edito

Bienvenue sur Mémorandom.

Mémorandom est le blog de 2 développeurs web, Appo et Nico.

Vous y trouverez des informations sur différents domaines touchant de près ou de loin au développement web

Tutoriels Yii Framework

Nos derniers articles

Blogs Dev

Liens

Étiquettes