Samx Here
n1udSecurity


Server : Apache
System : Linux webd348.cluster026.gra.hosting.ovh.net 5.15.148-ovh-vps-grsec-zfs-classid #1 SMP Thu Feb 8 09:41:04 UTC 2024 x86_64
User : hednacluml ( 122243)
PHP Version : 8.3.9
Disable Function : _dyuweyrj4,_dyuweyrj4r,dl
Directory :  /home/hednacluml/unienfants/lib/h5c1accba-fpdf181/tutorial/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/hednacluml/unienfants/lib/h5c1accba-fpdf181/tutorial/tuto6.htm
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Liens et texte en mode flot</title>
<link type="text/css" rel="stylesheet" href="../fpdf.css">
</head>
<body>
<h1>Liens et texte en mode flot</h1>
Ce tutoriel explique comment ins�rer des liens (internes et externes) et montre un nouveau mode
d'�criture du texte. Il contient �galement un interpr�teur HTML rudimentaire.
<div class="source">
<pre><code>&lt;?php
<span class="kw">require(</span><span class="str">'fpdf.php'</span><span class="kw">);

class </span>PDF <span class="kw">extends </span>FPDF
<span class="kw">{
protected </span>$B <span class="kw">= </span>0<span class="kw">;
protected </span>$I <span class="kw">= </span>0<span class="kw">;
protected </span>$U <span class="kw">= </span>0<span class="kw">;
protected </span>$HREF <span class="kw">= </span><span class="str">''</span><span class="kw">;

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

function </span>OpenTag<span class="kw">(</span>$tag<span class="kw">, </span>$attr<span class="kw">)
{
    </span><span class="cmt">// Balise ouvrante
    </span><span class="kw">if(</span>$tag<span class="kw">==</span><span class="str">'B' </span><span class="kw">|| </span>$tag<span class="kw">==</span><span class="str">'I' </span><span class="kw">|| </span>$tag<span class="kw">==</span><span class="str">'U'</span><span class="kw">)
        </span>$<span class="kw">this-&gt;</span>SetStyle<span class="kw">(</span>$tag<span class="kw">,</span>true<span class="kw">);
    if(</span>$tag<span class="kw">==</span><span class="str">'A'</span><span class="kw">)
        </span>$<span class="kw">this-&gt;</span>HREF <span class="kw">= </span>$attr<span class="kw">[</span><span class="str">'HREF'</span><span class="kw">];
    if(</span>$tag<span class="kw">==</span><span class="str">'BR'</span><span class="kw">)
        </span>$<span class="kw">this-&gt;</span>Ln<span class="kw">(</span>5<span class="kw">);
}

function </span>CloseTag<span class="kw">(</span>$tag<span class="kw">)
{
    </span><span class="cmt">// Balise fermante
    </span><span class="kw">if(</span>$tag<span class="kw">==</span><span class="str">'B' </span><span class="kw">|| </span>$tag<span class="kw">==</span><span class="str">'I' </span><span class="kw">|| </span>$tag<span class="kw">==</span><span class="str">'U'</span><span class="kw">)
        </span>$<span class="kw">this-&gt;</span>SetStyle<span class="kw">(</span>$tag<span class="kw">,</span>false<span class="kw">);
    if(</span>$tag<span class="kw">==</span><span class="str">'A'</span><span class="kw">)
        </span>$<span class="kw">this-&gt;</span>HREF <span class="kw">= </span><span class="str">''</span><span class="kw">;
}

function </span>SetStyle<span class="kw">(</span>$tag<span class="kw">, </span>$enable<span class="kw">)
{
    </span><span class="cmt">// Modifie le style et s�lectionne la police correspondante
    </span>$<span class="kw">this-&gt;</span>$tag <span class="kw">+= (</span>$enable <span class="kw">? </span>1 <span class="kw">: -</span>1<span class="kw">);
    </span>$style <span class="kw">= </span><span class="str">''</span><span class="kw">;
    foreach(array(</span><span class="str">'B'</span><span class="kw">, </span><span class="str">'I'</span><span class="kw">, </span><span class="str">'U'</span><span class="kw">) as </span>$s<span class="kw">)
    {
        if(</span>$<span class="kw">this-&gt;</span>$s<span class="kw">&gt;</span>0<span class="kw">)
            </span>$style <span class="kw">.= </span>$s<span class="kw">;
    }
    </span>$<span class="kw">this-&gt;</span>SetFont<span class="kw">(</span><span class="str">''</span><span class="kw">,</span>$style<span class="kw">);
}

function </span>PutLink<span class="kw">(</span>$URL<span class="kw">, </span>$txt<span class="kw">)
{
    </span><span class="cmt">// Place un hyperlien
    </span>$<span class="kw">this-&gt;</span>SetTextColor<span class="kw">(</span>0<span class="kw">,</span>0<span class="kw">,</span>255<span class="kw">);
    </span>$<span class="kw">this-&gt;</span>SetStyle<span class="kw">(</span><span class="str">'U'</span><span class="kw">,</span>true<span class="kw">);
    </span>$<span class="kw">this-&gt;</span>Write<span class="kw">(</span>5<span class="kw">,</span>$txt<span class="kw">,</span>$URL<span class="kw">);
    </span>$<span class="kw">this-&gt;</span>SetStyle<span class="kw">(</span><span class="str">'U'</span><span class="kw">,</span>false<span class="kw">);
    </span>$<span class="kw">this-&gt;</span>SetTextColor<span class="kw">(</span>0<span class="kw">);
}
}

