Archive pour la catégorie ‘Monde réel’

La gestion d’un RIB ou d’un IBAN en PHP

On va se sortir un peu la tête du dossier Word et docx le temps d’un petit article pour discuter d’un grand classique, la gestion d’un RIB, d’un IBAN, bref d’un compte en banque, en PHP. On va tout de suite dire de quoi il ne s’agit pas : il ne s’agit pas d’un bête CRUD dans lequel on enregistre les différents champs et on n’en fait rien, pas besoin d’un article pour ça. Non, ce qu’on va faire, c’est enregistrer les informations RIB ou IBAN, en validant ces infos dans la foulée (grâce à la célèbre clé RIB) et en nous conformant aux spécifications liées à ce format très standard et très normalisé (donc très courant) d’information. Au final, on aura un petit package facile à emporter avec nous sur d’autres projets.

Lire la suite de cette entrée »

Générer un document Word docx en PHP, comprendre le répertoire word

Bon, promis, c’est le dernier article purement verbeux du dossier avant d’attaquer le code à proprement parler et, tout autant promis, je ne vous ferai pas attendre des plombes avant le prochain numéro. On va aujourd’hui se consacrer au contenu du répertoire word/ qu’on trouve dans un fichier .docx, on va voir ce qui sert à quoi et, notamment, ce qu’on devra par la suite recomposer from scratch (ou non).

Lire la suite de cette entrée »

Générer un document word en PHP, pour de vrai

Nous voici arrivés au bout du chemin, au commencement…d’un nouveau chemin (et un long !). Nous avons vu comment faire une génération de documents Word à partir de modèles, nous avons vu comment insérer des images, nous pouvons de même créer des tableaux, souligner, mettre des entêtes, des pied-de-pages, etc. Il est maintenant grand temps d’avancer et de créer, pour de vrai, from scratch, des documents Word modernes, au format docx (donc notamment compatibles avec Apple Pages et OpenOffice Write).

Lire la suite de cette entrée »

Insérer une image dans un fichier Word généré

Nous y voilà ! Jusqu’à maintenant, on s’est bien amusé, mais on n’a pas encore fait grand chose… Du simple rechercher/remplacer, en fait; on a profité du fait que, avec l’ouverture des fichiers Word au format XML, le contenu des fichiers Word est devenu complètement lisible. Bon, ok, ce n’est pas tout à fait vrai, il a fallu jongler un peu avec les tableaux…

Mais là, vous allez voir ce que vous allez voir, nous allons maintenant insérer des images dans les fichiers Word, et j’aime autant vous dire d’emblée deux choses :

  1. ce n’est pas, a priori, une affaire simple;
  2. il est très facile de ne pas optimiser la chose…

Lire la suite de cette entrée »

Générer un document Word depuis un modèle

Le cadre est donné, nous allons maintenant voir comment il est possible de générer dynamiquement un document Word, en PHP, depuis un fichier modèle. Pour cet article, nous prendrons comme exemple un facture qu’il faut générer dynamiquement. Nous sommes tous d’accord pour dire que, dans l’absolu, une facture est le pire exemple possible…
En effet, qui souhaite envoyer à l’un de ses clients une facture en Word, format largement éditable et modifiable ?

Ceci étant, je peux d’un simple revers de la main anéantir cet argument en disant, par exemple, que je souhaite pouvoir ajouter un petit message personnalisé à chacun de mes clients.

Plus sérieusement, une facture est un document quasi-universellement reconnu, quel que soit le métier qu’on exerce, et cela constitue donc bien, selon moi, un exemple parfaitement pédagogique. Lire la suite de cette entrée »

Générer un document Word dynamiquement, en PHP

Le sujet est explicite, simple, connu et sérieux. Vous développez un outil de gestion pour un de vos clients, et ce dernier souhaite que votre application puisse générer des documents; en développeur moderne que vous êtes, vous êtes naturellement parti du principe que les modifications doivent s’opérer directement dans l’application, et que vous pouvez donc exporter tranquillement en PDF à l’aide d’une des nombreuses librairies disponibles pour ce faire (FPDF, HTML2PDF, HTML2PS, etc.).

