Pas de compte !!!
Documentations > WIKI > WIKI pour tcpdf_for_xoops > Méthode pour construire un fichier makepdf.php / A method for building a file makepdf.php

Méthode pour construire un fichier makepdf.php / A method for building a file makepdf.php

Publié par montuy337513 le 06-Aug-2012 16:00 (6298 lectures)

Version française

(see english version)

Voici la structure d'un fichier makepdf.php

1 - la partie 'vérification', histoire de voir la provenance du visiteur, son groupe, si il est enregistré, etc... . C'est la même structure que pour une page de module.

2 - la partie 'préparation des données', vous allez cherchez les données à mettre en PDF dans la base de données (ou autre, c'est selon le module), puis vous les mettez en forme.

3 - Création du fichier PDF

4 - Affichage du fichier PDF (c'est le plus simple)

 

La création du fichier makepdf.php par la pratique.

Comme un bon exemple vaut mieux qu'un grand discours, nous allons prendre le fichier makepdf.php du module newBB

<?php
error_reporting(0); // Cette ligne est obligatoire, n'affiche pas les erreurs.

include_once 'header.php'; // Cette ligne est obligatoire, charge Xoops
// Les 3 lignes suivantes sont obligatoires, ici on test si le frameworks est installé
if (!is_file(XOOPS_ROOT_PATH.'/Frameworks/tcpdf/tcpdf.php')) { 
  redirect_header(XOOPS_URL.'/modules/news/index.php',3,'tcpdf_for_xoops not installed'); 
}
// A partir d'ici on récupère les données de l'article du module newBB

$forum = isset($_GET['forum']) ? intval($_GET['forum']) : 0;
$topic_id = isset($_GET['topic_id']) ? intval($_GET['topic_id']) : 0;
$post_id = !empty($_GET['post_id']) ? intval($_GET['post_id']) : 0;

if ( empty($post_id) ) die(_MD_ERRORTOPIC);

$post_handler = xoops_getmodulehandler('post', 'newbb');
$post = $post_handler->get($post_id);
if(!$approved = $post->getVar('approved')) die(_MD_NORIGHTTOVIEW);

$post_data = $post_handler->getPostForPDF($post);

$topic_handler = xoops_getmodulehandler('topic', 'newbb');
$forumtopic = $topic_handler->getByPost($post_id);
$topic_id = $forumtopic->getVar('topic_id');
if(!$approved = $forumtopic->getVar('approved')) die(_MD_NORIGHTTOVIEW);

$forum_handler = xoops_getmodulehandler('forum', 'newbb');
$forum = ($forum) ? $forum : $forumtopic->getVar('forum_id');
$viewtopic_forum = $forum_handler->get($forum);
if (!$forum_handler->getPermission($viewtopic_forum)) die(_MD_NORIGHTTOACCESS);
if (!$topic_handler->getPermission($viewtopic_forum, $forumtopic->getVar('topic_status'), "view")) die(_MD_NORIGHTTOVIEW);


// A partir d'ici on met en forme

$GLOBALS["xoopsOption"]["pdf_cache"] = 0;
$pdf_data['author'] = $myts->undoHtmlSpecialChars($post_data['author']); // $pdf_data['author'] et $pdf_data['title'] sont obligatoires
$pdf_data['title'] = $myts->undoHtmlSpecialChars($post_data['subject']);
$content = ''; // On met le contenu a afficher dans la variable $content
$content .= '<b><i><u>'.$pdf_data['title'].'</u></i></b><br /><br />';
$content .= _MD_AUTHORC.' ' . $pdf_data['author'].'<br />';
$content .= _MD_POSTEDON . ' ' . formatTimestamp($post_data['date']).'<br /><br /><br />';
$content .= $myts->undoHtmlSpecialChars($post_data['text']) . '<br />';
$content = str_replace('&#91;pagebreak&#93;','<br />',$content);

// A partir d'ici on créé le PDF 

require_once (XOOPS_ROOT_PATH.'/Frameworks/tcpdf/tcpdf.php'); //On charge la class TCPDF, obligatoire
// On test si la langue du site est supporté, les 5 lignes suivantes 
if (is_file(XOOPS_ROOT_PATH.'/Frameworks/tcpdf/config/lang/'.$xoopsConfig['language'].'.php')) {
  require_once( XOOPS_ROOT_PATH.'/Frameworks/tcpdf/config/lang/'.$xoopsConfig['language'].'.php');
} else {
  require_once( XOOPS_ROOT_PATH.'/Frameworks/tcpdf/config/lang/english.php');
}

//create the A4-PDF...
$pdf=new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, _CHARSET, false); // On créé le PDF

// set document information
$pdf->SetCreator(PDF_CREATOR); // On déclare le nom du générateur, obligatoire
$pdf->SetAuthor(PDF_AUTHOR); // On déclare le nom de l'auteur, obligatoire
$pdf->SetTitle(NEWBB_PDF_SUBJECT.': '.$forumtopic->getVar('topic_title')); // On déclare le titre du document, obligatoire
$pdf->SetSubject(NEWBB_PDF_SUBJECT.': '.$forumtopic->getVar('topic_title')); // On déclare le sujet du document, obligatoire
$pdf->SetKeywords(XOOPS_URL . ', '.'by tcpdf_for_xoops (chg-web.org), '.$forumtopic->getVar('topic_title')); // On déclare les keywords du document PDF, obligatoire

// On prépare le header personnalisé
$firstLine = $xoopsConfig['sitename'];
$secondLine = $xoopsConfig['slogan'];
$pdf->SetHeaderData('', '5', $firstLine, $secondLine); // On insère le header, recommandé

//On déclare les marges du documents, obligatoire
$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP , PDF_MARGIN_RIGHT);
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
//set auto page breaks
$pdf->SetAutoPageBreak(true, 25); // On indique la longueur de la page, obligatoire