</span>$html <span class="kw">= </span><span class="str">'Vous pouvez maintenant imprimer facilement du texte m�langeant diff�rents styles : &lt;b&gt;gras&lt;/b&gt;,
&lt;i&gt;italique&lt;/i&gt;, &lt;u&gt;soulign�&lt;/u&gt;, ou &lt;b&gt;&lt;i&gt;&lt;u&gt;tous � la fois&lt;/u&gt;&lt;/i&gt;&lt;/b&gt; !&lt;br&gt;&lt;br&gt;Vous pouvez aussi
ins�rer des liens sous forme textuelle, comme &lt;a href="http://www.fpdf.org"&gt;www.fpdf.org&lt;/a&gt;, ou bien
sous forme d\'image : cliquez sur le logo.'</span><span class="kw">;

</span>$pdf <span class="kw">= new </span>PDF<span class="kw">();
</span><span class="cmt">// Premi�re page
</span>$pdf<span class="kw">-&gt;</span>AddPage<span class="kw">();
</span>$pdf<span class="kw">-&gt;</span>SetFont<span class="kw">(</span><span class="str">'Arial'</span><span class="kw">,</span><span class="str">''</span><span class="kw">,</span>20<span class="kw">);
</span>$pdf<span class="kw">-&gt;</span>Write<span class="kw">(</span>5<span class="kw">,</span><span class="str">'Pour d�couvrir les nouveaut�s de ce tutoriel, cliquez '</span><span class="kw">);
</span>$pdf<span class="kw">-&gt;</span>SetFont<span class="kw">(</span><span class="str">''</span><span class="kw">,</span><span class="str">'U'</span><span class="kw">);
</span>$link <span class="kw">= </span>$pdf<span class="kw">-&gt;</span>AddLink<span class="kw">();
</span>$pdf<span class="kw">-&gt;</span>Write<span class="kw">(</span>5<span class="kw">,</span><span class="str">'ici'</span><span class="kw">,</span>$link<span class="kw">);
</span>$pdf<span class="kw">-&gt;</span>SetFont<span class="kw">(</span><span class="str">''</span><span class="kw">);
</span><span class="cmt">// Seconde page
</span>$pdf<span class="kw">-&gt;</span>AddPage<span class="kw">();
</span>$pdf<span class="kw">-&gt;</span>SetLink<span class="kw">(</span>$link<span class="kw">);
</span>$pdf<span class="kw">-&gt;</span>Image<span class="kw">(</span><span class="str">'logo.png'</span><span class="kw">,</span>10<span class="kw">,</span>12<span class="kw">,</span>30<span class="kw">,</span>0<span class="kw">,</span><span class="str">''</span><span class="kw">,</span><span class="str">'http://www.fpdf.org'</span><span class="kw">);
</span>$pdf<span class="kw">-&gt;</span>SetLeftMargin<span class="kw">(</span>45<span class="kw">);
</span>$pdf<span class="kw">-&gt;</span>SetFontSize<span class="kw">(</span>14<span class="kw">);
</span>$pdf<span class="kw">-&gt;</span>WriteHTML<span class="kw">(</span>$html<span class="kw">);
</span>$pdf<span class="kw">-&gt;</span>Output<span class="kw">();
</span>?&gt;</code></pre>
</div>
<p class='demo'><a href='tuto6.php' target='_blank' class='demo'>[D�mo]</a></p>
La nouvelle m�thode pour imprimer du texte est <a href='../doc/write.htm'>Write()</a>. Elle est tr�s proche de <a href='../doc/multicell.htm'>MultiCell()</a> ;
les diff�rences sont les suivantes :
<ul>
<li>La fin de ligne est au niveau de la marge droite et la ligne suivante commence � la marge gauche</li>
<li>La position courante se d�place juste � la fin du texte</li>
</ul>
Elle permet donc d'�crire une portion de texte, de modifier la police, puis de reprendre � partir
de l'endroit o� on �tait rest�. Par contre on ne peut plus justifier.
<br>
<br>
La m�thode est utilis�e sur la premi�re page pour mettre un lien pointant sur la seconde. Le
d�but de la phrase est �crit en style normal, puis on passe en soulign� pour terminer. Le lien
est cr�� gr�ce � la m�thode <a href='../doc/addlink.htm'>AddLink()</a>, qui renvoie l'identifiant du lien. Cet identifiant
est pass� en troisi�me param�tre � <span style="white-space:nowrap">Write()</span>. Apr�s avoir
cr�� la seconde page, on utilise <a href='../doc/setlink.htm'>SetLink()</a> pour faire pointer le lien sur le d�but de la
page courante.
<br>
<br>
On place ensuite une image avec un lien externe dessus. Un lien externe est simplement une URL.
Elle est transmise en dernier param�tre de <a href='../doc/image.htm'>Image()</a>.
<br>
<br>
Enfin, la marge gauche est d�plac�e apr�s l'image gr�ce � <a href='../doc/setleftmargin.htm'>SetLeftMargin()</a> et du texte au
format HTML est imprim�. Un parseur HTML tr�s simple est utilis� pour cela, bas� sur les
expressions r�guli�res. Les balises reconnues sont &lt;b&gt;, &lt;i&gt;, &lt;u&gt;, &lt;a&gt;
et &lt;br&gt; ; les autres sont ignor�es. Le parseur utilise lui aussi la m�thode Write(). Le lien externe se pose de la
m�me fa�on que l'interne (troisi�me param�tre de Write()). A noter que <a href='../doc/cell.htm'>Cell()</a> permet
�galement de poser des liens.
</body>
</html>

SAMX