Or, il s’avère que votre client veut pouvoir modifier ces documents en-dehors de l’application (le bougre); dans certains cas, vous pourrez le ramener facilement à la raison (pour la facturation : « Comment, mais vous ne vous rendez pas compte !! Une facture est une pièce comptable, et vous ne pourrez plus garantir l’intégrité de votre comptabilité s’il est possible de modifier une facture en dehors de l’application… »).

Dans d’autres cas, en revanche, votre partie est perdue d’avance, et le client veut pouvoir rajouter des mots doux à l’intention des destinataires, sans pour autant que cela figure dans l’application. Du coup, vous bataillez pour une sortie txt, rtf…rien n’y fait; votre client veut du MS Word, et puis c’est tout.

Bienvenue dans le monde désenchanté de la génération dynamique de fichiers word en PHP (ben oui, en .NET, ce serait évidemment trop facile).

Lire la suite de cette entrée »

Comment un directeur informatique en vient à mailinblack ?

Vous en avez ras le fion du spam ? Moi aussi…Tout le monde en a assez du spam. Ça me rappelle quand ma boite aux lettres était bourrée de prospectus…Et encore, les prospectus, au final, ça coûte cher, il faut les imprimer, les déposer dans les boites…
Le Spam, c’est l’enfer…enfin, tout ça c’était jusqu’à la Libération, faite par MailinBlack (musique de trompettes à la Rome Antique TA-TATA-TAAAAA).
Sérieusement, on se demande parfois ce qui peut passer par la tête d’un directeur informatique pour vouloir installer cette sal**erie sur son système.

Lire la suite de cette entrée »

Les mots de passe des utilisateurs

Vous créez une application web (peu importe le langage, nous allons comme à notre habitude fixer les exemples en PHP, mais j’insiste sur le fait que ceci reste valable pour le Java, .NET, etc.) sur laquelle des utilisateurs vont pouvoir (et devoir) s’authentifier; pour ce faire, et c’est l’usage, ils disposeront d’un login et d’un mot de passe. Quelles sont les règles de base, parfois évidentes, à mettre en place ? Quelles contraintes donner aux utilisateurs ? Quid si l’application est une application interne à une société ou une application tout à fait publique ?

Lire la suite de cette entrée »

PI : Comment protégé-je mes droits sur mes créations ? Dans quelles limites ?

On avance gentiment sur le sujet; on sait désormais définir à peu près précisément ce qui va permettre de constituer ou non du droit d’auteur, et dans quel cas on va se retrouver propriétaire ou non de ce droit. Il importe désormais de savoir faire valoir cette titularité dans la jungle moderne qu’est le monde professionnel, et on va vite se rendre compte que de nombreux dangers guettent : d’abord, l’ignorance et les mauvaises intuitions des personnes en matière de propriété intellectuelle feront que des personnes croiront — de bonne foi — avoir le droit de dupliquer, reproduire, modifier, adapter, en un mot : contrefaire votre code, et ce sans que vous ne puissiez vous y opposer. Ensuite, votre propre bonne foi ne suffira pas toujours, en cas de litige, à démontrer que vous êtes titulaire des droits d’auteur, voire à démontrer que de tels droits existent (rappelez-vous, il ne suffit pas de coder pour fabriquer du droit d’auteur). Enfin, il sera bon de constater que, même dans le cas idéal où personne ne remet en cause l’originalité de votre oeuvre ni votre titularité, un contentieux peut vous emmener loin dans le temps, et vous coûter un peu d’argent…

Lire la suite de cette entrée »

PI : Comment et à quel moment deviens-je auteur ? Dans quelles conditions ?

Dans l’introduction qui précède, nous avons vu un plan d’ensemble sur ce qui est un des points primordiaux de votre travail de développeur et/ou d’architecte logiciel, mais qui pourtant le plus souvent est complètement sous-estimé, voire carrément ignoré : la propriété intellectuelle de votre oeuvre. En effet, votre oeuvre est le résultat d’un travail intellectuel dont il peut résulter un ensemble de droits — les droits d’auteur — qui sont un actif de votre entreprise : ils ont une valeur, et restreignent les possibilités de vos clients, de vos concurrents, de vos collègues, etc.

Lire la suite de cette entrée »