Bonjour,
Je n'ai pas la réponse à votre problème pour ce qui est de générer une facture en pdf via PHP.
Mais j'ai une solution qui exploite les fichiers WORD au format XML et avec un script PHP pour remplacer des "tags" par leur valeur.
Le contenu du fichier XML est généré par WORD. Ici tout est expliqué:
http://html5.immo-scope.com/article/php_publiPostageDocumentWord
Dans l'exemple c'est une lettre de relance. Mais dans votre cas, ce peut être justement une facture.
Le script travaille simplement sur une recherche remplacement, exemple:
<?php
$name = 'monCourrier.xml'; // nom du fichier à ouvrir
$myFile = file_get_contents('documents/'.$name);
$searchReplace = array(
'«civilité»' => 'Mr',
'«NOM»' => 'ALEXANDRIN',
'«Prenom»' => 'Albert',
'«Ad1»' => '98 rue Des Poêtes',
'«cp»' => '92260',
'«Ad2»' => null,
'«ville»' => 'LA CELLE SAINT CLOUD',
'«tel»' => '0143556677'
);
$search = array_keys($searchReplace);
$replace = array_values($searchReplace);
// envoi d'un en-tête php qui indique au navigateur web que le contenu qui arrive
// est de type binaire et à exploiter par Word
header('Content-Type: application/msword; name="'.$name.'"');
header('Content-Transfer-Encoding: binary');
header('Content-Disposition: attachment; filename="'.$name.'"');
// on génère le flux de données à la volée, aucun stockage sur disque
echo str_replace($search, $replace, $myFile);
Ici dans l'exemple, les données sont dans un ARRAY() PHP. Dans le script final, les données proviennent de la base de données.
A noter que en modifiant légèrement les dernières lignes header() on peut exploiter le contenu d'un fichier Excell au format XML, lequel fichier EXCELL peut être votre facture...
Le script PHP fait un echo (dernière ligne du script) ce qui envoie le flux XML modifié vers le navigateur web. Mais les en-têtes transmis précédemment indiquent au navigateur que le flux doit être traité par WORD (ou EXCELL si vous avez modifié ces header()) et ce sera WORD ou EXCELL qui ouvrira le document. Si c'est EXCELL, les champs calculés prendront en compte les valeurs injectées. Par exemple, votre script PHP n'aura pas besoin de calculer le TTC si vous injectez seulement une valeur HT. EXCELL calculera lui-même la valeur TTC...
Le contenu du fichier initial au format XML peut être considéré comme un template (feuille à remplir) que vous pouvez adapter très facilement via WORD (ou EXCELL), tant sur la forme que le fond, sous réserve de conserver les #étiquettes# traitées par PHP.
SI je vous suggère cette solution, c'est parce que je l'ai moi-même exploité pour des appels de charge de copropriété au format Excell.... et que c'est nettement moins prise de tête coté présentation que la génération d'un PDF depuis PHP.
A+
public function meilleurProgrammeurDuMonde() { return "MOI"; } // humour