<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Roms BLOG &#187; open source</title>
	<atom:link href="http://www.romainbourdon.com/index.php/category/open-source/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.romainbourdon.com</link>
	<description>PHP, pensées et humeurs de Romain Bourdon</description>
	<lastBuildDate>Wed, 27 Oct 2021 09:41:31 +0000</lastBuildDate>
	<language>fr-FR</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=3.9.40</generator>
	<item>
		<title>De l&#8217;utilisation de Clonezilla</title>
		<link>http://www.romainbourdon.com/index.php/2014/06/05/de-lutilisation-de-clonezilla/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=de-lutilisation-de-clonezilla</link>
		<comments>http://www.romainbourdon.com/index.php/2014/06/05/de-lutilisation-de-clonezilla/#comments</comments>
		<pubDate>Thu, 05 Jun 2014 11:15:18 +0000</pubDate>
		<dc:creator><![CDATA[Roms]]></dc:creator>
				<category><![CDATA[divers]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[technologie]]></category>

		<guid isPermaLink="false">http://www.romainbourdon.com/?p=581</guid>
		<description><![CDATA[Deux articles intéressants sur l&#8217;utilisation de CloneZilla viennent d&#8217;être publiés sur le blog de la société AlliaForm. Pour rappel, clonezilla est une distribution linux permettant de gérer la sauvegarde / restauration de disques ou de partitions sous la forme d&#8217;images. voici les liens vers les deux articles : http://www.alliaform.fr/clonezilla-gestion-image-ordinateurs-salle-formation http://www.alliaform.fr/personnaliser-clonezilla Bonne lecture!]]></description>
				<content:encoded><![CDATA[<p>Deux articles intéressants sur l&rsquo;utilisation de CloneZilla viennent d&rsquo;être publiés sur le blog de la société AlliaForm. Pour rappel, clonezilla est une distribution linux permettant de gérer la sauvegarde / restauration de disques ou de partitions sous la forme d&rsquo;images.</p>
<p>voici les liens vers les deux articles :</p>
<p><a href="http://www.alliaform.fr/clonezilla-gestion-image-ordinateurs-salle-formation">http://www.alliaform.fr/clonezilla-gestion-image-ordinateurs-salle-formation</a></p>
<p><a href="http://www.alliaform.fr/personnaliser-clonezilla">http://www.alliaform.fr/personnaliser-clonezilla</a></p>
<p>Bonne lecture!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.romainbourdon.com/index.php/2014/06/05/de-lutilisation-de-clonezilla/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Soirée PHP exceptionnelle à Bordeaux le 4 Juin</title>
		<link>http://www.romainbourdon.com/index.php/2012/05/23/soiree-php-exceptionnelle-a-bordeaux-le-4-juin/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=soiree-php-exceptionnelle-a-bordeaux-le-4-juin</link>
		<comments>http://www.romainbourdon.com/index.php/2012/05/23/soiree-php-exceptionnelle-a-bordeaux-le-4-juin/#comments</comments>
		<pubDate>Wed, 23 May 2012 21:49:44 +0000</pubDate>
		<dc:creator><![CDATA[Roms]]></dc:creator>
				<category><![CDATA[Communauté]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[PUG Bordeaux]]></category>

		<guid isPermaLink="false">http://www.romainbourdon.com/?p=537</guid>
		<description><![CDATA[A l&#8217;occasion du Forum PHP 2012, EPITECH Bordeaux et le Php User Group de Bordeaux s&#8217;associent pour vous proposer une soirée exceptionnelle de conférences gratuites le lundi 4 Juin à partir du 18h00. IMPORTANT : Entrée gratuite sur inscription : http://www.eventbrite.fr/event/3605729835 Au programme : Eric COLINET &#8211; Industrialisation PHP chez Orange Le nombre d&#8217;applications d&#8217;importance écrites en PHP n&#8217;a [&#8230;]]]></description>
				<content:encoded><![CDATA[<p style="text-align: left;">A l&rsquo;occasion du Forum PHP 2012, <a title="Epitech Bordeaux" href="http://www.epitech.eu/ecole-informatique-bordeaux-aquitaine/">EPITECH Bordeaux</a> et le <a title="PUG Bordeaux" href="http://bordeauxpug.org/">Php User Group de Bordeaux</a> s&rsquo;associent pour vous proposer une soirée exceptionnelle de conférences gratuites le lundi 4 Juin à partir du 18h00.</p>
<p style="text-align: left;">IMPORTANT : Entrée gratuite sur inscription : <a href="http://www.eventbrite.fr/event/3605729835">http://www.eventbrite.fr/event/3605729835</a></p>
<p style="text-align: left;">Au programme :</p>
<div style="text-align: left;">
<div><strong>Eric COLINET &#8211; Industrialisation PHP chez Orange</strong></div>
<div>Le nombre d&rsquo;applications d&rsquo;importance écrites en PHP n&rsquo;a cessé d&rsquo;augmenter au sein de chez Orange (plus de 600). Aujourd&rsquo;hui des entités internes de développement sont dédiées au développement de projets PHP, le groupe a donc dû s&rsquo;adapter et mettre en place des procédures d&rsquo;industrialisation prenant en compte l&rsquo;historique de cette filière issue d&rsquo;applications développées sur un coin de table.</div>
<div>Dans cette présentation nous verrons ce que le Centre de Compétences PHP apporte à l&rsquo;industrialisation de cette filière afin de garantir un bon niveau de qualité et de performance dans un contexte humain et technique complexe et varié.</div>
<div>Nous verrons les divers problèmes rencontrés lors de l&rsquo;adaptation des pratiques et habitudes de chacun afin que ce cheminement se passe dans les meilleures conditions.</div>
</div>
<p style="text-align: left;"><strong>Rasmus LERDORF &#8211; état de l&rsquo;art de PHP en 2012</strong></p>
<p style="text-align: left;">Rasmus Lerdorf, créateur de la plateforme  PHP, dressera l’  « Etat de l’art de PHP en 2012 » à la veille du forum PHP organisé par l’AFUP à Paris.</p>
<p style="text-align: left;">Cette conférence en anglais sera retransmise en direct depuis Paris dans le grand amphi d&rsquo;Epitech Bordeaux.</p>
<p style="text-align: left;">Ces deux conférences seront suivis d&rsquo;un cocktail permettant d&rsquo;échanger entre professionnels du secteur dans le cadre agréable du campus technologique d&rsquo;Epitech Bordeaux.</p>
<p style="text-align: left;">IMPORTANT : Entrée gratuite sur inscription : <a href="http://www.eventbrite.fr/event/3605729835">http://www.eventbrite.fr/event/3605729835</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.romainbourdon.com/index.php/2012/05/23/soiree-php-exceptionnelle-a-bordeaux-le-4-juin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apéro PHP à Bordeaux lundi 20 Février</title>
		<link>http://www.romainbourdon.com/index.php/2012/02/17/apero-php-a-bordeaux-lundi-20-fevrier/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=apero-php-a-bordeaux-lundi-20-fevrier</link>
		<comments>http://www.romainbourdon.com/index.php/2012/02/17/apero-php-a-bordeaux-lundi-20-fevrier/#comments</comments>
		<pubDate>Fri, 17 Feb 2012 17:35:53 +0000</pubDate>
		<dc:creator><![CDATA[Roms]]></dc:creator>
				<category><![CDATA[Communauté]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[perso]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[PUG Bordeaux]]></category>
		<category><![CDATA[apéro PHP]]></category>

		<guid isPermaLink="false">http://www.romainbourdon.com/?p=533</guid>
		<description><![CDATA[Le PUG Bordeaux organise un nouvel apéro PHP au bar &#171;&#160;La Cassolette&#160;&#187; ce lundi 20 Février à partir de 19h. Au programme : création de l&#8217;antenne locale de l&#8217;AFUP préparation du premier Dojo PHP des bières et de la bonne humeur Venez nombreux, moi j&#8217;y serais avec quelques goodies PHP à distribuer aux plus vaillants [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Le PUG Bordeaux organise un nouvel apéro PHP au bar &laquo;&nbsp;La Cassolette&nbsp;&raquo; ce lundi 20 Février à partir de 19h.</p>
<p>Au programme :</p>
<ul>
<li>création de l&rsquo;antenne locale de l&rsquo;AFUP</li>
<li>préparation du premier Dojo PHP</li>
<li>des bières et de la bonne humeur</li>
</ul>
<p>Venez nombreux, moi j&rsquo;y serais avec quelques goodies PHP à distribuer aux plus vaillants (stickers PHP et Elephpants, tours de cou,etc.. glanés lors de diverses conférences).</p>
<p>&nbsp;</p>
<p>Plus d&rsquo;infos sur le site du PUG : <a href="http://bordeauxpug.org/">http://bordeauxpug.org/</a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.romainbourdon.com/index.php/2012/02/17/apero-php-a-bordeaux-lundi-20-fevrier/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>C&#8217;est parti pour le forum PHP 2012</title>
		<link>http://www.romainbourdon.com/index.php/2012/01/17/cest-parti-pour-le-forum-php-2012/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=cest-parti-pour-le-forum-php-2012</link>
		<comments>http://www.romainbourdon.com/index.php/2012/01/17/cest-parti-pour-le-forum-php-2012/#comments</comments>
		<pubDate>Tue, 17 Jan 2012 16:06:00 +0000</pubDate>
		<dc:creator><![CDATA[Roms]]></dc:creator>
				<category><![CDATA[Communauté]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Afup]]></category>
		<category><![CDATA[forum PHP]]></category>

		<guid isPermaLink="false">http://www.romainbourdon.com/?p=520</guid>
		<description><![CDATA[Le Forum PHP 2012 organisé tous les ans par l&#8217;AFUP vient d&#8217;être annoncé! L&#8217;édition de cette année qui se déroulera les 5 et 6 Juin à la cité Universitaire Internationale aura pour thèmes &#171;&#160;la performance, la qualité et les nouveaux usages&#160;&#187;. Pour ceux qui souhaitent y participer en tant que speaker, l&#8217;appel à conférencier est [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Le <a title="Forum PHP 2012" href="http://www.afup.org/pages/forumphp2012/" target="_blank">Forum PHP 2012</a> organisé tous les ans par l&rsquo;AFUP vient d&rsquo;être annoncé!</p>
<p>L&rsquo;édition de cette année qui se déroulera les 5 et 6 Juin à la cité Universitaire Internationale aura pour thèmes &laquo;&nbsp;la performance, la qualité et les nouveaux usages&nbsp;&raquo;.</p>
<p>Pour ceux qui souhaitent y participer en tant que speaker, l&rsquo;appel à conférencier est ouvert jusqu&rsquo;au 29 février 2012 à cette adresse :</p>
<p><a title="Appel à conférencier du forum PHP 2012" href="http://www.afup.org/pages/forumphp2012/appel-a-conferenciers.php" target="_blank">http://www.afup.org/pages/forumphp2012/appel-a-conferenciers.php</a></p>
<p>&nbsp;</p>
<p>Maintenant organisé en alternance avec le PHP Tour, le Forum PHP quitte la période hivernale pour se dérouler dans un climat plus agréable et donc plus propice aux apéros <img src="http://www.romainbourdon.com/wp-includes/images/smilies/icon_wink.gif" alt=";-)" class="wp-smiley" /> </p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.romainbourdon.com/index.php/2012/01/17/cest-parti-pour-le-forum-php-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Free refond son site mobile en utilisant la méthodologie &#171;&#160;La Rache&#160;&#187;</title>
		<link>http://www.romainbourdon.com/index.php/2012/01/12/free-refond-son-site-mobile-en-utilisant-la-methodologie-la-rache/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=free-refond-son-site-mobile-en-utilisant-la-methodologie-la-rache</link>
		<comments>http://www.romainbourdon.com/index.php/2012/01/12/free-refond-son-site-mobile-en-utilisant-la-methodologie-la-rache/#comments</comments>
		<pubDate>Thu, 12 Jan 2012 08:36:34 +0000</pubDate>
		<dc:creator><![CDATA[Roms]]></dc:creator>
				<category><![CDATA[divers]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.romainbourdon.com/?p=501</guid>
		<description><![CDATA[Comme annoncé hier, free est en train de refondre son site http://mobile.free.fr afin de supporter la charge induite par leur annonce de forfait tout compris à 15,99€. JSP ne tenait pas le coup, qu&#8217;à cela ne tienne, on passe à PHP. Les services sont montés et remis en ligne au fur et à mesure. Hier nous [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Comme <a title="Surchargé, Free passe le site sur son offre mobile de Jsp vers PHP dans la nuit" href="http://www.romainbourdon.com/index.php/2012/01/11/surcharge-free-passe-le-site-sur-son-offre-mobile-de-jsp-vers-php-dans-la-nuit/" target="_blank">annoncé hier</a>, free est en train de refondre son site <a href="http://mobile.free.fr">http://mobile.free.fr</a> afin de supporter la charge induite par leur annonce de forfait tout compris à 15,99€. JSP ne tenait pas le coup, qu&rsquo;à cela ne tienne, on passe à PHP.</p>
<p>Les services sont montés et remis en ligne au fur et à mesure. Hier nous avons d&rsquo;abord eu droit à la partie inscription pour les freenautes avec son lot de bugs notamment dans la validation des ribs (relevés d&rsquo;identités bancaires) ce qui a rendu<a href="http://forum.freenews.fr/viewtopic.php?id=74721" target="_blank"> un paquet de monde hystérique</a> au point de chercher des solutions pour générer de faux ribs permettant de valider leur inscription.</p>
<p>Ce matin c&rsquo;est la partie inscription pour les non freenautes qui a été mise en ligne. Espérons que cela se déroule mieux pour eux.</p>
<p>En tout cas, ces mises en ligne nous permettent de comprendre un peu mieux comment fonctionnent les équipes de développement de Free. Si vous allez faire un tour sur la partie <a href="https://mobile.free.fr/subscribea/n_coordonnees.php?offre=n_illimite" target="_blank">inscription pour les non frenautes</a> (rapidement, car j&rsquo;imagine que ce bug va vite disparaître), vous pourrez voir que le lien, en haut de page qui mène vers la section &laquo;&nbsp;Espace abonné&nbsp;&raquo; pointe en fait vers http://localhost:8080/moncompte/.</p>
<p>Quoi? Pas de tests chez Free? Du développement en local qui semble directement passer en production sans passer par un serveur de dev. ou de pré-prod?</p>
<p>Tout cela ressemble bien à la méthodologie <a href="http://www.risacher.com/la-rache/index.php?z=2" target="_blank">&laquo;&nbsp;La Rache&nbsp;&raquo;</a> qui permet de produire vite mais sans trop s&rsquo;attarder sur la qualité du code <img src="http://www.romainbourdon.com/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /> </p>
<p>Ceci dit, et étant donné, d&rsquo;une part, le contexte dans lequel ce site est redéveloppé et, d&rsquo;autre part, la simplicité du code à produire, je crois que la décision peut se justifier.</p>
<p>J&rsquo;en déduis également que la prochaine étape sera donc la remise en ligne de la partie &laquo;&nbsp;abonnés&nbsp;&raquo;.  Les premiers isncrits pourront  enfin valider que la procédure a bien été prise en compte correctement.</p>
<p>Quoi qu&rsquo;il en soit, et en toute franchise, je tire mon chapeau à Free qui a pris un décision difficile (refonte du site) en un temps record et qui est pas loin de gagner son pari!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.romainbourdon.com/index.php/2012/01/12/free-refond-son-site-mobile-en-utilisant-la-methodologie-la-rache/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Surchargé, Free passe le site sur son offre mobile de Jsp vers PHP dans la nuit</title>
		<link>http://www.romainbourdon.com/index.php/2012/01/11/surcharge-free-passe-le-site-sur-son-offre-mobile-de-jsp-vers-php-dans-la-nuit/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=surcharge-free-passe-le-site-sur-son-offre-mobile-de-jsp-vers-php-dans-la-nuit</link>
		<comments>http://www.romainbourdon.com/index.php/2012/01/11/surcharge-free-passe-le-site-sur-son-offre-mobile-de-jsp-vers-php-dans-la-nuit/#comments</comments>
		<pubDate>Wed, 11 Jan 2012 13:43:41 +0000</pubDate>
		<dc:creator><![CDATA[Roms]]></dc:creator>
				<category><![CDATA[open source]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.romainbourdon.com/?p=497</guid>
		<description><![CDATA[Face à la surcharge de son site mobile et son incapacité à remonter la platforme, Free a migré le site de JSP vers PHP dans la nuit. Apparemment, seule la partie réservée aux personnes déjà abonnées à la Freebox a été mise en ligne, les autres parties du site devraient arriver au fur et à [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Face à la surcharge de son site mobile et son incapacité à remonter la platforme, Free a migré le site de JSP vers PHP dans la nuit.<br />
Apparemment, seule la partie réservée aux personnes déjà abonnées à la Freebox a été mise en ligne, les autres parties du site devraient arriver au fur et à mesure.</p>
<p>Encore un preuve de la haute performance et du Time To Market record de notre langage préféré!</p>
<p>Plus de détails :</p>
<p><a href="http://www.journaldugeek.com/2012/01/11/free-mobile-24-heures-apres-refait-son-site/">http://www.journaldugeek.com/2012/01/11/free-mobile-24-heures-apres-refait-son-site/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.romainbourdon.com/index.php/2012/01/11/surcharge-free-passe-le-site-sur-son-offre-mobile-de-jsp-vers-php-dans-la-nuit/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>créer un sommaire avec liens en utilisant FPDF</title>
		<link>http://www.romainbourdon.com/index.php/2011/12/18/creer-un-sommaire-avec-liens-en-utilisant-fpdf/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=creer-un-sommaire-avec-liens-en-utilisant-fpdf</link>
		<comments>http://www.romainbourdon.com/index.php/2011/12/18/creer-un-sommaire-avec-liens-en-utilisant-fpdf/#comments</comments>
		<pubDate>Sun, 18 Dec 2011 11:15:54 +0000</pubDate>
		<dc:creator><![CDATA[Roms]]></dc:creator>
				<category><![CDATA[divers]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[technologie]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[FPDF]]></category>
		<category><![CDATA[FPDI]]></category>
		<category><![CDATA[liens]]></category>
		<category><![CDATA[sommaire]]></category>

		<guid isPermaLink="false">http://www.romainbourdon.com/?p=478</guid>
		<description><![CDATA[&#160; Dernier volet de mes tutoriels sur l&#8217;utilisation de FPDF avec PHP, nous allons voir aujourd&#8217;hui comment générer un sommaire avec des liens dans un document PDF. FPDF propose nativement des méthodes pour générer des liens internes dans un  document : &#160; addlink() qui créé un lien et retourne son identifiant. Pour le moment, notre [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>&nbsp;</p>
<p>Dernier volet de mes tutoriels sur l&rsquo;utilisation de FPDF avec PHP, nous allons voir aujourd&rsquo;hui comment générer un sommaire avec des liens dans un document PDF.</p>
<p>FPDF propose nativement des méthodes pour générer des liens internes dans un  document :</p>
<p> &nbsp;</p>
<ul>
<li>addlink() qui créé un lien et retourne son identifiant. Pour le moment, notre lien n&rsquo;est qu&rsquo;une ressource, il va maintenant falloir l&rsquo;associer à un texte et ensuite préciser où ce lien doit pointer. Pour cela, il faut utiliser par exemple, la méthode cell() (qui permet d&rsquo;écrire du texte) en lui passant en paramètre  l&rsquo;identifiant du lien.</li>
</ul>
<p> &nbsp;</p>
<ul>
<li>SetLink() va enfin nous permettre de préciser la destination du lien. Nous l&rsquo;utiliserons sur la page où le lien doit pointer</li>
</ul>
<p> &nbsp;</p>
<div>Le mode de fonctionnement de FPDF nous impose de créer les page les unes après les autres. Une fois une page créé, il n&rsquo;est pas possible de revenir dessus. Il devient donc évident que, dans le cadre d&rsquo;un sommaire, nous allons d&rsquo;abord devoir créer tous les liens (un par entrée de notre sommaire), puis, page par page, assigner la destination de ces liens.</div>
<div>La première étape va donc consister a créer un conteneur pour stocker tous nos liens. Nous allons donc ajouter un nouvel attribut, en l&rsquo;occurrence un tableau, à notre classe FPDF :</div>
<div>
<pre class="brush: css; title: ; notranslate">
class myfpdf extends fpdf {
    public $myLinks = array();
}
</pre>
<p>Au moment de générer notre sommaire, nous allons créer les liens et les ajouter, un par un à notre tableau. Voici un exemple de code à adapter à votre document :</p>
<pre class="brush: css; title: ; notranslate">
&lt;?php
...
//le numéro de la page
$numPage = 1;

//le titre de la page
$titrePage = 'première page';

//on créé un lien
$fpdi-&gt;myLinks[$numPage] = $fpdi-&gt;addLink();

// on écrit le nom de la page et on y associe le lien
$fpdi-&gt;cell(185,5,$titrePage,0,0,'L',$fpdi-&gt;myLinks[$numPage];

//on écrit le numéro de la page
$fpdi-&gt;cell(5,5,$numPage,0,2,'R',TRUE);

?&gt;
</pre>
<p>Cette opération doit être renouvelée pour chaque ligne apparaissant dans notre sommaire, le plus simple est donc de boucler dessus.</p>
<p>Voilà, nous avons écrit notre sommaire, il va maintenant falloir associer les bonnes pages aux liens.<br />
La solution basique serait de le faire manuellement dans notre code à chaque création de page.<br />
Mais comme un bon développeur est un développeur feignant, nous allons plutôt réécrire la méthode addPage() de FPDF afin d&rsquo;automatiser l&rsquo;action et que cela se fasse tout seul par la suite dans notre document :</p>
<pre class="brush: css; title: ; notranslate">
&lt;?php
class myfpdf extends fpdf {
    public $myLinks = array();

    public function addPage() {
        //on génère la page en appelant la méthode 
        //parente addPage()
        parent::addPage();

        // si un lien existe pour ce numéro de page, 
        //on l'associe à la page
        $page = $this-&gt;pageNo();
        if (isset($this-&gt;myLinks[$page])) {
            $this-&gt;setLink($this-&gt;myLink[$page]);
        }
    }

}
?&gt;
</pre>
<p>Voilà, à chaque nouvelle page, si un lien y est associé, il sera automatiquement ajouté.</p>
<p>&nbsp;</p>
<p>Si vous souhaitez voir le résultat, vous pouvez aller consulter <a href="http://www.alliaform.fr">le catalogue de formations d&rsquo;AlliaForm</a>, en bas à gauche du menu.</p>
<p>&nbsp;</p>
<p>Le document est entièrement généré en PHP avec FPDI ( la version que vous y verrez est un version statique en cache, je ne le génère qu&rsquo;une seule fois lorsque des modifications y sont apportées).</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.romainbourdon.com/index.php/2011/12/18/creer-un-sommaire-avec-liens-en-utilisant-fpdf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>numéros de page intelligents avec FPDI / FPDF</title>
		<link>http://www.romainbourdon.com/index.php/2011/12/17/numeros-de-page-intelligents-avec-fpdi-fpdf/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=numeros-de-page-intelligents-avec-fpdi-fpdf</link>
		<comments>http://www.romainbourdon.com/index.php/2011/12/17/numeros-de-page-intelligents-avec-fpdi-fpdf/#comments</comments>
		<pubDate>Sat, 17 Dec 2011 10:21:46 +0000</pubDate>
		<dc:creator><![CDATA[Roms]]></dc:creator>
				<category><![CDATA[open source]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.romainbourdon.com/?p=457</guid>
		<description><![CDATA[Dans la continuité de l&#8217;article précédent, voici un petit tutoriel pour intégrer des numéros de page intelligents dans vos documents PDF générés par FPDF ou FPDI en PHP. Avec FPDF, l&#8217;insertion des numéros de pages passe par la réécriture de la méthode footer() (qui est appelée à chaque création de nouvelle page) et l&#8217;utilisation de [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Dans la continuité de l&rsquo;article précédent, voici un petit tutoriel pour intégrer des numéros de page intelligents dans vos documents PDF générés par FPDF ou FPDI en PHP.</p>
<p>Avec FPDF, l&rsquo;insertion des numéros de pages passe par la réécriture de la méthode footer() (qui est appelée à chaque création de nouvelle page) et l&rsquo;utilisation de la méthode pageNo() qui renvoie le numéro de la page courante.</p>
<p>Typiquement :</p>
<pre class="brush: css; title: ; notranslate">
public function Footer() {
    // Positionnement à 1,5 cm du bas
    $this-&gt;SetY(-15);
    // Police Arial italique 8
    $this-&gt;SetFont('Arial','I',8);
    // Numéro de page
    $page = $this-&gt;PageNo();
    $this-&gt;Cell(0,10,$page,0,0,$pos);
}
</pre>
<p>Mais, si cette solution est suffisante pour des documents de base, la construction d&rsquo;un document chiadé demande souvent des fonctionnalités supplémentaires :</p>
<ul>
<li>possibilité de commencer la numérotation sur la deuxième ou troisième page (pas sur la couverture) et donc de décaller les numéros des pages</li>
<li>afficher le numéro de page dans le coin et donc le mettre à droite sur les pages paires et à gauche sur les pages impaires (ou vice-versa selon la page où vous commencez la numérotation)</li>
</ul>
<p>Voici donc une version un peu plus évolué de la méthode footer() qui intègre ces fonctionnalités :</p>
<pre class="brush: css; title: ; notranslate">
class myfpdi extends fpdi {
    public $addPageNum = false;
    public $decalage = 2;

    public function Footer() {
        // Positionnement à 1,5 cm du bas
        $this-&gt;SetY(-15);
        // Police Arial italique 8
        $this-&gt;SetFont('Arial','I',8);
        // Numéro de page
        if ($this-&gt;addPageNum ==  true) {
            $page = $this-&gt;PageNo() - $this-&gt;decalage;
            if ($page % 2)
                $pos = 'R';
            else
                $pos = 'L';
            $this-&gt;Cell(0,10,$page,0,0,$pos);
        }
    }
...
</pre>
<p><strong>Quelques explications</strong></p>
<p>L&rsquo;attribut $addPageNum est un booléen qui permet de dire si on doit afficher le numéro de page ou non (true ou false). A vous de lui donner la valeur souhaitée avant de faire appel à la méthode addPage();</p>
<p>L&rsquo;attribut $decalage permet d&rsquo;introduire un décalage dans la numérotation. Par exemple, si il vaut 2, la page 3 du document aura le numéro 1 d&rsquo;affiché.</p>
<p>Enfin le test  ($page % 2) ajoute l&rsquo;alternance d&rsquo;affichage à gauche et à droite. Inversez $pos = &lsquo;L&rsquo;; et $pos = &lsquo;R&rsquo;; si le sens ne vous convient pas.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.romainbourdon.com/index.php/2011/12/17/numeros-de-page-intelligents-avec-fpdi-fpdf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Template PDF par défaut avec FPDI</title>
		<link>http://www.romainbourdon.com/index.php/2011/12/16/template-pdf-par-defaut-avec-fpdi/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=template-pdf-par-defaut-avec-fpdi</link>
		<comments>http://www.romainbourdon.com/index.php/2011/12/16/template-pdf-par-defaut-avec-fpdi/#comments</comments>
		<pubDate>Fri, 16 Dec 2011 07:56:03 +0000</pubDate>
		<dc:creator><![CDATA[Roms]]></dc:creator>
				<category><![CDATA[AlliaForm]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[FPDI]]></category>
		<category><![CDATA[template]]></category>

		<guid isPermaLink="false">http://www.romainbourdon.com/?p=442</guid>
		<description><![CDATA[Dans le cadre de la création automatique du catalogue de formations PDF de AlliaForm, j&#8217;ai utilisé FPDI une classe dérivée de FPDF permettant d&#8217;importer des templates (modèles) de PDF. FPDI est très pratique, on ouvre un fichier PDF existant, on importe une page et on s&#8217;en sert comme modele pour générer un nouveau PDF. Seulement, j&#8217;ai [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Dans le cadre de la création automatique du <a title="Catalogue de formations AlliaForm" href="http://www.alliaform.fr/catalogue/catalogue_formations_alliaform.pdf" target="_blank">catalogue de formations PDF</a> de AlliaForm, j&rsquo;ai utilisé <a href="http://www.setasign.de/products/pdf-php-solutions/fpdi/" target="_blank">FPDI</a> une classe dérivée de FPDF permettant d&rsquo;importer des templates (modèles) de PDF.<br />
FPDI est très pratique, on ouvre un fichier PDF existant, on importe une page et on s&rsquo;en sert comme modele pour générer un nouveau PDF.</p>
<p>Seulement, j&rsquo;ai rapidement rencontré un problème : si j&rsquo;assigne un modele à un page, que j&rsquo;écris un long texte dessus et que ce texte passe sur une page suivante (ce qui se fait automatiquement avec la méthode multicell()), la page suivante n&rsquo;utilisera pas le modèle, elle sera générée à partir d&rsquo;une feuille blanche.</p>
<p>J&rsquo;ai bien sûr sorti la doc de FPDI, googlé pour trouver une solution rapide, mais la seule réponse que j&rsquo;ai trouvé est &laquo;&nbsp;ce n&rsquo;est pas possible avec FPDI&nbsp;&raquo;.</p>
<p>Je vous livre donc la solution (très simple) que j&rsquo;ai implémentée.</p>
<p>Il suffit de dériver la classe FPDI et plus exactement, la méthode addPage() qui s&rsquo;occupe d&rsquo;ajouter une nouvelle page au document PDF pour y ajouter la fonctionnalité.</p>
<pre class="brush: css; title: ; notranslate">
class myfpdi extends fpdi {

 public $defaultModele;

 public function AddPage() {
  parent::AddPage();
  if ($this-&gt;defaultModele != '') {
   $this-&gt;setSourceFile($this-&gt;defaultModele);
   $tplidx = $this-&gt;ImportPage(1);
   $this-&gt;useTemplate($tplidx);
  }
 }
}

</pre>
<p>On commence par appeler la méthode parente afin de ré-implémener le fonctionnement initial de addPAge(), puis on on lui assigne notre modèle par défaut qui se trouve dans le nouvel attribut $defaultModele.</p>
<p>De là je n&rsquo;ai plus qu&rsquo;à instancier un objet de type myfpdi() et lui assigner un fichier PDF par défaut dans l&rsquo;attribut $defaultModele avant de créer de nouvelles pages :</p>
<pre class="brush: css; title: ; notranslate">
$pdf = new myfpdi();
$pdf-&gt;defaultModele = 'fichier.pdf';
$pdf-&gt;addPage();
...
$pdf-&gt;ouput();
</pre>
<p>A chaque fois qu&rsquo;une nouvelle page va être créée, la méthode addPage sera appelée et $defaultModele sera utilisé comme modèle par défaut.</p>
<p>Si à un moment dans mon PDF, je souhaite utiliser un autre modèle, il me suffira de changer la valeur de $defaultModele et si je ne veux plus de modèle, je passe sa valeur à &lsquo; &lsquo; (chaîne vide).</p>
<p>Bien sûr, dans un souci de lisibilité, le code présenté ci-dessus va au plus simple, tout cela est perfectible (accesseurs, test d&rsquo;existence du fichier pdf, etc&#8230;)<br />
<strong><br />
</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.romainbourdon.com/index.php/2011/12/16/template-pdf-par-defaut-avec-fpdi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>pré-lancement de waDaWeDo!</title>
		<link>http://www.romainbourdon.com/index.php/2011/05/04/pre-lancement-de-wadawedo/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=pre-lancement-de-wadawedo</link>
		<comments>http://www.romainbourdon.com/index.php/2011/05/04/pre-lancement-de-wadawedo/#comments</comments>
		<pubDate>Wed, 04 May 2011 13:36:31 +0000</pubDate>
		<dc:creator><![CDATA[Roms]]></dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Communauté]]></category>
		<category><![CDATA[divers]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[perso]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[technologie]]></category>
		<category><![CDATA[waDaWeDo]]></category>

		<guid isPermaLink="false">http://www.romainbourdon.com/?p=414</guid>
		<description><![CDATA[Voilà, après plusieurs mois de travail et d&#8217;enfermement chez moi, le grand jour de la mise en ligne de waDaWeDo est enfin arrivé. http://www.wadawedo.com waDaWeDo est une application de partage d&#8217;agenda et d&#8217;événements sur Facebook. waDaWeDo permet de : - Créer des événements évolués et les partager avec vos amis ou le monde entier - [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Voilà,<br />
après plusieurs mois de travail et d&rsquo;enfermement chez moi, le grand jour de la mise en ligne de <a href="http://www.wadawedo.com">waDaWeDo</a> est enfin arrivé.</p>
<p><img src="http://www.romainbourdon.com/wp-content/uploads/2011/05/203612_187781421257785_3319070_n.jpg" alt="203612_187781421257785_3319070_n" title="203612_187781421257785_3319070_n" width="200" height="146" class="alignnone size-full wp-image-415" /><br />
<a href="http://www.wadawedo.com">http://www.wadawedo.com</a></p>
<p><a href="http://www.wadawedo.com">waDaWeDo</a> est une application de partage d&rsquo;agenda et d&rsquo;événements sur Facebook. <a href="http://www.wadawedo.com">waDaWeDo</a> permet de :</p>
<p>- Créer des événements évolués et les partager avec vos amis ou le monde entier<br />
- Gérer votre agenda personnel grâce aux événements privés<br />
- Consulter l&rsquo;agenda public de vos amis et commenter ou rejoindre leur événements<br />
- Trouver des événements publics proche de chez vous et les rejoindre<br />
- &#8230;</p>
<p><a href="http://www.wadawedo.com">waDaWeDo</a> est accessible de 2 façons. Via sa page principale <a href="http://www.wadawedo.com">http://www.wadawedo.com </a>mais également sous forme d&rsquo;application Facebook <a href="http://apps.facebook.com/wadawedo/">http://apps.facebook.com/wadawedo/</a></p>
<p>Bien sûr, l&rsquo;accès à <a href="http://www.wadawedo.com">waDaWeDo</a> est entièrement gratuit.</p>
<p>Au niveau technique, <a href="http://www.wadawedo.com">waDaWeDo</a> repose sur trois technologies. Bien sûr, du PHP (sans framework) et du MySQL, avec une architecture adaptée à Facebook.<br />
Mais, grande nouveauté pour moi, tout le &lsquo;front&rsquo; repose sur du jQuery ce qui permet de limiter la charge côté serveur à de simples appels de données. </p>
<p>Je vous invite à aller l&rsquo;essayer et à me faire vos retours.</p>
<p>Ha oui, pour finir, je vais revenir au début de cet article, plus exactement au titre où je parle de &lsquo;pré-lancement&rsquo;. J&rsquo;ai décidé de regarder comment la plateforme réagissait avant de considérer que nous étions dans une phase de lancement officiel.<br />
Ceci dit, il ne faut surtout pas que ça vous empêche d&rsquo;en parler autour de vous, bien au contraire. je compte, dans un premier temps, sur le bouche à oreille pour la faire connaître, alors n’hésitez pas à bloguer, twitter, Facebooker, mailer&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.romainbourdon.com/index.php/2011/05/04/pre-lancement-de-wadawedo/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
