Fork me on GitHub






XOOPS 2.5 - Module News - Correction du problème de génération de PDF quand il y a des images
Newbie
Inscrit: 20/04/2011 17:51
Messages: 1
Bonjour,

Pour corriger le problème de génération des PDF quand il y a des images, j'ai installé une autre librairie (HTML2PDF à la place de FPDF).

Par contre HTML2PDF est très chiant sur la mise en forme html, la moindre balise non fermée, ou la moindre image inexistante, et c'est la page blanche. C'est à savoir tout de même ;).
Il ne gère à priori pas non plus les URL absolues (corrigé plus bas)

Donc pour ceux que ça intéresse voici la procédure :

-Télécharger la librairie HTML2PDF sur le site http://html2pdf.fr/ et la copier dans le module news (nom du répertoire html2pdf)

-Fichier makepdf.php, après ces deux lignes :
$content $myts->undoHtmlSpecialChars($hometext) . '<br /><br />' $myts->undoHtmlSpecialChars($bodytext);
$content str_replace('[pagebreak]','<br /><br />',$content);


Rajouter ces lignes :
Pour réécrire les BR mal écrits... :
$content str_replace('<BR>','<br />',$content);
$content str_replace('<br>','<br />',$content);


Pour remplacer les balises non gérées par des balises span :
$content str_replace('<sous_titre_article>','<span>',$content);
$content str_replace('</sous_titre_article>','</span>',$content);
$content str_replace('<caption>','<span>',$content);
$content str_replace('</caption>','</span>',$content);


Pour remplacer l'URL absolue par l'URL relative (en fonction de votre cas bien sur à adapter) :
$content str_replace(    '/uploads/','../../uploads/',$content);


Gestion de l'encodage utf8
if (!is_utf8($content)){
    
$content =  utf8_encode($content);
}


Mettre en commentaire à partir de $pdf=new PDF(); jusqu'à $pdf->Output();

Mettre ce code à la place :
$html_pdf .= $pdf_config['slogan'];
$html_pdf .= "<br/><hr/>";
$html_pdf .= $pdf_data['title'];
if (
$pdf_data['subtitle']<>''){
    
$html_pdf .= " ".$pdf_data['subtitle'];
}
if (
$pdf_data['subsubtitle']<>'') {
    
$html_pdf .= " ".$pdf_data['subsubtitle'];
}
$html_pdf .= '<br/>';
$out=NEWS_PDF_AUTHOR.': ';
$out.=$pdf_data['author'];
$html_pdf .= $out.'<br/>';
$out=NEWS_PDF_DATE;
$out.=$pdf_data['date'];
$html_pdf .= $out;
$html_pdf .= "<hr/><br/>";
$html_pdf .= $pdf_data['content'];
createPDF($html_pdf ,$pdf_data['filename']);


Vous pouvez bien sur adapter le contenu de la variable $html_pdf.

- Fichier include/functions.php
Ajouter les fonctions suivantes :
function createPDF$content$nomFichier ) {
    global 
$xoopsModule;
    require(
XOOPS_ROOT_PATH.'/modules/'.$xoopsModule->dirname().'/html2pdf/html2pdf.class.php');
    
    
//Nom du fichier pour le téléchargement
    
$nomFichier str_replace(" ","_",$nomFichier);
    
$nomFichier .= ".pdf";
    
    
//Création du PDF
    
$html2pdf = new HTML2PDF('P','A4','fr',true,'UTF-8',array(5558));
    
    
$html2pdf->WriteHTML($content);
    
    
ob_end_clean();
    
    
$html2pdf->Output($nomFichier,'D');
}
function 
is_utf8($string) {
        return !
strlen(
        
preg_replace(
          
',[x09x0Ax0Dx20-x7E]'            # ASCII
        
'|[xC2-xDF][x80-xBF]'             # non-overlong 2-byte
        
'|xE0[xA0-xBF][x80-xBF]'         # excluding overlongs
        
'|[xE1-xECxEExEF][x80-xBF]{2}'  # straight 3-byte
        
'|xED[x80-x9F][x80-xBF]'         # excluding surrogates
        
'|xF0[x90-xBF][x80-xBF]{2}'      # planes 1-3
        
'|[xF1-xF3][x80-xBF]{3}'          # planes 4-15
        
'|xF4[x80-x8F][x80-xBF]{2}'      # plane 16
        
',sS',
        
''$string));
}


Voilà, par contre ça serait pas mal de résoudre le problème des url absolues, si quelqu'un a une idée n'hésitez pas à me la communiquer, merci d'avance.

Bonne journée,
Séverine

Posté le : 21/04/2011 08:52
Partager Twitter Partagez cette article sur GG+
Re: XOOPS 2.5 - Module News - Correction du problème de génération de PDF quand il y a des images
Supporter Xoops
Inscrit: 09/01/2005 13:37
De Breizh
Messages: 16972
Bonjour,

Et merci pour le partage

Le module "news" est maintenant devenu "xnews", je t'invite à soumettre tes modules aux développeurs (http://xoops.org/modules/profile/userinfo.php?uid=46480) qui ont repris cet excellent module

Posté le : 21/04/2011 22:28

La connaissance s'accroît quand on la partage ...
Partager Twitter Partagez cette article sur GG+

 Haut   Précédent   Suivant



Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

16 Personne(s) en ligne (6 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 16 | Plus ...