update
This commit is contained in:
10
fpdf/tutorial/20k_c1.txt
Normal file
10
fpdf/tutorial/20k_c1.txt
Normal file
@ -0,0 +1,10 @@
|
||||
L'ann<6E>e 1866 fut marqu<71>e par un <20>v<EFBFBD>nement bizarre, un ph<70>nom<6F>ne inexpliqu<71> et inexplicable que personne n'a sans doute oubli<6C>. Sans parler des rumeurs qui agitaient les populations des ports et surexcitaient l'esprit public <20> l'int<6E>rieur des continents les gens de mer furent particuli<6C>rement <20>mus. Les n<>gociants, armateurs, capitaines de navires, skippers et masters de l'Europe et de l'Am<41>rique, officiers des marines militaires de tous pays, et, apr<70>s eux, les gouvernements des divers <20>tats des deux continents, se pr<70>occup<75>rent de ce fait au plus haut point.
|
||||
En effet, depuis quelque temps, plusieurs navires s'<27>taient rencontr<74>s sur mer avec "une chose <20>norme" un objet long, fusiforme, parfois phosphorescent, infiniment plus vaste et plus rapide qu'une baleine.
|
||||
Les faits relatifs <20> cette apparition, consign<67>s aux divers livres de bord, s'accordaient assez exactement sur la structure de l'objet ou de l'<27>tre en question, la vitesse inou<6F>e de ses mouvements, la puissance surprenante de sa locomotion, la vie particuli<6C>re dont il semblait dou<6F>. Si c'<27>tait un c<>tac<61>, il surpassait en volume tous ceux que la science avait class<73>s jusqu'alors. Ni Cuvier, ni Lac<61>p<EFBFBD>de, ni M. Dumeril, ni M. de Quatrefages n'eussent admis l'existence d'un tel monstre - <20> moins de l'avoir vu, ce qui s'appelle vu de leurs propres yeux de savants.
|
||||
A prendre la moyenne des observations faites <20> diverses reprises - en rejetant les <20>valuations timides qui assignaient <20> cet objet une longueur de deux cents pieds et en repoussant les opinions exag<61>r<EFBFBD>es qui le disaient large d'un mille et long de trois - on pouvait affirmer, cependant, que cet <20>tre ph<70>nom<6F>nal d<>passait de beaucoup toutes les dimensions admises jusqu'<27> ce jour par les ichtyologistes - s'il existait toutefois.
|
||||
Or, il existait, le fait en lui-m<>me n'<27>tait plus niable, et, avec ce penchant qui pousse au merveilleux la cervelle humaine, on comprendra l'<27>motion produite dans le monde entier par cette surnaturelle apparition. Quant <20> la rejeter au rang des fables, il fallait y renoncer.
|
||||
En effet, le 20 juillet 1866, le steamer Governor-Higginson, de Calcutta and Burnach steam navigation Company, avait rencontr<74> cette masse mouvante <20> cinq milles dans l'est des c<>tes de l'Australie. Le capitaine Baker se crut, tout d'abord, en pr<70>sence d'un <20>cueil inconnu; il se disposait m<>me <20> en d<>terminer la situation exacte, quand deux colonnes d'eau, projet<65>es par l'inexplicable objet, s'<27>lanc<6E>rent en sifflant <20> cent cinquante pieds dans l'air. Donc, <20> moins que cet <20>cueil ne f<>t soumis aux expansions intermittentes d'un geyser, le Governor-Higginson avait affaire bel et bien <20> quelque mammif<69>re aquatique, inconnu jusque-l<>, qui rejetait par ses <20>vents des colonnes d'eau, m<>lang<6E>es d'air et de vapeur.
|
||||
Pareil fait fut <20>galement observ<72> le 23 juillet de la m<>me ann<6E>e, dans les mers du Pacifique, par le Cristobal-Colon, de West India and Pacific steam navigation Company. Donc, ce c<>tac<61> extraordinaire pouvait se transporter d'un endroit <20> un autre avec une v<>locit<69> surprenante, puisque <20> trois jours d'intervalle, le Governor-Higginson et le Cristobal-Colon l'avaient observ<72> en deux points de la carte s<>par<61>s par une distance de plus de sept cents lieues marines.
|
||||
Quinze jours plus tard, <20> deux mille lieues de l<> I'Helvetia, de la Compagnie Nationale, et le Shannon, du Royal-Mail, marchant <20> contrebord dans cette portion de l'Atlantique comprise entre les <20>tats-Unis et l'Europe, se signal<61>rent respectivement le monstre par 42<34>15' de latitude nord, et 60<36>35' de longitude <20> l'ouest du m<>ridien de Greenwich. Dans cette observation simultan<61>e, on crut pouvoir <20>valuer la longueur minimum du mammif<69>re <20> plus de trois cent cinquante pieds anglais, puisque le Shannon et l'Helvetia <20>taient de dimension inf<6E>rieure <20> lui, bien qu'ils mesurassent cent m<>tres de l'<27>trave <20> l'<27>tambot. Or, les plus vastes baleines, celles qui fr<66>quentent les parages des <20>les Al<41>outiennes, le Kulammak et l'Umgullick, n'ont jamais d<>pass<73> la longueur de cinquante-six m<>tres, - si m<>me elles l'atteignent.
|
||||
Ces rapports arriv<69>s coup sur coup, de nouvelles observations faites <20> bord du transatlantique le Pereire, un abordage entre l'Etna, de la ligne Inman, et le monstre, un proc<6F>s-verbal dress<73> par les officiers de la fr<66>gate fran<61>aise la Normandie, un tr<74>s s<>rieux rel<65>vement obtenu par l'<27>tat-major du commodore Fitz-James <20> bord du Lord-Clyde, <20>murent profond<6E>ment l'opinion publique. Dans les pays d'humeur l<>g<EFBFBD>re, on plaisanta le ph<70>nom<6F>ne, mais les pays graves et pratiques, l'Angleterre, l'Am<41>rique, l'Allemagne, s'en pr<70>occup<75>rent vivement.
|
||||
Partout dans les grands centres, le monstre devint <20> la mode; on le chanta dans les caf<61>s, on le bafoua dans les journaux, on le joua sur les th<74><68>tres. Les canards eurent l<> une belle occasion de pondre des oeufs de toutes couleurs. On vit r<>appara<72>tre dans les journaux - <20> court de copie - tous les <20>tres imaginaires et gigantesques, depuis la baleine blanche, le terrible "Moby Dick" des r<>gions hyperbor<6F>ennes, jusqu'au Kraken d<>mesur<75>, dont les tentacules peuvent enlacer un b<>timent de cinq cents tonneaux et l'entra<72>ner dans les ab<61>mes de l'Oc<4F>an. On reproduisit m<>me les proc<6F>s-verbaux des temps anciens, les opinions d'Aristote et de Pline, qui admettaient l'existence de ces monstres, puis les r<>cits norv<72>giens de l'<27>v<EFBFBD>que Pontoppidan, les relations de Paul Heggede, et enfin les rapports de M. Harrington, dont la bonne foi ne peut <20>tre soup<75>onn<6E>e, quand il affirme avoir vu, <20>tant <20> bord du Castillan, en 1857, cet <20>norme serpent qui n'avait jamais fr<66>quent<6E> jusqu'alors que les mers de l'ancien Constitutionnel.
|
||||
23
fpdf/tutorial/20k_c2.txt
Normal file
23
fpdf/tutorial/20k_c2.txt
Normal file
@ -0,0 +1,23 @@
|
||||
A l'<27>poque o<> ces <20>v<EFBFBD>nements se produisirent, je revenais d'une exploration scientifique entreprise dans les mauvaises terres du Nebraska, aux <20>tats-Unis. En ma qualit<69> de professeur-suppl<70>ant au Mus<75>um d'histoire naturelle de Paris, le gouvernement fran<61>ais m'avait joint <20> cette exp<78>dition. Apr<70>s six mois pass<73>s dans le Nebraska, charg<72> de pr<70>cieuses collections, j'arrivai <20> New York vers la fin de mars. Mon d<>part pour la France <20>tait fix<69> aux premiers jours de mai. Je m'occupais donc, en attendant, de classer mes richesses min<69>ralogiques, botaniques et zoologiques, quand arriva l'incident du Scotia.
|
||||
J'<27>tais parfaitement au courant de la question <20> l'ordre du jour, et comment ne l'aurais-je pas <20>t<EFBFBD> ? J'avais lu et relu tous les journaux am<61>ricains et europ<6F>ens sans <20>tre plus avanc<6E>. Ce myst<73>re m'intriguait. Dans l'impossibilit<69> de me former une opinion, je flottais d'un extr<74>me <20> l'autre. Qu'il y eut quelque chose, cela ne pouvait <20>tre douteux, et les incr<63>dules <20>taient invit<69>s <20> mettre le doigt sur la plaie du Scotia.
|
||||
A mon arriv<69>e <20> New York, la question br<62>lait. L'hypoth<74>se de l'<27>lot flottant, de l'<27>cueil insaisissable, soutenue par quelques esprits peu comp<6D>tents, <20>tait absolument abandonn<6E>e. Et, en effet, <20> moins que cet <20>cueil n'e<>t une machine dans le ventre, comment pouvait-il se d<>placer avec une rapidit<69> si prodigieuse ?
|
||||
De m<>me fut repouss<73>e l'existence d'une coque flottante, d'une <20>norme <20>pave, et toujours <20> cause de la rapidit<69> du d<>placement.
|
||||
Restaient donc deux solutions possibles de la question, qui cr<63>aient deux clans tr<74>s distincts de partisans : d'un c<>t<EFBFBD>, ceux qui tenaient pour un monstre d'une force colossale ; de l'autre, ceux qui tenaient pour un bateau "sous-marin" d'une extr<74>me puissance motrice.
|
||||
Or, cette derni<6E>re hypoth<74>se, admissible apr<70>s tout, ne put r<>sister aux enqu<71>tes qui furent poursuivies dans les deux mondes. Qu'un simple particulier e<>t <20> sa disposition un tel engin m<>canique, c'<27>tait peu probable. O<> et quand l'eut-il fait construire, et comment aurait-il tenu cette construction secr<63>te ?
|
||||
Seul, un gouvernement pouvait poss<73>der une pareille machine destructive, et, en ces temps d<>sastreux o<> l'homme s'ing<6E>nie <20> multiplier la puissance des armes de guerre, il <20>tait possible qu'un <20>tat essay<61>t <20> l'insu des autres ce formidable engin. Apr<70>s les chassepots, les torpilles, apr<70>s les torpilles, les b<>liers sous-marins, puis la r<>action. Du moins, je l'esp<73>re.
|
||||
Mais l'hypoth<74>se d'une machine de guerre tomba encore devant la d<>claration des gouvernements. Comme il s'agissait l<> d'un int<6E>r<EFBFBD>t public, puisque les communications transoc<6F>aniennes en souffraient, la franchise des gouvernements ne pouvait <20>tre mise en doute. D'ailleurs, comment admettre que la construction de ce bateau sous-marin e<>t <20>chapp<70> aux yeux du public ? Garder le secret dans ces circonstances est tr<74>s difficile pour un particulier, et certainement impossible pour un Etat dont tous les actes sont obstin<69>ment surveill<6C>s par les puissances rivales.
|
||||
Donc, apr<70>s enqu<71>tes faites en Angleterre, en France, en Russie, en Prusse, en Espagne, en Italie, en Am<41>rique, voire m<>me en Turquie, l'hypoth<74>se d'un Monitor sous-marin fut d<>finitivement rejet<65>e.
|
||||
A mon arriv<69>e <20> New York, plusieurs personnes m'avaient fait l'honneur de me consulter sur le ph<70>nom<6F>ne en question. J'avais publi<6C> en France un ouvrage in-quarto en deux volumes intitul<75> : Les Myst<73>res des grands fonds sous-marins. Ce livre, particuli<6C>rement go<67>t<EFBFBD> du monde savant, faisait de moi un sp<73>cialiste dans cette partie assez obscure de l'histoire naturelle. Mon avis me fut demand<6E>. Tant que je pus nier du fait, je me renfermai dans une absolue n<>gation. Mais bient<6E>t, coll<6C> au mur, je dus m'expliquer cat<61>goriquement. Et m<>me, "l'honorable Pierre Aronnax, professeur au Mus<75>um de Paris", fut mis en demeure par le New York-Herald de formuler une opinion quelconque.
|
||||
Je m'ex<65>cutai. Je parlai faute de pouvoir me taire. Je discutai la question sous toutes ses faces, politiquement et scientifiquement, et je donne ici un extrait d'un article tr<74>s nourri que je publiai dans le num<75>ro du 30 avril.
|
||||
|
||||
" Ainsi donc, disais-je, apr<70>s avoir examin<69> une <20> une les diverses hypoth<74>ses, toute autre supposition <20>tant rejet<65>e, il faut n<>cessairement admettre l'existence d'un animal marin d'une puissance excessive.
|
||||
" Les grandes profondeurs de l'Oc<4F>an nous sont totalement inconnues. La sonde n'a su les atteindre. Que se passe-t-il dans ces ab<61>mes recul<75>s ? Quels <20>tres habitent et peuvent habiter <20> douze ou quinze milles au-dessous de la surface des eaux ? Quel est l'organisme de ces animaux ? On saurait <20> peine le conjecturer.
|
||||
" Cependant, la solution du probl<62>me qui m'est soumis peut affecter la forme du dilemme.
|
||||
" Ou nous connaissons toutes les vari<72>t<EFBFBD>s d'<27>tres qui peuplent notre plan<61>te, ou nous ne les connaissons pas.
|
||||
" Si nous ne les connaissons pas toutes, si la nature a encore des secrets pour nous en ichtyologie, rien de plus acceptable que d'admettre l'existence de poissons ou de c<>tac<61>s, d'esp<73>ces ou m<>me de genres nouveaux, d'une organisation essentiellement "fondri<72>re", qui habitent les couches inaccessibles <20> la sonde, et qu'un <20>v<EFBFBD>nement quelconque, une fantaisie, un caprice, si l'on veut, ram<61>ne <20> de longs intervalles vers le niveau sup<75>rieur de l'Oc<4F>an.
|
||||
" Si, au contraire, nous connaissons toutes les esp<73>ces vivantes, il faut n<>cessairement chercher l'animal en question parmi les <20>tres marins d<>j<EFBFBD> catalogu<67>s, et dans ce cas, je serai dispos<6F> <20> admettre l'existence d'un Narwal g<>ant.
|
||||
" Le narwal vulgaire ou licorne de mer atteint souvent une longueur de soixante pieds. Quintuplez, d<>cuplez m<>me cette dimension, donnez <20> ce c<>tac<61> une force proportionnelle <20> sa taille, accroissez ses armes offensives, et vous obtenez l'animal voulu. Il aura les proportions d<>termin<69>es par les Officiers du Shannon, l'instrument exig<69> par la perforation du Scotia, et la puissance n<>cessaire pour entamer la coque d'un steamer.
|
||||
" En effet, le narwal est arm<72> d'une sorte d'<27>p<EFBFBD>e d'ivoire, d'une hallebarde, suivant l'expression de certains naturalistes. C'est une dent principale qui a la duret<65> de l'acier. On a trouv<75> quelques-unes de ces dents implant<6E>es dans le corps des baleines que le narwal attaque toujours avec succ<63>s. D'autres ont <20>t<EFBFBD> arrach<63>es, non sans peine, de car<61>nes de vaisseaux qu'elles avaient perc<72>es d'outre en outre, comme un foret perce un tonneau. Le mus<75>e de la Facult<6C> de m<>decine de Paris poss<73>de une de ces d<>fenses longue de deux m<>tres vingt-cinq centim<69>tres, et large de quarante-huit centim<69>tres <20> sa base !
|
||||
" Eh bien ! supposez l'arme dix fois plus forte, et l'animal dix fois plus puissant, lancez-le avec une rapidit<69> de vingt milles <20> l'heure, multipliez sa masse par sa vitesse, et vous obtenez un choc capable de produire la catastrophe demand<6E>e.
|
||||
" Donc, jusqu'<27> plus amples informations, j'opinerais pour une licorne de mer, de dimensions colossales, arm<72>e, non plus d'une hallebarde, mais d'un v<>ritable <20>peron comme les fr<66>gates cuirass<73>es ou les "rams" de guerre, dont elle aurait <20> la fois la masse et la puissance motrice.
|
||||
" Ainsi s'expliquerait ce ph<70>nom<6F>ne inexplicable - <20> moins qu'il n'y ait rien, en d<>pit de ce qu'on a entrevu, vu, senti et ressenti - ce qui est encore possible ! "
|
||||
25
fpdf/tutorial/calligra.php
Normal file
25
fpdf/tutorial/calligra.php
Normal file
@ -0,0 +1,25 @@
|
||||
<?php
|
||||
$type = 'TrueType';
|
||||
$name = 'CalligrapherRegular';
|
||||
$desc = array('Ascent'=>899,'Descent'=>-234,'CapHeight'=>899,'Flags'=>32,'FontBBox'=>'[-173 -234 1328 899]','ItalicAngle'=>0,'StemV'=>70,'MissingWidth'=>800);
|
||||
$up = -200;
|
||||
$ut = 20;
|
||||
$cw = array(
|
||||
chr(0)=>800,chr(1)=>800,chr(2)=>800,chr(3)=>800,chr(4)=>800,chr(5)=>800,chr(6)=>800,chr(7)=>800,chr(8)=>800,chr(9)=>800,chr(10)=>800,chr(11)=>800,chr(12)=>800,chr(13)=>800,chr(14)=>800,chr(15)=>800,chr(16)=>800,chr(17)=>800,chr(18)=>800,chr(19)=>800,chr(20)=>800,chr(21)=>800,
|
||||
chr(22)=>800,chr(23)=>800,chr(24)=>800,chr(25)=>800,chr(26)=>800,chr(27)=>800,chr(28)=>800,chr(29)=>800,chr(30)=>800,chr(31)=>800,' '=>282,'!'=>324,'"'=>405,'#'=>584,'$'=>632,'%'=>980,'&'=>776,'\''=>259,'('=>299,')'=>299,'*'=>377,'+'=>600,
|
||||
','=>259,'-'=>432,'.'=>254,'/'=>597,'0'=>529,'1'=>298,'2'=>451,'3'=>359,'4'=>525,'5'=>423,'6'=>464,'7'=>417,'8'=>457,'9'=>479,':'=>275,';'=>282,'<'=>600,'='=>600,'>'=>600,'?'=>501,'@'=>800,'A'=>743,
|
||||
'B'=>636,'C'=>598,'D'=>712,'E'=>608,'F'=>562,'G'=>680,'H'=>756,'I'=>308,'J'=>314,'K'=>676,'L'=>552,'M'=>1041,'N'=>817,'O'=>729,'P'=>569,'Q'=>698,'R'=>674,'S'=>618,'T'=>673,'U'=>805,'V'=>753,'W'=>1238,
|
||||
'X'=>716,'Y'=>754,'Z'=>599,'['=>315,'\\'=>463,']'=>315,'^'=>600,'_'=>547,'`'=>278,'a'=>581,'b'=>564,'c'=>440,'d'=>571,'e'=>450,'f'=>347,'g'=>628,'h'=>611,'i'=>283,'j'=>283,'k'=>560,'l'=>252,'m'=>976,
|
||||
'n'=>595,'o'=>508,'p'=>549,'q'=>540,'r'=>395,'s'=>441,'t'=>307,'u'=>614,'v'=>556,'w'=>915,'x'=>559,'y'=>597,'z'=>452,'{'=>315,'|'=>222,'}'=>315,'~'=>600,chr(127)=>800,chr(128)=>800,chr(129)=>800,chr(130)=>0,chr(131)=>0,
|
||||
chr(132)=>0,chr(133)=>780,chr(134)=>0,chr(135)=>0,chr(136)=>278,chr(137)=>0,chr(138)=>0,chr(139)=>0,chr(140)=>1064,chr(141)=>800,chr(142)=>0,chr(143)=>800,chr(144)=>800,chr(145)=>259,chr(146)=>259,chr(147)=>470,chr(148)=>470,chr(149)=>500,chr(150)=>300,chr(151)=>600,chr(152)=>278,chr(153)=>990,
|
||||
chr(154)=>0,chr(155)=>0,chr(156)=>790,chr(157)=>800,chr(158)=>800,chr(159)=>754,chr(160)=>282,chr(161)=>324,chr(162)=>450,chr(163)=>640,chr(164)=>518,chr(165)=>603,chr(166)=>0,chr(167)=>519,chr(168)=>254,chr(169)=>800,chr(170)=>349,chr(171)=>0,chr(172)=>0,chr(173)=>432,chr(174)=>800,chr(175)=>278,
|
||||
chr(176)=>0,chr(177)=>0,chr(178)=>0,chr(179)=>0,chr(180)=>278,chr(181)=>614,chr(182)=>0,chr(183)=>254,chr(184)=>278,chr(185)=>0,chr(186)=>305,chr(187)=>0,chr(188)=>0,chr(189)=>0,chr(190)=>0,chr(191)=>501,chr(192)=>743,chr(193)=>743,chr(194)=>743,chr(195)=>743,chr(196)=>743,chr(197)=>743,
|
||||
chr(198)=>1060,chr(199)=>598,chr(200)=>608,chr(201)=>608,chr(202)=>608,chr(203)=>608,chr(204)=>308,chr(205)=>308,chr(206)=>308,chr(207)=>308,chr(208)=>0,chr(209)=>817,chr(210)=>729,chr(211)=>729,chr(212)=>729,chr(213)=>729,chr(214)=>729,chr(215)=>0,chr(216)=>729,chr(217)=>805,chr(218)=>805,chr(219)=>805,
|
||||
chr(220)=>805,chr(221)=>0,chr(222)=>0,chr(223)=>688,chr(224)=>581,chr(225)=>581,chr(226)=>581,chr(227)=>581,chr(228)=>581,chr(229)=>581,chr(230)=>792,chr(231)=>440,chr(232)=>450,chr(233)=>450,chr(234)=>450,chr(235)=>450,chr(236)=>283,chr(237)=>283,chr(238)=>283,chr(239)=>283,chr(240)=>0,chr(241)=>595,
|
||||
chr(242)=>508,chr(243)=>508,chr(244)=>508,chr(245)=>508,chr(246)=>508,chr(247)=>0,chr(248)=>508,chr(249)=>614,chr(250)=>614,chr(251)=>614,chr(252)=>614,chr(253)=>0,chr(254)=>0,chr(255)=>597);
|
||||
$enc = 'cp1252';
|
||||
$uv = array(0=>array(0,128),128=>8364,130=>8218,131=>402,132=>8222,133=>8230,134=>array(8224,2),136=>710,137=>8240,138=>352,139=>8249,140=>338,142=>381,145=>array(8216,2),147=>array(8220,2),149=>8226,150=>array(8211,2),152=>732,153=>8482,154=>353,155=>8250,156=>339,158=>382,159=>376,160=>array(160,96));
|
||||
$file = 'calligra.z';
|
||||
$originalsize = 33948;
|
||||
$subsetted = true;
|
||||
?>
|
||||
BIN
fpdf/tutorial/calligra.ttf
Normal file
BIN
fpdf/tutorial/calligra.ttf
Normal file
Binary file not shown.
BIN
fpdf/tutorial/calligra.z
Normal file
BIN
fpdf/tutorial/calligra.z
Normal file
Binary file not shown.
20
fpdf/tutorial/index.htm
Normal file
20
fpdf/tutorial/index.htm
Normal file
@ -0,0 +1,20 @@
|
||||
<!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>Tutoriels</title>
|
||||
<link type="text/css" rel="stylesheet" href="../fpdf.css">
|
||||
</head>
|
||||
<body>
|
||||
<h1>Tutoriels</h1>
|
||||
<ul style="list-style-type:none; margin-left:0; padding-left:0">
|
||||
<li><a href="tuto1.htm">Tutoriel 1</a> : Exemple minimal</li>
|
||||
<li><a href="tuto2.htm">Tutoriel 2</a> : En-t<>te, pied de page, saut de page et image</li>
|
||||
<li><a href="tuto3.htm">Tutoriel 3</a> : Retour du texte <20> la ligne et couleurs</li>
|
||||
<li><a href="tuto4.htm">Tutoriel 4</a> : Multi-colonnes</li>
|
||||
<li><a href="tuto5.htm">Tutoriel 5</a> : Tableaux</li>
|
||||
<li><a href="tuto6.htm">Tutoriel 6</a> : Liens et texte en mode flot</li>
|
||||
<li><a href="tuto7.htm">Tutoriel 7</a> : Ajout de polices et encodages</li>
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
||||
BIN
fpdf/tutorial/logo.png
Normal file
BIN
fpdf/tutorial/logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.3 KiB |
6
fpdf/tutorial/makefont.php
Normal file
6
fpdf/tutorial/makefont.php
Normal file
@ -0,0 +1,6 @@
|
||||
<?php
|
||||
// G<>n<EFBFBD>ration du fichier de d<>finition de police pour le tutoriel 7
|
||||
require('../makefont/makefont.php');
|
||||
|
||||
MakeFont('calligra.ttf','cp1252');
|
||||
?>
|
||||
15
fpdf/tutorial/pays.txt
Normal file
15
fpdf/tutorial/pays.txt
Normal file
@ -0,0 +1,15 @@
|
||||
Allemagne;Berlin;357022;82057
|
||||
Autriche;Vienne;83859;8075
|
||||
Belgique;Bruxelles;30518;10192
|
||||
Danemark;Copenhague;43094;5295
|
||||
Espagne;Madrid;504790;39348
|
||||
Finlande;Helsinki;304529;5147
|
||||
France;Paris;543965;58728
|
||||
Gr<EFBFBD>ce;Ath<74>nes;131625;10511
|
||||
Irlande;Dublin;70723;3694
|
||||
Italie;Rome;301316;57563
|
||||
Luxembourg;Luxembourg;2586;424
|
||||
Pays-Bas;Amsterdam;41526;15654
|
||||
Portugal;Lisbonne;91906;9957
|
||||
Royaume-Uni;Londres;243820;58862
|
||||
Su<EFBFBD>de;Stockholm;410934;8839
|
||||
82
fpdf/tutorial/tuto1.htm
Normal file
82
fpdf/tutorial/tuto1.htm
Normal file
@ -0,0 +1,82 @@
|
||||
<!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>Exemple minimal</title>
|
||||
<link type="text/css" rel="stylesheet" href="../fpdf.css">
|
||||
</head>
|
||||
<body>
|
||||
<h1>Exemple minimal</h1>
|
||||
Voici pour commencer l'exemple classique :
|
||||
<div class="source">
|
||||
<pre><code><?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">-></span>AddPage<span class="kw">();
|
||||
</span>$pdf<span class="kw">-></span>SetFont<span class="kw">(</span><span class="str">'Arial'</span><span class="kw">,</span><span class="str">'B'</span><span class="kw">,</span>16<span class="kw">);
|
||||
</span>$pdf<span class="kw">-></span>Cell<span class="kw">(</span>40<span class="kw">,</span>10<span class="kw">,</span><span class="str">'Hello World !'</span><span class="kw">);
|
||||
</span>$pdf<span class="kw">-></span>Output<span class="kw">();
|
||||
</span>?></code></pre>
|
||||
</div>
|
||||
<p class='demo'><a href='tuto1.php' target='_blank' class='demo'>[D<>mo]</a></p>
|
||||
Apr<EFBFBD>s avoir inclus la librairie, un objet FPDF est cr<63><72>.
|
||||
Le <a href='../doc/__construct.htm'>constructeur</a> est utilis<69> ici avec les valeurs par d<>faut : les pages sont en
|
||||
portrait A4 et l'unit<69> de mesure est le millim<69>tre. On aurait pu l'indiquer explicitement par :
|
||||
<div class="source">
|
||||
<pre><code>$pdf <span class="kw">= new </span>FPDF<span class="kw">(</span><span class="str">'P'</span><span class="kw">,</span><span class="str">'mm'</span><span class="kw">,</span><span class="str">'A4'</span><span class="kw">);
|
||||
</span></code></pre>
|
||||
</div>
|
||||
Il est possible de passer en paysage (<code>L</code>), d'utiliser d'autres formats de page (comme
|
||||
<code>A3</code> et <code>A5</code>) ainsi que d'autres unit<69>s de mesure (<code>pt</code>,
|
||||
<code>cm</code>, <code>in</code>).
|
||||
<br>
|
||||
<br>
|
||||
Il n'y a pour l'instant encore aucune page, c'est pourquoi il faut en ajouter une avec
|
||||
<a href='../doc/addpage.htm'>AddPage()</a>. L'origine est en haut <20> gauche et la position courante est plac<61>e par d<>faut
|
||||
<EFBFBD> 1 cm des bords ; on peut changer ces marges par <a href='../doc/setmargins.htm'>SetMargins()</a>.
|
||||
<br>
|
||||
<br>
|
||||
Avant d'imprimer du texte, il est imp<6D>ratif de d<>finir la police avec <a href='../doc/setfont.htm'>SetFont()</a>.
|
||||
On choisit de l'Arial gras en taille 16 :
|
||||
<div class="source">
|
||||
<pre><code>$pdf<span class="kw">-></span>SetFont<span class="kw">(</span><span class="str">'Arial'</span><span class="kw">,</span><span class="str">'B'</span><span class="kw">,</span>16<span class="kw">);
|
||||
</span></code></pre>
|
||||
</div>
|
||||
On aurait pu sp<73>cifier de l'italique avec <code>I</code>, du soulign<67> avec <code>U</code> ou une
|
||||
police normale avec une cha<68>ne vide (ou bien encore une combinaison de styles). A noter que la
|
||||
taille de la police est ici donn<6E>e en points, pas en millim<69>tres (ou autre unit<69> choisie) ; c'est
|
||||
la seule exception. Les autres polices standards disponibles sont Times, Courier, Symbol et
|
||||
ZapfDingbats.
|
||||
<br>
|
||||
<br>
|
||||
On imprime ensuite une cellule gr<67>ce <20> <a href='../doc/cell.htm'>Cell()</a>. Une cellule est une zone rectangulaire,
|
||||
<EFBFBD>ventuellement encadr<64>e, qui contient une ligne de texte. Elle est imprim<69>e <20> la position
|
||||
courante. On sp<73>cifie ses dimensions, le texte (centr<74> ou align<67>), si des bords doivent <20>tre
|
||||
trac<EFBFBD>s, et si la position courante doit <20>tre d<>plac<61>e <20> droite, en dessous ou bien doit
|
||||
retourner au d<>but de la ligne suivante. On aurait par exemple encadr<64> le texte comme ceci :
|
||||
<div class="source">
|
||||
<pre><code>$pdf<span class="kw">-></span>Cell<span class="kw">(</span>40<span class="kw">,</span>10<span class="kw">,</span><span class="str">'Hello World !'</span><span class="kw">,</span>1<span class="kw">);
|
||||
</span></code></pre>
|
||||
</div>
|
||||
Si on veut ajouter une nouvelle cellule <20> droite avec du texte centr<74> et retourner <20> la ligne,
|
||||
on fait :
|
||||
<div class="source">
|
||||
<pre><code>$pdf<span class="kw">-></span>Cell<span class="kw">(</span>60<span class="kw">,</span>10<span class="kw">,</span><span class="str">'Powered by FPDF.'</span><span class="kw">,</span>0<span class="kw">,</span>1<span class="kw">,</span><span class="str">'C'</span><span class="kw">);
|
||||
</span></code></pre>
|
||||
</div>
|
||||
Remarque : le retour <20> la ligne peut <20>galement s'effectuer gr<67>ce <20> la m<>thode <a href='../doc/ln.htm'>Ln()</a>. Cette
|
||||
derni<EFBFBD>re permet de pr<70>ciser en plus la hauteur du saut de ligne.
|
||||
<br>
|
||||
<br>
|
||||
Enfin, le document est termin<69> et envoy<6F> au navigateur gr<67>ce <20> <a href='../doc/output.htm'>Output()</a>. Il est <20>galement
|
||||
possible de le sauvegarder directement dans un fichier en passant les param<61>tres appropri<72>s.
|
||||
<br>
|
||||
<br>
|
||||
<strong>Attention :</strong> dans le cas o<> le PDF est envoy<6F> au navigateur, le script ne doit
|
||||
rien envoyer d'autre, ni avant ni apr<70>s (pas d'HTML, m<>me pas un espace ni un retour-chariot).
|
||||
Si vous envoyez quelque chose avant, vous obtiendrez le message : "Some data has already been
|
||||
output, can't send PDF file". Si vous envoyez quelque chose apr<70>s, il se peut que le document
|
||||
ne s'affiche pas.
|
||||
</body>
|
||||
</html>
|
||||
9
fpdf/tutorial/tuto1.php
Normal file
9
fpdf/tutorial/tuto1.php
Normal file
@ -0,0 +1,9 @@
|
||||
<?php
|
||||
require('../fpdf.php');
|
||||
|
||||
$pdf = new FPDF();
|
||||
$pdf->AddPage();
|
||||
$pdf->SetFont('Arial','B',16);
|
||||
$pdf->Cell(40,10,'Hello World !');
|
||||
$pdf->Output();
|
||||
?>
|
||||
82
fpdf/tutorial/tuto2.htm
Normal file
82
fpdf/tutorial/tuto2.htm
Normal file
@ -0,0 +1,82 @@
|
||||
<!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>En-t<>te, pied de page, saut de page et image</title>
|
||||
<link type="text/css" rel="stylesheet" href="../fpdf.css">
|
||||
</head>
|
||||
<body>
|
||||
<h1>En-t<>te, pied de page, saut de page et image</h1>
|
||||
Voici un exemple de deux pages avec en-t<>te, pied de page et logo :
|
||||
<div class="source">
|
||||
<pre><code><?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">{
|
||||
</span><span class="cmt">// En-t<>te
|
||||
</span><span class="kw">function </span>Header<span class="kw">()
|
||||
{
|
||||
</span><span class="cmt">// Logo
|
||||
</span>$<span class="kw">this-></span>Image<span class="kw">(</span><span class="str">'logo.png'</span><span class="kw">,</span>10<span class="kw">,</span>6<span class="kw">,</span>30<span class="kw">);
|
||||
</span><span class="cmt">// Police Arial gras 15
|
||||
</span>$<span class="kw">this-></span>SetFont<span class="kw">(</span><span class="str">'Arial'</span><span class="kw">,</span><span class="str">'B'</span><span class="kw">,</span>15<span class="kw">);
|
||||
</span><span class="cmt">// D<>calage <20> droite
|
||||
</span>$<span class="kw">this-></span>Cell<span class="kw">(</span>80<span class="kw">);
|
||||
</span><span class="cmt">// Titre
|
||||
</span>$<span class="kw">this-></span>Cell<span class="kw">(</span>30<span class="kw">,</span>10<span class="kw">,</span><span class="str">'Titre'</span><span class="kw">,</span>1<span class="kw">,</span>0<span class="kw">,</span><span class="str">'C'</span><span class="kw">);
|
||||
</span><span class="cmt">// Saut de ligne
|
||||
</span>$<span class="kw">this-></span>Ln<span class="kw">(</span>20<span class="kw">);
|
||||
}
|
||||
|
||||
</span><span class="cmt">// Pied de page
|
||||
</span><span class="kw">function </span>Footer<span class="kw">()
|
||||
{
|
||||
</span><span class="cmt">// Positionnement <20> 1,5 cm du bas
|
||||
</span>$<span class="kw">this-></span>SetY<span class="kw">(-</span>15<span class="kw">);
|
||||
</span><span class="cmt">// Police Arial italique 8
|
||||
</span>$<span class="kw">this-></span>SetFont<span class="kw">(</span><span class="str">'Arial'</span><span class="kw">,</span><span class="str">'I'</span><span class="kw">,</span>8<span class="kw">);
|
||||
</span><span class="cmt">// Num<75>ro de page
|
||||
</span>$<span class="kw">this-></span>Cell<span class="kw">(</span>0<span class="kw">,</span>10<span class="kw">,</span><span class="str">'Page '</span><span class="kw">.</span>$<span class="kw">this-></span>PageNo<span class="kw">().</span><span class="str">'/{nb}'</span><span class="kw">,</span>0<span class="kw">,</span>0<span class="kw">,</span><span class="str">'C'</span><span class="kw">);
|
||||
}
|
||||
}
|
||||
|
||||
</span><span class="cmt">// Instanciation de la classe d<>riv<69>e
|
||||
</span>$pdf <span class="kw">= new </span>PDF<span class="kw">();
|
||||
</span>$pdf<span class="kw">-></span>AliasNbPages<span class="kw">();
|
||||
</span>$pdf<span class="kw">-></span>AddPage<span class="kw">();
|
||||
</span>$pdf<span class="kw">-></span>SetFont<span class="kw">(</span><span class="str">'Times'</span><span class="kw">,</span><span class="str">''</span><span class="kw">,</span>12<span class="kw">);
|
||||
for(</span>$i<span class="kw">=</span>1<span class="kw">;</span>$i<span class="kw"><=</span>40<span class="kw">;</span>$i<span class="kw">++)
|
||||
</span>$pdf<span class="kw">-></span>Cell<span class="kw">(</span>0<span class="kw">,</span>10<span class="kw">,</span><span class="str">'Impression de la ligne num<75>ro '</span><span class="kw">.</span>$i<span class="kw">,</span>0<span class="kw">,</span>1<span class="kw">);
|
||||
</span>$pdf<span class="kw">-></span>Output<span class="kw">();
|
||||
</span>?></code></pre>
|
||||
</div>
|
||||
<p class='demo'><a href='tuto2.php' target='_blank' class='demo'>[D<>mo]</a></p>
|
||||
Cet exemple exploite les m<>thodes <a href='../doc/header.htm'>Header()</a> et <a href='../doc/footer.htm'>Footer()</a> pour traiter les en-t<>tes et
|
||||
pieds de page. Elles sont appel<65>es automatiquement. Leur impl<70>mentation dans la classe FPDF
|
||||
est vide, aussi doit-on d<>river la classe et les red<65>finir.
|
||||
<br>
|
||||
<br>
|
||||
Le logo est imprim<69> gr<67>ce <20> la m<>thode <a href='../doc/image.htm'>Image()</a> en pr<70>cisant le coin sup<75>rieur gauche et
|
||||
la largeur. La hauteur est calcul<75>e automatiquement afin de respecter la proportion de l'image.
|
||||
<br>
|
||||
<br>
|
||||
Pour imprimer le num<75>ro de page, une valeur nulle est pass<73>e comme largeur de cellule. Cela
|
||||
signifie que cette derni<6E>re doit s'<27>tendre jusqu'<27> la marge droite de la page ; c'est pratique
|
||||
pour centrer du texte. Le num<75>ro de page courant est retourn<72> par la m<>thode <a href='../doc/pageno.htm'>PageNo()</a> ; le
|
||||
nombre total de pages s'obtient quant <20> lui gr<67>ce <20> la valeur sp<73>ciale <code>{nb}</code> qui sera
|
||||
substitu<EFBFBD>e lorsque le document sera termin<69> (<28> condition d'avoir au pr<70>alable appel<65>
|
||||
<a href='../doc/aliasnbpages.htm'>AliasNbPages()</a>).
|
||||
<br>
|
||||
A noter l'utilisation de la m<>thode <a href='../doc/sety.htm'>SetY()</a> qui permet de se
|
||||
positionner de mani<6E>re absolue dans la page, <20> partir du haut ou du bas.
|
||||
<br>
|
||||
<br>
|
||||
Une autre fonctionnalit<69> int<6E>ressante est ici utilis<69>e : le saut de page automatique. Lorsqu'une cellule
|
||||
descend trop bas (<28> 2 centim<69>tres du bas de la page par d<>faut), un saut de page est effectu<74>
|
||||
et la police est restaur<75>e. Bien que l'en-t<>te et le pied de page sp<73>cifient leur propre
|
||||
police (Arial), le corps de la page continue en Times. Ce principe de restauration automatique
|
||||
s'applique aussi <20> l'<27>paisseur des traits et aux couleurs. Le seuil de d<>clenchement du saut
|
||||
de page se r<>gle avec <a href='../doc/setautopagebreak.htm'>SetAutoPageBreak()</a>.
|
||||
</body>
|
||||
</html>
|
||||
41
fpdf/tutorial/tuto2.php
Normal file
41
fpdf/tutorial/tuto2.php
Normal file
@ -0,0 +1,41 @@
|
||||
<?php
|
||||
require('../fpdf.php');
|
||||
|
||||
class PDF extends FPDF
|
||||
{
|
||||
// En-t<>te
|
||||
function Header()
|
||||
{
|
||||
// Logo
|
||||
$this->Image('logo.png',10,6,30);
|
||||
// Police Arial gras 15
|
||||
$this->SetFont('Arial','B',15);
|
||||
// D<>calage <20> droite
|
||||
$this->Cell(80);
|
||||
// Titre
|
||||
$this->Cell(30,10,'Titre',1,0,'C');
|
||||
// Saut de ligne
|
||||
$this->Ln(20);
|
||||
}
|
||||
|
||||
// Pied de page
|
||||
function Footer()
|
||||
{
|
||||
// Positionnement <20> 1,5 cm du bas
|
||||
$this->SetY(-15);
|
||||
// Police Arial italique 8
|
||||
$this->SetFont('Arial','I',8);
|
||||
// Num<75>ro de page
|
||||
$this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C');
|
||||
}
|
||||
}
|
||||
|
||||
// Instanciation de la classe d<>riv<69>e
|
||||
$pdf = new PDF();
|
||||
$pdf->AliasNbPages();
|
||||
$pdf->AddPage();
|
||||
$pdf->SetFont('Times','',12);
|
||||
for($i=1;$i<=40;$i++)
|
||||
$pdf->Cell(0,10,'Impression de la ligne num<75>ro '.$i,0,1);
|
||||
$pdf->Output();
|
||||
?>
|
||||
117
fpdf/tutorial/tuto3.htm
Normal file
117
fpdf/tutorial/tuto3.htm
Normal file
@ -0,0 +1,117 @@
|
||||
<!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>Retour du texte <20> la ligne et couleurs</title>
|
||||
<link type="text/css" rel="stylesheet" href="../fpdf.css">
|
||||
</head>
|
||||
<body>
|
||||
<h1>Retour du texte <20> la ligne et couleurs</h1>
|
||||
Voici pour continuer un exemple imprimant des paragraphes de texte justifi<66>. Il illustre
|
||||
<EFBFBD>galement l'utilisation des couleurs.
|
||||
<div class="source">
|
||||
<pre><code><?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">{
|
||||
function </span>Header<span class="kw">()
|
||||
{
|
||||
global </span>$titre<span class="kw">;
|
||||
|
||||
</span><span class="cmt">// Arial gras 15
|
||||
</span>$<span class="kw">this-></span>SetFont<span class="kw">(</span><span class="str">'Arial'</span><span class="kw">,</span><span class="str">'B'</span><span class="kw">,</span>15<span class="kw">);
|
||||
</span><span class="cmt">// Calcul de la largeur du titre et positionnement
|
||||
</span>$w <span class="kw">= </span>$<span class="kw">this-></span>GetStringWidth<span class="kw">(</span>$titre<span class="kw">)+</span>6<span class="kw">;
|
||||
</span>$<span class="kw">this-></span>SetX<span class="kw">((</span>210<span class="kw">-</span>$w<span class="kw">)/</span>2<span class="kw">);
|
||||
</span><span class="cmt">// Couleurs du cadre, du fond et du texte
|
||||
</span>$<span class="kw">this-></span>SetDrawColor<span class="kw">(</span>0<span class="kw">,</span>80<span class="kw">,</span>180<span class="kw">);
|
||||
</span>$<span class="kw">this-></span>SetFillColor<span class="kw">(</span>230<span class="kw">,</span>230<span class="kw">,</span>0<span class="kw">);
|
||||
</span>$<span class="kw">this-></span>SetTextColor<span class="kw">(</span>220<span class="kw">,</span>50<span class="kw">,</span>50<span class="kw">);
|
||||
</span><span class="cmt">// Epaisseur du cadre (1 mm)
|
||||
</span>$<span class="kw">this-></span>SetLineWidth<span class="kw">(</span>1<span class="kw">);
|
||||
</span><span class="cmt">// Titre
|
||||
</span>$<span class="kw">this-></span>Cell<span class="kw">(</span>$w<span class="kw">,</span>9<span class="kw">,</span>$titre<span class="kw">,</span>1<span class="kw">,</span>1<span class="kw">,</span><span class="str">'C'</span><span class="kw">,</span>true<span class="kw">);
|
||||
</span><span class="cmt">// Saut de ligne
|
||||
</span>$<span class="kw">this-></span>Ln<span class="kw">(</span>10<span class="kw">);
|
||||
}
|
||||
|
||||
function </span>Footer<span class="kw">()
|
||||
{
|
||||
</span><span class="cmt">// Positionnement <20> 1,5 cm du bas
|
||||
</span>$<span class="kw">this-></span>SetY<span class="kw">(-</span>15<span class="kw">);
|
||||
</span><span class="cmt">// Arial italique 8
|
||||
</span>$<span class="kw">this-></span>SetFont<span class="kw">(</span><span class="str">'Arial'</span><span class="kw">,</span><span class="str">'I'</span><span class="kw">,</span>8<span class="kw">);
|
||||
</span><span class="cmt">// Couleur du texte en gris
|
||||
</span>$<span class="kw">this-></span>SetTextColor<span class="kw">(</span>128<span class="kw">);
|
||||
</span><span class="cmt">// Num<75>ro de page
|
||||
</span>$<span class="kw">this-></span>Cell<span class="kw">(</span>0<span class="kw">,</span>10<span class="kw">,</span><span class="str">'Page '</span><span class="kw">.</span>$<span class="kw">this-></span>PageNo<span class="kw">(),</span>0<span class="kw">,</span>0<span class="kw">,</span><span class="str">'C'</span><span class="kw">);
|
||||
}
|
||||
|
||||
function </span>TitreChapitre<span class="kw">(</span>$num<span class="kw">, </span>$libelle<span class="kw">)
|
||||
{
|
||||
</span><span class="cmt">// Arial 12
|
||||
</span>$<span class="kw">this-></span>SetFont<span class="kw">(</span><span class="str">'Arial'</span><span class="kw">,</span><span class="str">''</span><span class="kw">,</span>12<span class="kw">);
|
||||
</span><span class="cmt">// Couleur de fond
|
||||
</span>$<span class="kw">this-></span>SetFillColor<span class="kw">(</span>200<span class="kw">,</span>220<span class="kw">,</span>255<span class="kw">);
|
||||
</span><span class="cmt">// Titre
|
||||
</span>$<span class="kw">this-></span>Cell<span class="kw">(</span>0<span class="kw">,</span>6<span class="kw">,</span><span class="str">"Chapitre </span>$num<span class="str"> : </span>$libelle<span class="str">"</span><span class="kw">,</span>0<span class="kw">,</span>1<span class="kw">,</span><span class="str">'L'</span><span class="kw">,</span>true<span class="kw">);
|
||||
</span><span class="cmt">// Saut de ligne
|
||||
</span>$<span class="kw">this-></span>Ln<span class="kw">(</span>4<span class="kw">);
|
||||
}
|
||||
|
||||
function </span>CorpsChapitre<span class="kw">(</span>$fichier<span class="kw">)
|
||||
{
|
||||
</span><span class="cmt">// Lecture du fichier texte
|
||||
</span>$txt <span class="kw">= </span>file_get_contents<span class="kw">(</span>$fichier<span class="kw">);
|
||||
</span><span class="cmt">// Times 12
|
||||
</span>$<span class="kw">this-></span>SetFont<span class="kw">(</span><span class="str">'Times'</span><span class="kw">,</span><span class="str">''</span><span class="kw">,</span>12<span class="kw">);
|
||||
</span><span class="cmt">// Sortie du texte justifi<66>
|
||||
</span>$<span class="kw">this-></span>MultiCell<span class="kw">(</span>0<span class="kw">,</span>5<span class="kw">,</span>$txt<span class="kw">);
|
||||
</span><span class="cmt">// Saut de ligne
|
||||
</span>$<span class="kw">this-></span>Ln<span class="kw">();
|
||||
</span><span class="cmt">// Mention en italique
|
||||
</span>$<span class="kw">this-></span>SetFont<span class="kw">(</span><span class="str">''</span><span class="kw">,</span><span class="str">'I'</span><span class="kw">);
|
||||
</span>$<span class="kw">this-></span>Cell<span class="kw">(</span>0<span class="kw">,</span>5<span class="kw">,</span><span class="str">"(fin de l'extrait)"</span><span class="kw">);
|
||||
}
|
||||
|
||||
function </span>AjouterChapitre<span class="kw">(</span>$num<span class="kw">, </span>$titre<span class="kw">, </span>$fichier<span class="kw">)
|
||||
{
|
||||
</span>$<span class="kw">this-></span>AddPage<span class="kw">();
|
||||
</span>$<span class="kw">this-></span>TitreChapitre<span class="kw">(</span>$num<span class="kw">,</span>$titre<span class="kw">);
|
||||
</span>$<span class="kw">this-></span>CorpsChapitre<span class="kw">(</span>$fichier<span class="kw">);
|
||||
}
|
||||
}
|
||||
|
||||
</span>$pdf <span class="kw">= new </span>PDF<span class="kw">();
|
||||
</span>$titre <span class="kw">= </span><span class="str">'Vingt mille lieues sous les mers'</span><span class="kw">;
|
||||
</span>$pdf<span class="kw">-></span>SetTitle<span class="kw">(</span>$titre<span class="kw">);
|
||||
</span>$pdf<span class="kw">-></span>SetAuthor<span class="kw">(</span><span class="str">'Jules Verne'</span><span class="kw">);
|
||||
</span>$pdf<span class="kw">-></span>AjouterChapitre<span class="kw">(</span>1<span class="kw">,</span><span class="str">'UN <20>CUEIL FUYANT'</span><span class="kw">,</span><span class="str">'20k_c1.txt'</span><span class="kw">);
|
||||
</span>$pdf<span class="kw">-></span>AjouterChapitre<span class="kw">(</span>2<span class="kw">,</span><span class="str">'LE POUR ET LE CONTRE'</span><span class="kw">,</span><span class="str">'20k_c2.txt'</span><span class="kw">);
|
||||
</span>$pdf<span class="kw">-></span>Output<span class="kw">();
|
||||
</span>?></code></pre>
|
||||
</div>
|
||||
<p class='demo'><a href='tuto3.php' target='_blank' class='demo'>[D<>mo]</a></p>
|
||||
La m<>thode <a href='../doc/getstringwidth.htm'>GetStringWidth()</a> permet de d<>terminer la longueur d'une cha<68>ne dans la police
|
||||
courante, ce qui est utilis<69> ici pour calculer la largeur du cadre entourant le titre. Puis
|
||||
les couleurs sont d<>finies (via <a href='../doc/setdrawcolor.htm'>SetDrawColor()</a>, <a href='../doc/setfillcolor.htm'>SetFillColor()</a> et <a href='../doc/settextcolor.htm'>SetTextColor()</a>)
|
||||
et l'<27>paisseur du trait positionn<6E>e <20> 1 mm (contre 0,2 par d<>faut) gr<67>ce <20> <a href='../doc/setlinewidth.htm'>SetLineWidth()</a>.
|
||||
Il ne reste alors plus qu'<27> imprimer la cellule pour le titre (le dernier param<61>tre <20> 1 indique
|
||||
que le fond doit <20>tre color<6F>).
|
||||
<br>
|
||||
<br>
|
||||
La m<>thode permettant d'imprimer les paragraphes est <a href='../doc/multicell.htm'>MultiCell()</a>. A chaque fois qu'une
|
||||
ligne arrive <20> l'extr<74>mit<69> droite de la cellule ou qu'un caract<63>re de retour-chariot est
|
||||
rencontr<EFBFBD>, un saut est effectu<74> et une nouvelle cellule automatiquement cr<63><72>e sous la
|
||||
pr<EFBFBD>c<EFBFBD>dente. Le texte est justifi<66> par d<>faut.
|
||||
<br>
|
||||
<br>
|
||||
Deux propri<72>t<EFBFBD>s du document sont renseign<67>es : le titre (<a href='../doc/settitle.htm'>SetTitle()</a>) et l'auteur
|
||||
(<a href='../doc/setauthor.htm'>SetAuthor()</a>). Il y a plusieurs man<61>res d'acc<63>der aux propri<72>t<EFBFBD>s dans Adobe Reader. La premi<6D>re
|
||||
consiste <20> ouvrir le document directement avec le lecteur, <20> aller dans le menu Fichier et <20>
|
||||
choisir l'option Propri<72>t<EFBFBD>s. La seconde, disponible <20>galement <20> partir du plug-in, consiste <20>
|
||||
faire un clic droit et <20> choisir Propri<72>t<EFBFBD>s du document. Enfin, on peut effectuer la combinaison
|
||||
de touches Ctrl+D.
|
||||
</body>
|
||||
</html>
|
||||
81
fpdf/tutorial/tuto3.php
Normal file
81
fpdf/tutorial/tuto3.php
Normal file
@ -0,0 +1,81 @@
|
||||
<?php
|
||||
require('../fpdf.php');
|
||||
|
||||
class PDF extends FPDF
|
||||
{
|
||||
function Header()
|
||||
{
|
||||
global $titre;
|
||||
|
||||
// Arial gras 15
|
||||
$this->SetFont('Arial','B',15);
|
||||
// Calcul de la largeur du titre et positionnement
|
||||
$w = $this->GetStringWidth($titre)+6;
|
||||
$this->SetX((210-$w)/2);
|
||||
// Couleurs du cadre, du fond et du texte
|
||||
$this->SetDrawColor(0,80,180);
|
||||
$this->SetFillColor(230,230,0);
|
||||
$this->SetTextColor(220,50,50);
|
||||
// Epaisseur du cadre (1 mm)
|
||||
$this->SetLineWidth(1);
|
||||
// Titre
|
||||
$this->Cell($w,9,$titre,1,1,'C',true);
|
||||
// Saut de ligne
|
||||
$this->Ln(10);
|
||||
}
|
||||
|
||||
function Footer()
|
||||
{
|
||||
// Positionnement <20> 1,5 cm du bas
|
||||
$this->SetY(-15);
|
||||
// Arial italique 8
|
||||
$this->SetFont('Arial','I',8);
|
||||
// Couleur du texte en gris
|
||||
$this->SetTextColor(128);
|
||||
// Num<75>ro de page
|
||||
$this->Cell(0,10,'Page '.$this->PageNo(),0,0,'C');
|
||||
}
|
||||
|
||||
function TitreChapitre($num, $libelle)
|
||||
{
|
||||
// Arial 12
|
||||
$this->SetFont('Arial','',12);
|
||||
// Couleur de fond
|
||||
$this->SetFillColor(200,220,255);
|
||||
// Titre
|
||||
$this->Cell(0,6,"Chapitre $num : $libelle",0,1,'L',true);
|
||||
// Saut de ligne
|
||||
$this->Ln(4);
|
||||
}
|
||||
|
||||
function CorpsChapitre($fichier)
|
||||
{
|
||||
// Lecture du fichier texte
|
||||
$txt = file_get_contents($fichier);
|
||||
// Times 12
|
||||
$this->SetFont('Times','',12);
|
||||
// Sortie du texte justifi<66>
|
||||
$this->MultiCell(0,5,$txt);
|
||||
// Saut de ligne
|
||||
$this->Ln();
|
||||
// Mention en italique
|
||||
$this->SetFont('','I');
|
||||
$this->Cell(0,5,"(fin de l'extrait)");
|
||||
}
|
||||
|
||||
function AjouterChapitre($num, $titre, $fichier)
|
||||
{
|
||||
$this->AddPage();
|
||||
$this->TitreChapitre($num,$titre);
|
||||
$this->CorpsChapitre($fichier);
|
||||
}
|
||||
}
|
||||
|
||||
$pdf = new PDF();
|
||||
$titre = 'Vingt mille lieues sous les mers';
|
||||
$pdf->SetTitle($titre);
|
||||
$pdf->SetAuthor('Jules Verne');
|
||||
$pdf->AjouterChapitre(1,'UN <20>CUEIL FUYANT','20k_c1.txt');
|
||||
$pdf->AjouterChapitre(2,'LE POUR ET LE CONTRE','20k_c2.txt');
|
||||
$pdf->Output();
|
||||
?>
|
||||
132
fpdf/tutorial/tuto4.htm
Normal file
132
fpdf/tutorial/tuto4.htm
Normal file
@ -0,0 +1,132 @@
|
||||
<!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>Multi-colonnes</title>
|
||||
<link type="text/css" rel="stylesheet" href="../fpdf.css">
|
||||
</head>
|
||||
<body>
|
||||
<h1>Multi-colonnes</h1>
|
||||
Cet exemple est une variation du pr<70>c<EFBFBD>dent montrant comment formater le texte sur plusieurs
|
||||
colonnes.
|
||||
<div class="source">
|
||||
<pre><code><?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>$col <span class="kw">= </span>0<span class="kw">; </span><span class="cmt">// Colonne courante
|
||||
</span><span class="kw">protected </span>$y0<span class="kw">; </span><span class="cmt">// Ordonn<6E>e du d<>but des colonnes
|
||||
|
||||
</span><span class="kw">function </span>Header<span class="kw">()
|
||||
{
|
||||
</span><span class="cmt">// En-t<>te
|
||||
</span><span class="kw">global </span>$titre<span class="kw">;
|
||||
|
||||
</span>$<span class="kw">this-></span>SetFont<span class="kw">(</span><span class="str">'Arial'</span><span class="kw">,</span><span class="str">'B'</span><span class="kw">,</span>15<span class="kw">);
|
||||
</span>$w <span class="kw">= </span>$<span class="kw">this-></span>GetStringWidth<span class="kw">(</span>$titre<span class="kw">)+</span>6<span class="kw">;
|
||||
</span>$<span class="kw">this-></span>SetX<span class="kw">((</span>210<span class="kw">-</span>$w<span class="kw">)/</span>2<span class="kw">);
|
||||
</span>$<span class="kw">this-></span>SetDrawColor<span class="kw">(</span>0<span class="kw">,</span>80<span class="kw">,</span>180<span class="kw">);
|
||||
</span>$<span class="kw">this-></span>SetFillColor<span class="kw">(</span>230<span class="kw">,</span>230<span class="kw">,</span>0<span class="kw">);
|
||||
</span>$<span class="kw">this-></span>SetTextColor<span class="kw">(</span>220<span class="kw">,</span>50<span class="kw">,</span>50<span class="kw">);
|
||||
</span>$<span class="kw">this-></span>SetLineWidth<span class="kw">(</span>1<span class="kw">);
|
||||
</span>$<span class="kw">this-></span>Cell<span class="kw">(</span>$w<span class="kw">,</span>9<span class="kw">,</span>$titre<span class="kw">,</span>1<span class="kw">,</span>1<span class="kw">,</span><span class="str">'C'</span><span class="kw">,</span>true<span class="kw">);
|
||||
</span>$<span class="kw">this-></span>Ln<span class="kw">(</span>10<span class="kw">);
|
||||
</span><span class="cmt">// Sauvegarde de l'ordonn<6E>e
|
||||
</span>$<span class="kw">this-></span>y0 <span class="kw">= </span>$<span class="kw">this-></span>GetY<span class="kw">();
|
||||
}
|
||||
|
||||
function </span>Footer<span class="kw">()
|
||||
{
|
||||
</span><span class="cmt">// Pied de page
|
||||
</span>$<span class="kw">this-></span>SetY<span class="kw">(-</span>15<span class="kw">);
|
||||
</span>$<span class="kw">this-></span>SetFont<span class="kw">(</span><span class="str">'Arial'</span><span class="kw">,</span><span class="str">'I'</span><span class="kw">,</span>8<span class="kw">);
|
||||
</span>$<span class="kw">this-></span>SetTextColor<span class="kw">(</span>128<span class="kw">);
|
||||
</span>$<span class="kw">this-></span>Cell<span class="kw">(</span>0<span class="kw">,</span>10<span class="kw">,</span><span class="str">'Page '</span><span class="kw">.</span>$<span class="kw">this-></span>PageNo<span class="kw">(),</span>0<span class="kw">,</span>0<span class="kw">,</span><span class="str">'C'</span><span class="kw">);
|
||||
}
|
||||
|
||||
function </span>SetCol<span class="kw">(</span>$col<span class="kw">)
|
||||
{
|
||||
</span><span class="cmt">// Positionnement sur une colonne
|
||||
</span>$<span class="kw">this-></span>col <span class="kw">= </span>$col<span class="kw">;
|
||||
</span>$x <span class="kw">= </span>10<span class="kw">+</span>$col<span class="kw">*</span>65<span class="kw">;
|
||||
</span>$<span class="kw">this-></span>SetLeftMargin<span class="kw">(</span>$x<span class="kw">);
|
||||
</span>$<span class="kw">this-></span>SetX<span class="kw">(</span>$x<span class="kw">);
|
||||
}
|
||||
|
||||
function </span>AcceptPageBreak<span class="kw">()
|
||||
{
|
||||
</span><span class="cmt">// M<>thode autorisant ou non le saut de page automatique
|
||||
</span><span class="kw">if(</span>$<span class="kw">this-></span>col<span class="kw"><</span>2<span class="kw">)
|
||||
{
|
||||
</span><span class="cmt">// Passage <20> la colonne suivante
|
||||
</span>$<span class="kw">this-></span>SetCol<span class="kw">(</span>$<span class="kw">this-></span>col<span class="kw">+</span>1<span class="kw">);
|
||||
</span><span class="cmt">// Ordonn<6E>e en haut
|
||||
</span>$<span class="kw">this-></span>SetY<span class="kw">(</span>$<span class="kw">this-></span>y0<span class="kw">);
|
||||
</span><span class="cmt">// On reste sur la page
|
||||
</span><span class="kw">return </span>false<span class="kw">;
|
||||
}
|
||||
else
|
||||
{
|
||||
</span><span class="cmt">// Retour en premi<6D>re colonne
|
||||
</span>$<span class="kw">this-></span>SetCol<span class="kw">(</span>0<span class="kw">);
|
||||
</span><span class="cmt">// Saut de page
|
||||
</span><span class="kw">return </span>true<span class="kw">;
|
||||
}
|
||||
}
|
||||
|
||||
function </span>TitreChapitre<span class="kw">(</span>$num<span class="kw">, </span>$libelle<span class="kw">)
|
||||
{
|
||||
</span><span class="cmt">// Titre
|
||||
</span>$<span class="kw">this-></span>SetFont<span class="kw">(</span><span class="str">'Arial'</span><span class="kw">,</span><span class="str">''</span><span class="kw">,</span>12<span class="kw">);
|
||||
</span>$<span class="kw">this-></span>SetFillColor<span class="kw">(</span>200<span class="kw">,</span>220<span class="kw">,</span>255<span class="kw">);
|
||||
</span>$<span class="kw">this-></span>Cell<span class="kw">(</span>0<span class="kw">,</span>6<span class="kw">,</span><span class="str">"Chapitre </span>$num<span class="str"> : </span>$libelle<span class="str">"</span><span class="kw">,</span>0<span class="kw">,</span>1<span class="kw">,</span><span class="str">'L'</span><span class="kw">,</span>true<span class="kw">);
|
||||
</span>$<span class="kw">this-></span>Ln<span class="kw">(</span>4<span class="kw">);
|
||||
</span><span class="cmt">// Sauvegarde de l'ordonn<6E>e
|
||||
</span>$<span class="kw">this-></span>y0 <span class="kw">= </span>$<span class="kw">this-></span>GetY<span class="kw">();
|
||||
}
|
||||
|
||||
function </span>CorpsChapitre<span class="kw">(</span>$fichier<span class="kw">)
|
||||
{
|
||||
</span><span class="cmt">// Lecture du fichier texte
|
||||
</span>$txt <span class="kw">= </span>file_get_contents<span class="kw">(</span>$fichier<span class="kw">);
|
||||
</span><span class="cmt">// Police
|
||||
</span>$<span class="kw">this-></span>SetFont<span class="kw">(</span><span class="str">'Times'</span><span class="kw">,</span><span class="str">''</span><span class="kw">,</span>12<span class="kw">);
|
||||
</span><span class="cmt">// Sortie du texte sur 6 cm de largeur
|
||||
</span>$<span class="kw">this-></span>MultiCell<span class="kw">(</span>60<span class="kw">,</span>5<span class="kw">,</span>$txt<span class="kw">);
|
||||
</span>$<span class="kw">this-></span>Ln<span class="kw">();
|
||||
</span><span class="cmt">// Mention
|
||||
</span>$<span class="kw">this-></span>SetFont<span class="kw">(</span><span class="str">''</span><span class="kw">,</span><span class="str">'I'</span><span class="kw">);
|
||||
</span>$<span class="kw">this-></span>Cell<span class="kw">(</span>0<span class="kw">,</span>5<span class="kw">,</span><span class="str">"(fin de l'extrait)"</span><span class="kw">);
|
||||
</span><span class="cmt">// Retour en premi<6D>re colonne
|
||||
</span>$<span class="kw">this-></span>SetCol<span class="kw">(</span>0<span class="kw">);
|
||||
}
|
||||
|
||||
function </span>AjouterChapitre<span class="kw">(</span>$num<span class="kw">, </span>$titre<span class="kw">, </span>$fichier<span class="kw">)
|
||||
{
|
||||
</span><span class="cmt">// Ajout du chapitre
|
||||
</span>$<span class="kw">this-></span>AddPage<span class="kw">();
|
||||
</span>$<span class="kw">this-></span>TitreChapitre<span class="kw">(</span>$num<span class="kw">,</span>$titre<span class="kw">);
|
||||
</span>$<span class="kw">this-></span>CorpsChapitre<span class="kw">(</span>$fichier<span class="kw">);
|
||||
}
|
||||
}
|
||||
|
||||
</span>$pdf <span class="kw">= new </span>PDF<span class="kw">();
|
||||
</span>$titre <span class="kw">= </span><span class="str">'Vingt mille lieues sous les mers'</span><span class="kw">;
|
||||
</span>$pdf<span class="kw">-></span>SetTitle<span class="kw">(</span>$titre<span class="kw">);
|
||||
</span>$pdf<span class="kw">-></span>SetAuthor<span class="kw">(</span><span class="str">'Jules Verne'</span><span class="kw">);
|
||||
</span>$pdf<span class="kw">-></span>AjouterChapitre<span class="kw">(</span>1<span class="kw">,</span><span class="str">'UN <20>CUEIL FUYANT'</span><span class="kw">,</span><span class="str">'20k_c1.txt'</span><span class="kw">);
|
||||
</span>$pdf<span class="kw">-></span>AjouterChapitre<span class="kw">(</span>2<span class="kw">,</span><span class="str">'LE POUR ET LE CONTRE'</span><span class="kw">,</span><span class="str">'20k_c2.txt'</span><span class="kw">);
|
||||
</span>$pdf<span class="kw">-></span>Output<span class="kw">();
|
||||
</span>?></code></pre>
|
||||
</div>
|
||||
<p class='demo'><a href='tuto4.php' target='_blank' class='demo'>[D<>mo]</a></p>
|
||||
La m<>thode-cl<63> utilis<69>e est <a href='../doc/acceptpagebreak.htm'>AcceptPageBreak()</a>. Elle permet d'accepter ou non un saut de
|
||||
page automatique. En refusant le saut et en modifiant la marge gauche (par <a href='../doc/setleftmargin.htm'>SetLeftMargin()</a>),
|
||||
on obtient le formatage en colonnes.
|
||||
<br>
|
||||
Pour le reste, peu de changements ; deux propri<72>t<EFBFBD>s ont <20>t<EFBFBD> ajout<75>es <20> la classe pour m<>moriser
|
||||
le num<75>ro de colonne courant ainsi que l'ordonn<6E>e du d<>but des colonnes, et l'appel <20> MultiCell()
|
||||
sp<EFBFBD>cifie que le texte a 6 cm de largeur.
|
||||
</body>
|
||||
</html>
|
||||
109
fpdf/tutorial/tuto4.php
Normal file
109
fpdf/tutorial/tuto4.php
Normal file
@ -0,0 +1,109 @@
|
||||
<?php
|
||||
require('../fpdf.php');
|
||||
|
||||
class PDF extends FPDF
|
||||
{
|
||||
protected $col = 0; // Colonne courante
|
||||
protected $y0; // Ordonn<6E>e du d<>but des colonnes
|
||||
|
||||
function Header()
|
||||
{
|
||||
// En-t<>te
|
||||
global $titre;
|
||||
|
||||
$this->SetFont('Arial','B',15);
|
||||
$w = $this->GetStringWidth($titre)+6;
|
||||
$this->SetX((210-$w)/2);
|
||||
$this->SetDrawColor(0,80,180);
|
||||
$this->SetFillColor(230,230,0);
|
||||
$this->SetTextColor(220,50,50);
|
||||
$this->SetLineWidth(1);
|
||||
$this->Cell($w,9,$titre,1,1,'C',true);
|
||||
$this->Ln(10);
|
||||
// Sauvegarde de l'ordonn<6E>e
|
||||
$this->y0 = $this->GetY();
|
||||
}
|
||||
|
||||
function Footer()
|
||||
{
|
||||
// Pied de page
|
||||
$this->SetY(-15);
|
||||
$this->SetFont('Arial','I',8);
|
||||
$this->SetTextColor(128);
|
||||
$this->Cell(0,10,'Page '.$this->PageNo(),0,0,'C');
|
||||
}
|
||||
|
||||
function SetCol($col)
|
||||
{
|
||||
// Positionnement sur une colonne
|
||||
$this->col = $col;
|
||||
$x = 10+$col*65;
|
||||
$this->SetLeftMargin($x);
|
||||
$this->SetX($x);
|
||||
}
|
||||
|
||||
function AcceptPageBreak()
|
||||
{
|
||||
// M<>thode autorisant ou non le saut de page automatique
|
||||
if($this->col<2)
|
||||
{
|
||||
// Passage <20> la colonne suivante
|
||||
$this->SetCol($this->col+1);
|
||||
// Ordonn<6E>e en haut
|
||||
$this->SetY($this->y0);
|
||||
// On reste sur la page
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Retour en premi<6D>re colonne
|
||||
$this->SetCol(0);
|
||||
// Saut de page
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
function TitreChapitre($num, $libelle)
|
||||
{
|
||||
// Titre
|
||||
$this->SetFont('Arial','',12);
|
||||
$this->SetFillColor(200,220,255);
|
||||
$this->Cell(0,6,"Chapitre $num : $libelle",0,1,'L',true);
|
||||
$this->Ln(4);
|
||||
// Sauvegarde de l'ordonn<6E>e
|
||||
$this->y0 = $this->GetY();
|
||||
}
|
||||
|
||||
function CorpsChapitre($fichier)
|
||||
{
|
||||
// Lecture du fichier texte
|
||||
$txt = file_get_contents($fichier);
|
||||
// Police
|
||||
$this->SetFont('Times','',12);
|
||||
// Sortie du texte sur 6 cm de largeur
|
||||
$this->MultiCell(60,5,$txt);
|
||||
$this->Ln();
|
||||
// Mention
|
||||
$this->SetFont('','I');
|
||||
$this->Cell(0,5,"(fin de l'extrait)");
|
||||
// Retour en premi<6D>re colonne
|
||||
$this->SetCol(0);
|
||||
}
|
||||
|
||||
function AjouterChapitre($num, $titre, $fichier)
|
||||
{
|
||||
// Ajout du chapitre
|
||||
$this->AddPage();
|
||||
$this->TitreChapitre($num,$titre);
|
||||
$this->CorpsChapitre($fichier);
|
||||
}
|
||||
}
|
||||
|
||||
$pdf = new PDF();
|
||||
$titre = 'Vingt mille lieues sous les mers';
|
||||
$pdf->SetTitle($titre);
|
||||
$pdf->SetAuthor('Jules Verne');
|
||||
$pdf->AjouterChapitre(1,'UN <20>CUEIL FUYANT','20k_c1.txt');
|
||||
$pdf->AjouterChapitre(2,'LE POUR ET LE CONTRE','20k_c2.txt');
|
||||
$pdf->Output();
|
||||
?>
|
||||
138
fpdf/tutorial/tuto5.htm
Normal file
138
fpdf/tutorial/tuto5.htm
Normal file
@ -0,0 +1,138 @@
|
||||
<!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>Tableaux</title>
|
||||
<link type="text/css" rel="stylesheet" href="../fpdf.css">
|
||||
</head>
|
||||
<body>
|
||||
<h1>Tableaux</h1>
|
||||
Ce tutoriel montre diff<66>rentes mani<6E>res de r<>aliser des tableaux.
|
||||
<div class="source">
|
||||
<pre><code><?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">{
|
||||
</span><span class="cmt">// Chargement des donn<6E>es
|
||||
</span><span class="kw">function </span>LoadData<span class="kw">(</span>$file<span class="kw">)
|
||||
{
|
||||
</span><span class="cmt">// Lecture des lignes du fichier
|
||||
</span>$lines <span class="kw">= </span>file<span class="kw">(</span>$file<span class="kw">);
|
||||
</span>$data <span class="kw">= array();
|
||||
foreach(</span>$lines <span class="kw">as </span>$line<span class="kw">)
|
||||
</span>$data<span class="kw">[] = </span>explode<span class="kw">(</span><span class="str">';'</span><span class="kw">,</span>trim<span class="kw">(</span>$line<span class="kw">));
|
||||
return </span>$data<span class="kw">;
|
||||
}
|
||||
|
||||
</span><span class="cmt">// Tableau simple
|
||||
</span><span class="kw">function </span>BasicTable<span class="kw">(</span>$header<span class="kw">, </span>$data<span class="kw">)
|
||||
{
|
||||
</span><span class="cmt">// En-t<>te
|
||||
</span><span class="kw">foreach(</span>$header <span class="kw">as </span>$col<span class="kw">)
|
||||
</span>$<span class="kw">this-></span>Cell<span class="kw">(</span>40<span class="kw">,</span>7<span class="kw">,</span>$col<span class="kw">,</span>1<span class="kw">);
|
||||
</span>$<span class="kw">this-></span>Ln<span class="kw">();
|
||||
</span><span class="cmt">// Donn<6E>es
|
||||
</span><span class="kw">foreach(</span>$data <span class="kw">as </span>$row<span class="kw">)
|
||||
{
|
||||
foreach(</span>$row <span class="kw">as </span>$col<span class="kw">)
|
||||
</span>$<span class="kw">this-></span>Cell<span class="kw">(</span>40<span class="kw">,</span>6<span class="kw">,</span>$col<span class="kw">,</span>1<span class="kw">);
|
||||
</span>$<span class="kw">this-></span>Ln<span class="kw">();
|
||||
}
|
||||
}
|
||||
|
||||
</span><span class="cmt">// Tableau am<61>lior<6F>
|
||||
</span><span class="kw">function </span>ImprovedTable<span class="kw">(</span>$header<span class="kw">, </span>$data<span class="kw">)
|
||||
{
|
||||
</span><span class="cmt">// Largeurs des colonnes
|
||||
</span>$w <span class="kw">= array(</span>40<span class="kw">, </span>35<span class="kw">, </span>45<span class="kw">, </span>40<span class="kw">);
|
||||
</span><span class="cmt">// En-t<>te
|
||||
</span><span class="kw">for(</span>$i<span class="kw">=</span>0<span class="kw">;</span>$i<span class="kw"><</span>count<span class="kw">(</span>$header<span class="kw">);</span>$i<span class="kw">++)
|
||||
</span>$<span class="kw">this-></span>Cell<span class="kw">(</span>$w<span class="kw">[</span>$i<span class="kw">],</span>7<span class="kw">,</span>$header<span class="kw">[</span>$i<span class="kw">],</span>1<span class="kw">,</span>0<span class="kw">,</span><span class="str">'C'</span><span class="kw">);
|
||||
</span>$<span class="kw">this-></span>Ln<span class="kw">();
|
||||
</span><span class="cmt">// Donn<6E>es
|
||||
</span><span class="kw">foreach(</span>$data <span class="kw">as </span>$row<span class="kw">)
|
||||
{
|
||||
</span>$<span class="kw">this-></span>Cell<span class="kw">(</span>$w<span class="kw">[</span>0<span class="kw">],</span>6<span class="kw">,</span>$row<span class="kw">[</span>0<span class="kw">],</span><span class="str">'LR'</span><span class="kw">);
|
||||
</span>$<span class="kw">this-></span>Cell<span class="kw">(</span>$w<span class="kw">[</span>1<span class="kw">],</span>6<span class="kw">,</span>$row<span class="kw">[</span>1<span class="kw">],</span><span class="str">'LR'</span><span class="kw">);
|
||||
</span>$<span class="kw">this-></span>Cell<span class="kw">(</span>$w<span class="kw">[</span>2<span class="kw">],</span>6<span class="kw">,</span>number_format<span class="kw">(</span>$row<span class="kw">[</span>2<span class="kw">],</span>0<span class="kw">,</span><span class="str">','</span><span class="kw">,</span><span class="str">' '</span><span class="kw">),</span><span class="str">'LR'</span><span class="kw">,</span>0<span class="kw">,</span><span class="str">'R'</span><span class="kw">);
|
||||
</span>$<span class="kw">this-></span>Cell<span class="kw">(</span>$w<span class="kw">[</span>3<span class="kw">],</span>6<span class="kw">,</span>number_format<span class="kw">(</span>$row<span class="kw">[</span>3<span class="kw">],</span>0<span class="kw">,</span><span class="str">','</span><span class="kw">,</span><span class="str">' '</span><span class="kw">),</span><span class="str">'LR'</span><span class="kw">,</span>0<span class="kw">,</span><span class="str">'R'</span><span class="kw">);
|
||||
</span>$<span class="kw">this-></span>Ln<span class="kw">();
|
||||
}
|
||||
</span><span class="cmt">// Trait de terminaison
|
||||
</span>$<span class="kw">this-></span>Cell<span class="kw">(</span>array_sum<span class="kw">(</span>$w<span class="kw">),</span>0<span class="kw">,</span><span class="str">''</span><span class="kw">,</span><span class="str">'T'</span><span class="kw">);
|
||||
}
|
||||
|
||||
</span><span class="cmt">// Tableau color<6F>
|
||||
</span><span class="kw">function </span>FancyTable<span class="kw">(</span>$header<span class="kw">, </span>$data<span class="kw">)
|
||||
{
|
||||
</span><span class="cmt">// Couleurs, <20>paisseur du trait et police grasse
|
||||
</span>$<span class="kw">this-></span>SetFillColor<span class="kw">(</span>255<span class="kw">,</span>0<span class="kw">,</span>0<span class="kw">);
|
||||
</span>$<span class="kw">this-></span>SetTextColor<span class="kw">(</span>255<span class="kw">);
|
||||
</span>$<span class="kw">this-></span>SetDrawColor<span class="kw">(</span>128<span class="kw">,</span>0<span class="kw">,</span>0<span class="kw">);
|
||||
</span>$<span class="kw">this-></span>SetLineWidth<span class="kw">(</span>.3<span class="kw">);
|
||||
</span>$<span class="kw">this-></span>SetFont<span class="kw">(</span><span class="str">''</span><span class="kw">,</span><span class="str">'B'</span><span class="kw">);
|
||||
</span><span class="cmt">// En-t<>te
|
||||
</span>$w <span class="kw">= array(</span>40<span class="kw">, </span>35<span class="kw">, </span>45<span class="kw">, </span>40<span class="kw">);
|
||||
for(</span>$i<span class="kw">=</span>0<span class="kw">;</span>$i<span class="kw"><</span>count<span class="kw">(</span>$header<span class="kw">);</span>$i<span class="kw">++)
|
||||
</span>$<span class="kw">this-></span>Cell<span class="kw">(</span>$w<span class="kw">[</span>$i<span class="kw">],</span>7<span class="kw">,</span>$header<span class="kw">[</span>$i<span class="kw">],</span>1<span class="kw">,</span>0<span class="kw">,</span><span class="str">'C'</span><span class="kw">,</span>true<span class="kw">);
|
||||
</span>$<span class="kw">this-></span>Ln<span class="kw">();
|
||||
</span><span class="cmt">// Restauration des couleurs et de la police
|
||||
</span>$<span class="kw">this-></span>SetFillColor<span class="kw">(</span>224<span class="kw">,</span>235<span class="kw">,</span>255<span class="kw">);
|
||||
</span>$<span class="kw">this-></span>SetTextColor<span class="kw">(</span>0<span class="kw">);
|
||||
</span>$<span class="kw">this-></span>SetFont<span class="kw">(</span><span class="str">''</span><span class="kw">);
|
||||
</span><span class="cmt">// Donn<6E>es
|
||||
</span>$fill <span class="kw">= </span>false<span class="kw">;
|
||||
foreach(</span>$data <span class="kw">as </span>$row<span class="kw">)
|
||||
{
|
||||
</span>$<span class="kw">this-></span>Cell<span class="kw">(</span>$w<span class="kw">[</span>0<span class="kw">],</span>6<span class="kw">,</span>$row<span class="kw">[</span>0<span class="kw">],</span><span class="str">'LR'</span><span class="kw">,</span>0<span class="kw">,</span><span class="str">'L'</span><span class="kw">,</span>$fill<span class="kw">);
|
||||
</span>$<span class="kw">this-></span>Cell<span class="kw">(</span>$w<span class="kw">[</span>1<span class="kw">],</span>6<span class="kw">,</span>$row<span class="kw">[</span>1<span class="kw">],</span><span class="str">'LR'</span><span class="kw">,</span>0<span class="kw">,</span><span class="str">'L'</span><span class="kw">,</span>$fill<span class="kw">);
|
||||
</span>$<span class="kw">this-></span>Cell<span class="kw">(</span>$w<span class="kw">[</span>2<span class="kw">],</span>6<span class="kw">,</span>number_format<span class="kw">(</span>$row<span class="kw">[</span>2<span class="kw">],</span>0<span class="kw">,</span><span class="str">','</span><span class="kw">,</span><span class="str">' '</span><span class="kw">),</span><span class="str">'LR'</span><span class="kw">,</span>0<span class="kw">,</span><span class="str">'R'</span><span class="kw">,</span>$fill<span class="kw">);
|
||||
</span>$<span class="kw">this-></span>Cell<span class="kw">(</span>$w<span class="kw">[</span>3<span class="kw">],</span>6<span class="kw">,</span>number_format<span class="kw">(</span>$row<span class="kw">[</span>3<span class="kw">],</span>0<span class="kw">,</span><span class="str">','</span><span class="kw">,</span><span class="str">' '</span><span class="kw">),</span><span class="str">'LR'</span><span class="kw">,</span>0<span class="kw">,</span><span class="str">'R'</span><span class="kw">,</span>$fill<span class="kw">);
|
||||
</span>$<span class="kw">this-></span>Ln<span class="kw">();
|
||||
</span>$fill <span class="kw">= !</span>$fill<span class="kw">;
|
||||
}
|
||||
</span><span class="cmt">// Trait de terminaison
|
||||
</span>$<span class="kw">this-></span>Cell<span class="kw">(</span>array_sum<span class="kw">(</span>$w<span class="kw">),</span>0<span class="kw">,</span><span class="str">''</span><span class="kw">,</span><span class="str">'T'</span><span class="kw">);
|
||||
}
|
||||
}
|
||||
|
||||
</span>$pdf <span class="kw">= new </span>PDF<span class="kw">();
|
||||
</span><span class="cmt">// Titres des colonnes
|
||||
</span>$header <span class="kw">= array(</span><span class="str">'Pays'</span><span class="kw">, </span><span class="str">'Capitale'</span><span class="kw">, </span><span class="str">'Superficie (km<6B>)'</span><span class="kw">, </span><span class="str">'Pop. (milliers)'</span><span class="kw">);
|
||||
</span><span class="cmt">// Chargement des donn<6E>es
|
||||
</span>$data <span class="kw">= </span>$pdf<span class="kw">-></span>LoadData<span class="kw">(</span><span class="str">'pays.txt'</span><span class="kw">);
|
||||
</span>$pdf<span class="kw">-></span>SetFont<span class="kw">(</span><span class="str">'Arial'</span><span class="kw">,</span><span class="str">''</span><span class="kw">,</span>14<span class="kw">);
|
||||
</span>$pdf<span class="kw">-></span>AddPage<span class="kw">();
|
||||
</span>$pdf<span class="kw">-></span>BasicTable<span class="kw">(</span>$header<span class="kw">,</span>$data<span class="kw">);
|
||||
</span>$pdf<span class="kw">-></span>AddPage<span class="kw">();
|
||||
</span>$pdf<span class="kw">-></span>ImprovedTable<span class="kw">(</span>$header<span class="kw">,</span>$data<span class="kw">);
|
||||
</span>$pdf<span class="kw">-></span>AddPage<span class="kw">();
|
||||
</span>$pdf<span class="kw">-></span>FancyTable<span class="kw">(</span>$header<span class="kw">,</span>$data<span class="kw">);
|
||||
</span>$pdf<span class="kw">-></span>Output<span class="kw">();
|
||||
</span>?></code></pre>
|
||||
</div>
|
||||
<p class='demo'><a href='tuto5.php' target='_blank' class='demo'>[D<>mo]</a></p>
|
||||
Un tableau n'<27>tant qu'un ensemble de cellules, il est naturel de les construire <20> partir de
|
||||
ces derni<6E>res. Le premier est r<>alis<69> de la mani<6E>re la plus <20>l<EFBFBD>mentaire qui soit : de simples
|
||||
cellules encadr<64>es, toutes de la m<>me taille et align<67>es <20> gauche. Le r<>sultat est
|
||||
rudimentaire mais tr<74>s rapide <20> obtenir.
|
||||
<br>
|
||||
<br>
|
||||
Le deuxi<78>me tableau apporte quelques am<61>liorations : chaque colonne a sa propre largeur, les
|
||||
titres sont centr<74>s et les nombres cadr<64>s <20> droite. De plus, les traits horizontaux ont <20>t<EFBFBD>
|
||||
enlev<EFBFBD>s. Ceci est r<>alis<69> gr<67>ce au param<61>tre <code>border</code> de la m<>thode <a href='../doc/cell.htm'>Cell()</a>, qui
|
||||
permet de sp<73>cifier quels bords de la cellule doivent <20>tre trac<61>s. Dans le cas pr<70>sent, on
|
||||
d<EFBFBD>sire les bords gauches (<code>L</code>) et droits (<code>R</code>). Reste le probl<62>me du trait
|
||||
horizontal final pour refermer le tableau. Il y a deux possibilit<69>s : soit tester dans la
|
||||
boucle si on se trouve sur la derni<6E>re ligne, auquel cas on utilise <code>LRB</code> pour le
|
||||
param<EFBFBD>tre <code>border</code> ; soit, comme c'est fait ici, ajouter le trait une fois la boucle
|
||||
termin<EFBFBD>e.
|
||||
<br>
|
||||
<br>
|
||||
Le troisi<73>me tableau est semblable au deuxi<78>me mais utilise des couleurs. Il suffit pour cela
|
||||
de pr<70>ciser les couleurs de fond, de texte et de trait souhait<69>es. L'alternance de couleur
|
||||
pour les lignes est obtenue en utilisant des cellules <20> fond alternativement color<6F> et
|
||||
transparent.
|
||||
</body>
|
||||
</html>
|
||||
102
fpdf/tutorial/tuto5.php
Normal file
102
fpdf/tutorial/tuto5.php
Normal file
@ -0,0 +1,102 @@
|
||||
<?php
|
||||
require('../fpdf.php');
|
||||
|
||||
class PDF extends FPDF
|
||||
{
|
||||
// Chargement des donn<6E>es
|
||||
function LoadData($file)
|
||||
{
|
||||
// Lecture des lignes du fichier
|
||||
$lines = file($file);
|
||||
$data = array();
|
||||
foreach($lines as $line)
|
||||
$data[] = explode(';',trim($line));
|
||||
return $data;
|
||||
}
|
||||
|
||||
// Tableau simple
|
||||
function BasicTable($header, $data)
|
||||
{
|
||||
// En-t<>te
|
||||
foreach($header as $col)
|
||||
$this->Cell(40,7,$col,1);
|
||||
$this->Ln();
|
||||
// Donn<6E>es
|
||||
foreach($data as $row)
|
||||
{
|
||||
foreach($row as $col)
|
||||
$this->Cell(40,6,$col,1);
|
||||
$this->Ln();
|
||||
}
|
||||
}
|
||||
|
||||
// Tableau am<61>lior<6F>
|
||||
function ImprovedTable($header, $data)
|
||||
{
|
||||
// Largeurs des colonnes
|
||||
$w = array(40, 35, 45, 40);
|
||||
// En-t<>te
|
||||
for($i=0;$i<count($header);$i++)
|
||||
$this->Cell($w[$i],7,$header[$i],1,0,'C');
|
||||
$this->Ln();
|
||||
// Donn<6E>es
|
||||
foreach($data as $row)
|
||||
{
|
||||
$this->Cell($w[0],6,$row[0],'LR');
|
||||
$this->Cell($w[1],6,$row[1],'LR');
|
||||
$this->Cell($w[2],6,number_format($row[2],0,',',' '),'LR',0,'R');
|
||||
$this->Cell($w[3],6,number_format($row[3],0,',',' '),'LR',0,'R');
|
||||
$this->Ln();
|
||||
}
|
||||
// Trait de terminaison
|
||||
$this->Cell(array_sum($w),0,'','T');
|
||||
}
|
||||
|
||||
// Tableau color<6F>
|
||||
function FancyTable($header, $data)
|
||||
{
|
||||
// Couleurs, <20>paisseur du trait et police grasse
|
||||
$this->SetFillColor(255,0,0);
|
||||
$this->SetTextColor(255);
|
||||
$this->SetDrawColor(128,0,0);
|
||||
$this->SetLineWidth(.3);
|
||||
$this->SetFont('','B');
|
||||
// En-t<>te
|
||||
$w = array(40, 35, 45, 40);
|
||||
for($i=0;$i<count($header);$i++)
|
||||
$this->Cell($w[$i],7,$header[$i],1,0,'C',true);
|
||||
$this->Ln();
|
||||
// Restauration des couleurs et de la police
|
||||
$this->SetFillColor(224,235,255);
|
||||
$this->SetTextColor(0);
|
||||
$this->SetFont('');
|
||||
// Donn<6E>es
|
||||
$fill = false;
|
||||
foreach($data as $row)
|
||||
{
|
||||
$this->Cell($w[0],6,$row[0],'LR',0,'L',$fill);
|
||||
$this->Cell($w[1],6,$row[1],'LR',0,'L',$fill);
|
||||
$this->Cell($w[2],6,number_format($row[2],0,',',' '),'LR',0,'R',$fill);
|
||||
$this->Cell($w[3],6,number_format($row[3],0,',',' '),'LR',0,'R',$fill);
|
||||
$this->Ln();
|
||||
$fill = !$fill;
|
||||
}
|
||||
// Trait de terminaison
|
||||
$this->Cell(array_sum($w),0,'','T');
|
||||
}
|
||||
}
|
||||
|
||||
$pdf = new PDF();
|
||||
// Titres des colonnes
|
||||
$header = array('Pays', 'Capitale', 'Superficie (km<6B>)', 'Pop. (milliers)');
|
||||
// Chargement des donn<6E>es
|
||||
$data = $pdf->LoadData('pays.txt');
|
||||
$pdf->SetFont('Arial','',14);
|
||||
$pdf->AddPage();
|
||||
$pdf->BasicTable($header,$data);
|
||||
$pdf->AddPage();
|
||||
$pdf->ImprovedTable($header,$data);
|
||||
$pdf->AddPage();
|
||||
$pdf->FancyTable($header,$data);
|
||||
$pdf->Output();
|
||||
?>
|
||||
158
fpdf/tutorial/tuto6.htm
Normal file
158
fpdf/tutorial/tuto6.htm
Normal file
@ -0,0 +1,158 @@
|
||||
<!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<6E>rer des liens (internes et externes) et montre un nouveau mode
|
||||
d'<27>criture du texte. Il contient <20>galement un interpr<70>teur HTML rudimentaire.
|
||||
<div class="source">
|
||||
<pre><code><?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">'/<(.*)>/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">=></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-></span>HREF<span class="kw">)
|
||||
</span>$<span class="kw">this-></span>PutLink<span class="kw">(</span>$<span class="kw">this-></span>HREF<span class="kw">,</span>$e<span class="kw">);
|
||||
else
|
||||
</span>$<span class="kw">this-></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-></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-></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-></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-></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-></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-></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-></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-></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-></span>$s<span class="kw">></span>0<span class="kw">)
|
||||
</span>$style <span class="kw">.= </span>$s<span class="kw">;
|
||||
}
|
||||
</span>$<span class="kw">this-></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-></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-></span>SetStyle<span class="kw">(</span><span class="str">'U'</span><span class="kw">,</span>true<span class="kw">);
|
||||
</span>$<span class="kw">this-></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-></span>SetStyle<span class="kw">(</span><span class="str">'U'</span><span class="kw">,</span>false<span class="kw">);
|
||||
</span>$<span class="kw">this-></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<66>rents styles : <b>gras</b>,
|
||||
<i>italique</i>, <u>soulign<EFBFBD></u>, ou <b><i><u>tous <20> la fois</u></i></b> !<br><br>Vous pouvez aussi
|
||||
ins<EFBFBD>rer des liens sous forme textuelle, comme <a href="http://www.fpdf.org">www.fpdf.org</a>, 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<6D>re page
|
||||
</span>$pdf<span class="kw">-></span>AddPage<span class="kw">();
|
||||
</span>$pdf<span class="kw">-></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">-></span>Write<span class="kw">(</span>5<span class="kw">,</span><span class="str">'Pour d<>couvrir les nouveaut<75>s de ce tutoriel, cliquez '</span><span class="kw">);
|
||||
</span>$pdf<span class="kw">-></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">-></span>AddLink<span class="kw">();
|
||||
</span>$pdf<span class="kw">-></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">-></span>SetFont<span class="kw">(</span><span class="str">''</span><span class="kw">);
|
||||
</span><span class="cmt">// Seconde page
|
||||
</span>$pdf<span class="kw">-></span>AddPage<span class="kw">();
|
||||
</span>$pdf<span class="kw">-></span>SetLink<span class="kw">(</span>$link<span class="kw">);
|
||||
</span>$pdf<span class="kw">-></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">-></span>SetLeftMargin<span class="kw">(</span>45<span class="kw">);
|
||||
</span>$pdf<span class="kw">-></span>SetFontSize<span class="kw">(</span>14<span class="kw">);
|
||||
</span>$pdf<span class="kw">-></span>WriteHTML<span class="kw">(</span>$html<span class="kw">);
|
||||
</span>$pdf<span class="kw">-></span>Output<span class="kw">();
|
||||
</span>?></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<74>s proche de <a href='../doc/multicell.htm'>MultiCell()</a> ;
|
||||
les diff<66>rences sont les suivantes :
|
||||
<ul>
|
||||
<li>La fin de ligne est au niveau de la marge droite et la ligne suivante commence <20> la marge gauche</li>
|
||||
<li>La position courante se d<>place juste <20> la fin du texte</li>
|
||||
</ul>
|
||||
Elle permet donc d'<27>crire une portion de texte, de modifier la police, puis de reprendre <20> partir
|
||||
de l'endroit o<> on <20>tait rest<73>. Par contre on ne peut plus justifier.
|
||||
<br>
|
||||
<br>
|
||||
La m<>thode est utilis<69>e sur la premi<6D>re page pour mettre un lien pointant sur la seconde. Le
|
||||
d<EFBFBD>but de la phrase est <20>crit en style normal, puis on passe en soulign<67> pour terminer. Le lien
|
||||
est cr<63><72> gr<67>ce <20> la m<>thode <a href='../doc/addlink.htm'>AddLink()</a>, qui renvoie l'identifiant du lien. Cet identifiant
|
||||
est pass<73> en troisi<73>me param<61>tre <20> <span style="white-space:nowrap">Write()</span>. Apr<70>s avoir
|
||||
cr<EFBFBD><EFBFBD> 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<61>tre de <a href='../doc/image.htm'>Image()</a>.
|
||||
<br>
|
||||
<br>
|
||||
Enfin, la marge gauche est d<>plac<61>e apr<70>s l'image gr<67>ce <20> <a href='../doc/setleftmargin.htm'>SetLeftMargin()</a> et du texte au
|
||||
format HTML est imprim<69>. Un parseur HTML tr<74>s simple est utilis<69> pour cela, bas<61> sur les
|
||||
expressions r<>guli<6C>res. Les balises reconnues sont <b>, <i>, <u>, <a>
|
||||
et <br> ; les autres sont ignor<6F>es. Le parseur utilise lui aussi la m<>thode Write(). Le lien externe se pose de la
|
||||
m<EFBFBD>me fa<66>on que l'interne (troisi<73>me param<61>tre de Write()). A noter que <a href='../doc/cell.htm'>Cell()</a> permet
|
||||
<EFBFBD>galement de poser des liens.
|
||||
</body>
|
||||
</html>
|
||||
114
fpdf/tutorial/tuto6.php
Normal file
114
fpdf/tutorial/tuto6.php
Normal file
@ -0,0 +1,114 @@
|
||||
<?php
|
||||
require('../fpdf.php');
|
||||
|
||||
class PDF extends FPDF
|
||||
{
|
||||
protected $B = 0;
|
||||
protected $I = 0;
|
||||
protected $U = 0;
|
||||
protected $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(preg_match('/([^=]*)=["\']?([^"\']*)/',$v,$a3))
|
||||
$attr[strtoupper($a3[1])] = $a3[2];
|
||||
}
|
||||
$this->OpenTag($tag,$attr);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function OpenTag($tag, $attr)
|
||||
{
|
||||
// Balise ouvrante
|
||||
if($tag=='B' || $tag=='I' || $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' || $tag=='I' || $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);
|
||||
}
|
||||
}
|
||||
|
||||
$html = 'Vous pouvez maintenant imprimer facilement du texte m<>langeant diff<66>rents styles : <b>gras</b>,
|
||||
<i>italique</i>, <u>soulign<67></u>, ou <b><i><u>tous <20> la fois</u></i></b> !<br><br>Vous pouvez aussi
|
||||
ins<EFBFBD>rer des liens sous forme textuelle, comme <a href="http://www.fpdf.org">www.fpdf.org</a>, ou bien
|
||||
sous forme d\'image : cliquez sur le logo.';
|
||||
|
||||
$pdf = new PDF();
|
||||
// Premi<6D>re page
|
||||
$pdf->AddPage();
|
||||
$pdf->SetFont('Arial','',20);
|
||||
$pdf->Write(5,'Pour d<>couvrir les nouveaut<75>s de ce tutoriel, cliquez ');
|
||||
$pdf->SetFont('','U');
|
||||
$link = $pdf->AddLink();
|
||||
$pdf->Write(5,'ici',$link);
|
||||
$pdf->SetFont('');
|
||||
// Seconde page
|
||||
$pdf->AddPage();
|
||||
$pdf->SetLink($link);
|
||||
$pdf->Image('logo.png',10,12,30,0,'','http://www.fpdf.org');
|
||||
$pdf->SetLeftMargin(45);
|
||||
$pdf->SetFontSize(14);
|
||||
$pdf->WriteHTML($html);
|
||||
$pdf->Output();
|
||||
?>
|
||||
190
fpdf/tutorial/tuto7.htm
Normal file
190
fpdf/tutorial/tuto7.htm
Normal file
@ -0,0 +1,190 @@
|
||||
<!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<6E>r<EFBFBD>t est que l'on peut <20>galement choisir l'encodage des
|
||||
caract<EFBFBD>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<61> sur le TrueType est support<72> (pas celui bas<61> sur le Type1).<br>
|
||||
Pour les Type1, vous devez poss<73>der le fichier AFM correspondant (il est g<>n<EFBFBD>ralement fourni avec la police).
|
||||
<br>
|
||||
<br>
|
||||
L'ajout d'une police se fait en deux <20>tapes :
|
||||
<ul>
|
||||
<li>G<EFBFBD>n<EFBFBD>ration du fichier de d<>finition de police</li>
|
||||
<li>D<EFBFBD>claration de la police dans le script</li>
|
||||
</ul>
|
||||
|
||||
<h2>G<EFBFBD>n<EFBFBD>ration du fichier de d<>finition de police</h2>
|
||||
La premi<6D>re <20>tape consiste <20> g<>n<EFBFBD>rer un fichier PHP contenant toutes les informations dont FPDF a
|
||||
besoin ; on en profite <20>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 <20> utiliser. Valeur par d<>faut : <code>cp1252</code>.</p>
|
||||
</dd>
|
||||
<dt><code>embed</code></dt>
|
||||
<dd>
|
||||
<p>Indique si la police doit <20>tre incorpor<6F>e ou non. Valeur par d<>faut : <code>true</code>.</p>
|
||||
</dd>
|
||||
<dt><code>subset</code></dt>
|
||||
<dd>
|
||||
<p>Indique si le subsetting doit <20>tre utilis<69>. Valeur par d<>faut : <code>true</code>.</p>
|
||||
</dd>
|
||||
</dl>
|
||||
Le premier param<61>tre est le nom du fichier de police. L'extension doit <20>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<67>ce <20> <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<63>re. Les 128
|
||||
premi<EFBFBD>res sont fixes et correspondent <20> l'ASCII ; les suivantes sont variables. Les encodages sont
|
||||
stock<EFBFBD>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<68>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<68>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<63>res correspondant <20> l'encodage choisi.
|
||||
<br>
|
||||
<br>
|
||||
Le troisi<73>me param<61>tre indique si la police doit <20>tre incorpor<6F>e ou non. Lorsqu'une police
|
||||
n'est pas incorpor<6F>e, elle est recherch<63>e dans le syst<73>me. L'avantage est que le fichier PDF est
|
||||
plus l<>ger ; par contre, si elle n'est pas trouv<75>e, une police de substitution est utilis<69>e. Il
|
||||
vaut donc mieux s'assurer que le syst<73>me qui lit le PDF a bien la police install<6C>e. Pour assurer
|
||||
un rendu correct dans tous les cas, il est fortement recommand<6E> d'incorporer.
|
||||
<br>
|
||||
<br>
|
||||
Le dernier param<61>tre indique si le subsetting doit <20>tre utilis<69>, c'est-<2D>-dire si seuls les
|
||||
caract<EFBFBD>res de l'encodage sp<73>cifi<66> doivent <20>tre conserv<72>s dans la police incorpor<6F>e. Cela
|
||||
permet de r<>duire de mani<6E>re importante la taille du fichier PDF, surtout si la police
|
||||
d'origine <20>tait volumineuse.
|
||||
<br>
|
||||
<br>
|
||||
Apr<EFBFBD>s avoir appel<65> la fonction (cr<63>ez pour cela un nouveau fichier et incluez makefont.php), un
|
||||
fichier .php est cr<63><72>, 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<73> 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 <20>galement le renommer, mais dans ce cas vous devez modifier la
|
||||
variable <code>$file</code> en cons<6E>quence dans le fichier .php.
|
||||
<br>
|
||||
<br>
|
||||
Exemple :
|
||||
<div class="source">
|
||||
<pre><code><?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>?></code></pre>
|
||||
</div>
|
||||
Ce qui donne les fichiers comic.php et comic.z.
|
||||
<br>
|
||||
<br>
|
||||
Vous devez ensuite copier les fichiers g<>n<EFBFBD>r<EFBFBD>s dans le r<>pertoire des polices. Si la police n'a
|
||||
pas pu <20>tre compress<73>e, il faut la copier directement <20> la place de la version compress<73>e.
|
||||
<br>
|
||||
<br>
|
||||
Il est <20>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<EFBFBD>rer les fichiers
|
||||
<a href="http://www.fpdf.org/makefont/">en ligne</a> au lieu de le faire manuellement.
|
||||
|
||||
<h2>D<EFBFBD>claration de la police dans le script</h2>
|
||||
La seconde <20>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">-></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<67>), utilisable comme les
|
||||
autres. Si on avait trait<69> le Comic Sans MS Gras (comicbd.ttf), on aurait mis :
|
||||
<div class="source">
|
||||
<pre><code>$pdf<span class="kw">-></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<69>e est <a href="http://www.abstractfonts.com/font/52" target="_blank">Calligrapher</a>.
|
||||
La premi<6D>re <20>tape consiste <20> g<>n<EFBFBD>rer les fichiers :
|
||||
<div class="source">
|
||||
<pre><code><?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>?></code></pre>
|
||||
</div>
|
||||
L'ex<65>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<63>re euro n'est pas pr<70>sent dans la police (elle est trop ancienne). Un autre caract<63>re manque <20>galement.
|
||||
<br>
|
||||
<br>
|
||||
Nous aurions <20>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<EFBFBD>rateur en ligne.
|
||||
<br>
|
||||
<br>
|
||||
Nous pouvons maintenant copier les deux fichiers g<>n<EFBFBD>r<EFBFBD>s dans le r<>pertoire des polices (font) et <20>crire
|
||||
le script :
|
||||
<div class="source">
|
||||
<pre><code><?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">-></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">-></span>AddPage<span class="kw">();
|
||||
</span>$pdf<span class="kw">-></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">-></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">-></span>Output<span class="kw">();
|
||||
</span>?></code></pre>
|
||||
</div>
|
||||
<p class='demo'><a href='tuto7.php' target='_blank' class='demo'>[D<>mo]</a></p>
|
||||
</body>
|
||||
</html>
|
||||
11
fpdf/tutorial/tuto7.php
Normal file
11
fpdf/tutorial/tuto7.php
Normal file
@ -0,0 +1,11 @@
|
||||
<?php
|
||||
define('FPDF_FONTPATH','.');
|
||||
require('../fpdf.php');
|
||||
|
||||
$pdf = new FPDF();
|
||||
$pdf->AddFont('Calligrapher','','calligra.php');
|
||||
$pdf->AddPage();
|
||||
$pdf->SetFont('Calligrapher','',35);
|
||||
$pdf->Cell(0,10,'Changez de police avec FPDF !');
|
||||
$pdf->Output();
|
||||
?>
|
||||
Reference in New Issue
Block a user