News au format PDF

Répondre
i M@N
le 08/01/2005 à 11:08
i M@N
Hello !

Serait-il possible d'avoir la marche à suivre pour crééer un PDF avec PHP comme pour les news du site ?

D'avance merci.

@+...
One Love, One Heart, One Unity.
i M@N
le 08/01/2005 à 11:37
i M@N
Reuh ...

Wé mais je voudrais un exemple comme un comment faire parce que j'avais essayé et j'avais pas réussi ... :-/

@+...
One Love, One Heart, One Unity.
LA GLOBULE
le 08/01/2005 à 11:44
LA GLOBULE
Ben c'est tout simple, j'utilise la classe principale plus une extension de la classe.

Et ca me donne ce code :

<?php
$pdf=new PDF();
$pdf->AddPage();

$pdf->SetFont('Arial','',20);
$pdf->SetFontSize(11);

$pdf->SetFillColor(239,224,200);
$pdf->Cell(95,6, ':: '.$titre.' ::',0,0,'L',1);
$pdf->Cell(95,6, $pseudo_posteur.' le '.$date_d.'/'.$date_m.'/'.$date_Y.' à '.$date_H.':'.$date_i,0,0,'R',1);
$pdf->Ln(8);

$news_bbcode=html_entity_decode(creer_bbcode($news));
$pdf->WriteHTML($news_bbcode);

$pdf->Ln(8);
$pdf->WriteHTML('<a href="http://www.lephpfacile.com">http://www.lephpfacile.com</a>');

$pdf->Output('lephpfacile-news-'.$id_news.'.pdf', 'F');
?>


Et c'est tout...

Ca peut largement s'améliorer : le rendu n'est pas génial, mais bon.
i M@N
le 08/01/2005 à 12:10
i M@N
Reuh ..

Merci, j'ai testé vite fait et je vois pas encore comment faire d'une page html générée par PHP un PDF mais je vais finir par trouver ...
$pdf->WriteHTML($file);

Faudrait que j'arrive à mettre la source html générée par PHP dans $file je pense ...

Thnx smiley LA GLOBULE.

@+...
One Love, One Heart, One Unity.
LA GLOBULE
le 08/01/2005 à 12:15
LA GLOBULE
Si tu veux récupérer le code html généré par ton script PHP, tu peux faire une bufferisation de sortie.

Exemple :

<?php
ob_start();
// place ici tout ton php qui génère ce que tu veux
$toto = 'I MAN';
echo '<p>Bonjour '.$toto.'</p>';

// fin de la génération "d'html"
$html_genere = ob_get_contents();

if (ob_end_clean()) echo $html_genere;
?>
i M@N
le 08/01/2005 à 13:02
i M@N
Reuh ...

Bon bah merci beaucoup.

Mis à part quelques détails (police e, Arial alors que je voudrais Tahoma, le centrage inexistant) ça fonctionne pas mal. smiley

@+...
One Love, One Heart, One Unity.
rastapaye
le 10/01/2005 à 20:55
rastapaye
Salut,

Je ne sais pas si vous avez le même pbm que moi mais le PDF généré ne plaise pas à Acrobat Reader 7.0. Pour chaque lien de la page d'acceuil, j'ai le message : "le fichier est endomagé et n'a put être réparé."

Je test chez moi et, le cas échéant poste le pbm chez PDFlib. Je vous tiens au courant.

Doug.
i M@N
le 11/01/2005 à 11:56
i M@N
Hello !

Bah j'ai Acrobat 7.0 et ça fonctionne chez moi.
<?

require('./fpdf.php');

class PDF extends FPDF
{
var $B;
var $I;
var $U;
var $HREF;

function PDF($orientation='P',$unit='mm',$format='A4')
{
//Appel au constructeur parent
$this->FPDF($orientation,$unit,$format);
//Initialisation
$this->B=0;
$this->I=0;
$this->U=0;
$this->HREF='';
}

function WriteHTML($html)
{
//Parseur HTML
$html=str_replace("\n",' ',$html);
$a=preg_split('/<(.*)>/U',$html,-1,PREG_SPLIT_DELIM_CAPTURE);
foreach($a as $i=>$e)
{
if($i%2==0)
{
//Texte
if($this->HREF)
$this->PutLink($this->HREF,$e);
else
$this->Write(5,$e);
}
else
{
//Balise
if($e{0}=='/')
$this->CloseTag(strtoupper(substr($e,1)));
else
{
//Extraction des attributs
$a2=explode(' ',$e);
$tag=strtoupper(array_shift($a2));
$attr=array();
foreach($a2 as $v)
if(ereg('^([^=]*)=["\']?([^"\']*)["\']?$',$v,$a3))
$attr[strtoupper($a3[1])]=$a3[2];
$this->OpenTag($tag,$attr);
}
}
}
}

function OpenTag($tag,$attr)
{
//Balise ouvrante
if($tag=='B' or $tag=='I' or $tag=='U')
$this->SetStyle($tag,true);
if($tag=='A')
$this->HREF=$attr['HREF'];
if($tag=='BR')
$this->Ln(5);
}

function CloseTag($tag)
{
//Balise fermante
if($tag=='B' or $tag=='I' or $tag=='U')
$this->SetStyle($tag,false);
if($tag=='A')
$this->HREF='';
}

function SetStyle($tag,$enable)
{
//Modifie le style et sélectionne la police correspondante
$this->$tag+=($enable ? 1 : -1);
$style='';
foreach(array('B','I','U') as $s)
if($this->$s>0)
$style.=$s;
$this->SetFont('',$style);
}

function PutLink($URL,$txt)
{
//Place un hyperlien
$this->SetTextColor(0,0,255);
$this->SetStyle('U',true);
$this->Write(5,$txt,$URL);
$this->SetStyle('U',false);
$this->SetTextColor(0);
}
}

$pdf=new PDF();
$pdf->AddPage();

$pdf->SetFont('Courier','',20);
$pdf->SetFontSize(10);

$pdf->SetFillColor(239,224,200);
$pdf->Ln(8);


ob_start();
/* place ici tout ton php qui génère ce que tu veux */

include ('./fichier.php');

/* fin de la génération "d'html" */
$html_genere = ob_get_contents();

$pdf->WriteHTML($html_genere);


$pdf->Ln(8);

$pdf->Output('fichier.pdf', 'F');

?>
@+...
One Love, One Heart, One Unity.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours