Accueil > Forum > > > > générer un pdf à partir de code HTML
générer un pdf à partir de code HTML
mardi 6 décembre 2005 à 15:37:02 |
générer un pdf à partir de code HTML

putch
|
Voila mon souci, je suis en train de faire une fonction qui génére un fichier pdf à partir de code HTML passé en paramètre :
function pdf($html) {
...
}
j'utilise la classe FPDF mais par contre je ne sais par où débuter pour transformer le contenu de $html en du texte affichable dans un pdf.
$html contient entre autres balises de passage à la ligne, tableau, ..., et ca je ne sait pas trop comment m'en occuper ...
merci de votre aide :)
|
|
mardi 6 décembre 2005 à 16:07:00 |
Re : générer un pdf à partir de code HTML

tweeder
|
Je t'invite à consulter le tutoriel sur http://www.fpdf.org/
Jonathan
|
|
mardi 6 décembre 2005 à 16:17:09 |
Re : générer un pdf à partir de code HTML

djagger
|
Ouep exact, FPDF a sa propre syntaxe !
ex :
$pdf->SetFont('Arial','B',16);
$pdf->Image("monImage.jpg",12,10,24.4,16);
$pdf->Cell(0,16,"Voici le texte",1,2,'C');
$pdf->SetFont('Arial','BU',12);
etc ....
tu ne pourras donc pas directement mettre ton code HTML, va falloir tout reformatter !
allé a+++
|
|
mardi 6 décembre 2005 à 16:54:26 |
Re : générer un pdf à partir de code HTML

putch
|
c'est la justement que je bloque !
j'en suis à la lecture des balises et donc
qu'est ce que je dois faire si c'est un TABLE, un TR ou un TD et de meme pour les fins de ses balises ...
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(4);
if($tag=='IMG')
$this->PutLink($attr['SRC'],'[ Image ]');
if($tag=='FONT')
{
switch(strtolower($attr['COLOR']))
{
case "red":
$this->SetTextColor(255,0,0);
break;
case "darkred":
$this->SetTextColor(139,0,0); break;
case "orange":
$this->SetTextColor(255,165,0); break;
case "brown":
$this->SetTextColor(165,42,42); break;
case "yellow":
$this->SetTextColor(255,255,0); break;
case "green":
$this->SetTextColor(0,128,0); break;
case "olive":
$this->SetTextColor(128,128,0); break;
case "cyan":
$this->SetTextColor(0,255,255); break;
case "blue":
$this->SetTextColor(0,0,255); break;
case
"darkblue": $this->SetTextColor(0,0,139); break;
case "indigo":
$this->SetTextColor(75,0,130); break;
case "violet":
$this->SetTextColor(238,130,238); break;
case "white":
$this->SetTextColor(0,0,0); break;
case "black":
$this->SetTextColor(0,0,0); break;
case
"cadetblue": $this->SetTextColor(95,158,160);
break;
case "coral":
$this->SetTextColor(255,127,80); break;
case "crimson":
$this->SetTextColor(220,20,60); break;
case "tomato":
$this->SetTextColor(255,99,71); break;
case
"seagreen": $this->SetTextColor(46,139,87); break;
case
"darkorchid": $this->SetTextColor(153,50,204);
break;
case
"chocolate": $this->SetTextColor(210,105,30);
break;
case
"deepskyblue": $this->SetTextColor(0,191,255);
break;
case "gold":
$this->SetTextColor(255,215,0); break;
case "grey":
$this->SetTextColor(128,128,128); break;
case
"midnightblue":$this->SetTextColor(25,25,112); break;
case
"darkgreen": $this->SetTextColor(0,100,0); break;
default:
$this->SetTextColor(0);
}
switch(strtolower($attr['SIZE']))
{
case '7':
$this->SetFont('Arial','',6); break;
case '9':
$this->SetFont('Arial','',7); break;
case '12':
$this->SetFont('Arial','',8); break;
case '18':
$this->SetFont('Arial','',10); break;
case '24':
$this->SetFont('Arial','',12); break;
default:
$this->SetFont('Arial','',9);
}
}
if($tag=='TD')
{
???
}
}
function CloseTag($tag)
{
//Balise fermante
if($tag=='B' or $tag=='I' or $tag=='U')
$this->SetStyle($tag,false);
if($tag=='A')
$this->HREF='';
if($tag=='FONTC')
{
$this->SetTextColor(0);
}
if($tag=='FONTS')
{
$this->SetFont('Arial','',8);
}
}
|
|
mardi 6 décembre 2005 à 17:00:44 |
Re : générer un pdf à partir de code HTML

djagger
|
ah bah là faut matter la doc ! :p
|
|
mardi 6 décembre 2005 à 17:08:58 |
Re : générer un pdf à partir de code HTML

putch
|
c'est ce que je fais mais pour les tableaux je cale grave !
je vois bien que chaque "case" sera une cellule => avec la methode Cell() mais pour construire ca ...
|
|
mardi 6 décembre 2005 à 18:44:16 |
Re : générer un pdf à partir de code HTML

djagger
|
$pdf->Cell(100,6,"AAA",'TLR');
$pdf->Cell(45,6,"BBB",'TLR');
$pdf->Cell(45,6,"CCC",'TLR');
$pdf->Cell(v,6,"DDD",'TLR');
$pdf->ln(4);
$pdf->Cell(45,6,"AAA",'LR');
$pdf->Cell(45,6,"BBB",'LR');
$pdf->Cell(45,6,"CCC",'LR');
$pdf->Cell(45,6,"DDD",'LR');
$pdf->ln(4);
$pdf->Cell(45,6,"AAA",'BLR');
$pdf->Cell(45,6,"BBB",'BLR');
$pdf->Cell(45,6,"CCC",'BLR');
$pdf->Cell(45,6,"DDD",'BLR');
$pdf->ln(4);
45: largeur de la colonne
6 : hauteur de la colonne
T B L R : top bottom left right pour la bordure !
c'est pas plus compliqué ...
|
|
mercredi 7 décembre 2005 à 08:51:43 |
Re : générer un pdf à partir de code HTML

putch
|
euh merci mais ca repond pas à ma question.... (peut etre c'est moi qui m'explique mal...)
mon probleme etais de generer un pdf en ANALYSANT le code HTML passé en paramètre
bon je crois avoir la solution, voila le mon bout de code qui fonctionne à première vue
function WriteHTML($html)
{
//Parseur HTML
$html=strip_tags($html,"<b><u><i><a><img><p><br><strong><em><font><tr><blockquote><hr><td><tr><table>");
//enleve les balises non reconnus
$html=str_replace("\n",'',$html);
//remplace les
retours chariots par un espace
$html=str_replace("\t",'',$html);
//remplace les
retours chariots par un espace
$a=preg_split('/<(.*)>/U',$html,-1,PREG_SPLIT_DELIM_CAPTURE);
//explose la chaine
foreach($a as $i=>$e)
{
if($i%2==0)
{
//Text
if($this->HREF)
$this->PutLink($this->HREF,$e);
elseif($this->tdbegin) {
if(trim($e)!='' and $e!=" ") {
$this->Cell($this->tdwidth,$this->tdheight,$e,$this->tableborder,'',$this->tdalign,$this->tdbgcolor);
}
elseif($e==" ") {
$this->Cell($this->tdwidth,$this->tdheight,'',$this->tableborder,'',$this->tdalign,$this->tdbgcolor);
}
}
else
$this->Write(5,stripslashes($e));
}
else
{
//Balise
if($e{0}=='/')
$this->CloseTag(strtoupper(substr($e,1)));
else
{
//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)
{
switch($tag){
case 'TABLE': // TABLE-BEGIN
if( isset($attr['BORDER']))
$this->tableborder=$attr['BORDER'];
else $this->tableborder=0;
break;
case 'TR': //TR-BEGIN
break;
case 'TD': // TD-BEGIN
if( isset($attr['WIDTH']))
$this->tdwidth=($attr['WIDTH']/4);
else $this->tdwidth=40; // par
defaut longueur à 6
if( isset($attr['HEIGHT']))
$this->tdheight=($attr['HEIGHT']/6);
else $this->tdheight=6; // par
defaut hauteur à 6
if( isset($attr['ALIGN'])) {
$align=$attr['ALIGN'];
if($align=="left") $this->tdalign="L";
if($align=="center") $this->tdalign="C";
if($align=="right") $this->tdalign="R";
}
else $this->tdalign="L"; //
par defaut alignement à gauche
if( isset($attr['BGCOLOR'])) {
$coul=hex2dec($attr['BGCOLOR']);
$this->SetFillColor($coul['R'],$coul['G'],$coul['B']);
$this->tdbgcolor=true;
}
$this->tdbegin=true;
break;
}
}
function CloseTag($tag)
{
if($tag=='TD') { // TD-END
$this->tdbegin=false;
$this->tdwidth=0;
$this->tdheight=0;
$this->tdalign="L";
$this->tdbgcolor=false;
}
if($tag=='TR') { // TR-END
$this->Ln();
}
if($tag=='TABLE') { // TABLE-END
$this->tableborder=0;
}
}
|
|
Cette discussion est classée dans : code, générer, partir, html, pdf
Répondre à ce message
Sujets en rapport avec ce message
Générer des pahes html à partir de php [ par ala_daly ]
Comment faire pour générer à la volée des pages statiques (.htm) à partir de pages dynamiques php. Merci
convertion d'extention de fichiers txt en html à partir d'un code [ par appolin1 ]
sulut la famille,vous allez bien j'espère. les gars,les filles, je suis coinçé. En fait je developpe un site web dans lequel se trouve des fichier tx
Créer des documents XML avec MySQL et PHP [ par kate1910 ]
Bonjour tout le monde , bon comme le titre indique j'essaye decréer un fichier XML avec MySQL et PHP . dans ma base de donnée j'ai une tables" tablea
Ouverture dans une autre page [ par anthony428 ]
Bonjour, j'ai un lien vers une fonction d'export au format pdf mais l'ennui est que je voudrais que mon pdf s'ouvre dans une autre page, l'équivalen
Récupérer un mot dans un texte [ par fabienfs ]
Hello, Petite question : j'ai une variable [i]$content[/i] contenant du code HTML. Que voici : [code=html]
Générateur PDF performant [ par krimog ]
Bonjour à tous Je suis actuellement sur un projet en PHP5 qui nécessite la génération de fichiers excel et pdf. Je me suis donc penché sur la librair
HTML vers PDF [ par spike911 ]
Bonjour, j'ai besoin d'une code qui me permet de transformer un contenue Web en PDF. J'explique le context de mon problème: J'ai une formule PHP/MyS
Recherche de solution pour exportation de contenu HTML vers PDF [ par sburjade ]
Bonjour, Je recherche une solution, payante s'il le faut, pour exporter des contenus HTML vers PDF. J'aurai pu me contenter de la classe FPDF et de
Récupérer contenu HTML convertir en JS [ par fabienfs ]
Bonjour, Mon sujet n'est pas très compréhensible mais voici ma question : J'ai un ami qui veut intégré le "header" de mon site (qui contient mes log
URL rewriting PHP HTML et redirection [ par smed79 ]
[b]Bonjour,[/b] [^^happy13] je cherche comment je remplace l'extension PHP avec HTML dans un URL et rediriger les liens .PHP vers les .HTML [b]note:
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|