$pdf->setHeaderFont(Array(PDF_FONT_NAME_SUB, '', PDF_FONT_SIZE_SUB)); // On indique la police du header, recommandé
$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); // On indique la police du footer, recommandé
$pdf->setFooterData($tc=array(0,64,0), $lc=array(0,64,128)); // On insère le nombre de page, recommandé

$pdf->Open(); // On déclare l'ouverture du document pour y insérer les données à publier, obligatoire
$pdf->AddPage(); // On créé la première page, obligatoire
$pdf->SetFont(PDF_FONT_NAME_MAIN,PDF_FONT_STYLE_MAIN, PDF_FONT_SIZE_MAIN); // On indique la police de la page, recommandé
$pdf->writeHTML($content, true, 0); // On insère le contenu de la variable $content sur la page PDF, obligatoire

// A partir d'ici on affiche le PDF

$pdf->Output(); // On affiche la page PDF à l'écran, obligatoire


?>


Voilà, vous savez créer un fichier makepdf.php, vous pouvez consulter le site officiel du projet TCPDF pour obtenir plus de renseignement sur les fonctionnalités de cette class PHP très complète.

English version

(voir la version française)

Here is the structure of a file makepdf.php

1 - the party 'verification', just to see the visitor came from, its affiliates, if it is registered, etc. ... . This is the same structure as for a page module.
2 - Part 'data preparation', you want the data to PDF in the database (or other is depending on module), then you put them in shape.
3 - Creation of PDF
4 - Display the PDF (this is the easiest)

file creation makepdf.php by practice.

As a good example is worth a great speech, we will take the file makepdf.php module NewBB

<?php
error_reporting(0); // This line is required, does not display errors.

include_once 'header.php'; // This line is required, load Xoops
// The following 3 lines are required, here we test if the frameworks are installed.
if (!is_file(XOOPS_ROOT_PATH.'/Frameworks/tcpdf/tcpdf.php')) { 
  redirect_header(XOOPS_URL.'/modules/news/index.php',3,'tcpdf_for_xoops not installed'); 
}
// From here it gets the data section of the module NewBB

$forum = isset($_GET['forum']) ? intval($_GET['forum']) : 0;
$topic_id = isset($_GET['topic_id']) ? intval($_GET['topic_id']) : 0;
$post_id = !empty($_GET['post_id']) ? intval($_GET['post_id']) : 0;

if ( empty($post_id) ) die(_MD_ERRORTOPIC);

$post_handler = xoops_getmodulehandler('post', 'newbb');
$post = $post_handler->get($post_id);
if(!$approved = $post->getVar('approved')) die(_MD_NORIGHTTOVIEW);

$post_data = $post_handler->getPostForPDF($post);

$topic_handler = xoops_getmodulehandler('topic', 'newbb');
$forumtopic = $topic_handler->getByPost($post_id);
$topic_id = $forumtopic->getVar('topic_id');
if(!$approved = $forumtopic->getVar('approved')) die(_MD_NORIGHTTOVIEW);

$forum_handler = xoops_getmodulehandler('forum', 'newbb');
$forum = ($forum) ? $forum : $forumtopic->getVar('forum_id');
$viewtopic_forum = $forum_handler->get($forum);
if (!$forum_handler->getPermission($viewtopic_forum)) die(_MD_NORIGHTTOACCESS);
if (!$topic_handler->getPermission($viewtopic_forum, $forumtopic->getVar('topic_status'), "view")) die(_MD_NORIGHTTOVIEW);


// From here you can put in the form

$GLOBALS["xoopsOption"]["pdf_cache"] = 0;
$pdf_data['author'] = $myts->undoHtmlSpecialChars($post_data['author']); // $pdf_data['author'] and $pdf_data['title'] are required
$pdf_data['title'] = $myts->undoHtmlSpecialChars($post_data['subject']);
$content = ''; // We put the content to be displayed in the variable $ content
$content .= '<b><i><u>'.$pdf_data['title'].'</u></i></b><br /><br />';
$content .= _MD_AUTHORC.' ' . $pdf_data['author'].'<br />';
$content .= _MD_POSTEDON . ' ' . formatTimestamp($post_data['date']).'<br /><br /><br />';
$content .= $myts->undoHtmlSpecialChars($post_data['text']) . '<br />';
$content = str_replace('&#91;pagebreak&#93;','<br />',$content);

//From here, we created the PDF 

require_once (XOOPS_ROOT_PATH.'/Frameworks/tcpdf/tcpdf.php'); //On charge la class TCPDF, obligatoire
// We test if the language is supported, the 5 following lines are required 
if (is_file(XOOPS_ROOT_PATH.'/Frameworks/tcpdf/config/lang/'.$xoopsConfig['language'].'.php')) {
  require_once( XOOPS_ROOT_PATH.'/Frameworks/tcpdf/config/lang/'.$xoopsConfig['language'].'.php');
} else {
  require_once( XOOPS_ROOT_PATH.'/Frameworks/tcpdf/config/lang/english.php');
}

//create the A4-PDF...
$pdf=new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, _CHARSET, false); // On créé le PDF

// set document information
$pdf->SetCreator(PDF_CREATOR); //Report the name of the generator, required
$pdf->SetAuthor(PDF_AUTHOR); // Report the name of the author, required
$pdf->SetTitle(NEWBB_PDF_SUBJECT.': '.$forumtopic->getVar('topic_title')); // Report the title of document, required
$pdf->SetSubject(NEWBB_PDF_SUBJECT.': '.$forumtopic->getVar('topic_title')); // Report the subject of document, required
$pdf->SetKeywords(XOOPS_URL . ', '.'by tcpdf_for_xoops (chg-web.org), '.$forumtopic->getVar('topic_title')); // Report the keywords of document, required

// On prépare le header personnalisé
$firstLine = $xoopsConfig['sitename'];
$secondLine = $xoopsConfig['slogan'];
$pdf->SetHeaderData('', '5', $firstLine, $secondLine); // We insert the header, recommended

//Report the margin of document, required
$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP , PDF_MARGIN_RIGHT);
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
//set auto page breaks
$pdf->SetAutoPageBreak(true, 25); // report the length of page, required

$pdf->setHeaderFont(Array(PDF_FONT_NAME_SUB, '', PDF_FONT_SIZE_SUB)); // Report the font of header, recommended
$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); // Report the font of footer, recommended
$pdf->setFooterData($tc=array(0,64,0), $lc=array(0,64,128)); // We insert the number page in footer, recommended

$pdf->Open(); // It says the document is opened to insert the data to be published, required
$pdf->AddPage(); // We created the first page, required
$pdf->SetFont(PDF_FONT_NAME_MAIN,PDF_FONT_STYLE_MAIN, PDF_FONT_SIZE_MAIN); // Report the font of document, recommended
$pdf->writeHTML($content, true, 0); // It inserts the contents of the variable $ content on the PDF page, required

//From here, we are displaying the PDF document

$pdf->Output(); // Display the PDF document, required


?>

Now you know makepdf.php create a file, you can visit the official project TCPDF for more information about the features of this very complete PHP class.


Naviguer à travers les articles
Convertir une police pour tcpdf_for_xoops / Convert a font for TCPDF_for_Xoops Article suivant
Les commentaires appartiennent à leurs auteurs. Nous ne sommes pas responsables de leur contenu.
Auteur Commentaire en débat

Extraits de nos produits en téléchargement

Publicité