[RESOLU] Transformation en PDF avec FPDF

Transformation en PDF avec FPDF [RESOLU] - PHP - Programmation

Marsh Posté le 04-09-2014 à 17:03:49    

Bonjour,
 
Je suis en cours de dev d'une petite appli.  
Je suis à la phase d'impression du ticket de caisse.
 
Je n'ai pas de problème pour générer le pdf à imprimer, mais la ou je bloque c'est sur le format de page.
 
Dans la documentation on fixe le format de page avec la commande:
 
$pdf = new FPDF('P','mm', array (xxx,yyy));
Ou xxx/yyy représente la largeur/longueur de la page si on utilise pas un format basique (A4, letter....)
 
mon problème est de quelle manière je puis fixer la largeur (xxx) et laisser la longueur en automatique.
 
Mon format d'impression et du style ticket de caisse qui sera imprimer sur une imprimante thermique. La largeur de l'impression est fixe (80mm), mais la longueur varie ne fonction de la quantité d'article sur la fiche.
Existe-t-il un moyen de la laisser en auto?
 
Merci d'avance.


Message édité par dantalcongo le 05-09-2014 à 12:20:08
Reply

Marsh Posté le 04-09-2014 à 17:03:49   

Reply

Marsh Posté le 05-09-2014 à 11:50:38    

Ben sinon, tu peux rester en A4 mais tu gères toi-même le fait que ton contenu ne doit pas faire plus de 80mm de large. De toute manière, la troncature des textes trop longs n'est pas gérée en auto avec FPDF autant que je me souviennes. Donc, autant le faire toi-même, tu gagneras toujours à pas te gérer le changement de page ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 05-09-2014 à 12:08:55    

Bien,
 
J'ai préféré passer par des variables.
$pdf = new FPDF('P','mm', array ($x,$y))
 
POur $x, je le fixe à 80 et pour $y, je passe par une prè requete qui va me compter combien de résultat va ressortir la requete.
Je multiplie le nombre de lignes par une valeur correspondant à l'écartement entre chaque ligne (on le fixe manuellement) et je pousse cette variable sur mon array($x, $y).
 
AInsi quand je lance le fichier, la longueur est automatiquement calculé en fonction du nombre d'article.
 
Problème résolu de manière détournée.

Reply

Marsh Posté le 05-09-2014 à 14:37:23    

Et si $y dépasse la longueur d'un A4 ? Ca marche aussi ?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 05-09-2014 à 15:42:02    

Eh bien l'imprimante à ticket ne s'arrête pas à une longueur donnée. Elle imprime ce qu'elle a dans son spool et ensuite coupe le ticket.  
 
Je dois dire que les tests effectués ne vont pas au dela d'une feuille A4 à ce stade de développement.
 
Je regarderai avec une liste d'article plus longue ce qu'il en est. Mais je ne pense pas que cela bloque sur une imprimante ticket thermique.

Reply

Marsh Posté le 05-09-2014 à 16:49:46    

C'est pas l'imprimante qui va poser pb mais le PDF généré. Si t'essayes d'écrire du texte alors que t'es sorti de la page, y'a fort à parier que soit FPDF lève une erreur soit que le contenu en dehors de la page soit purement ignoré (donc pas imprimé). :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 05-09-2014 à 17:02:25    

Je comprends ce que tu écris, mais je ne pense pas que cela ce produise.
 
Dans la mesure ou je fixerai la longueur de cette manière
$pdf = new FPDF('P','mm', array (21,29.7))
ou
$pdf = new FPDF('P','mm', 'A4')  
 
Je dirai oui, si j'ai trop de ligne je sortirai du format du pdf.
Mais justement en mettant la longueur de ma feuille en variable, je ne peux justement pas sortir de la page car sa longueur sera automatiquement calculé et ajusté avant la fin du pdf.
$pdf-> Output();
 
VOici comment j'ai procédé:
 
Ma requete qui interroge la bdd pour extraire les résultats attendus
$requete="select...............WHERE....";
$lancementrequete=mysqli_query($bdd,$requete);
$nombrederesultat=mysqli_num_rows(lancementrequete);
 
$longueurticket=($nombrederesultat*xx)+yy
 
[ ou x représente la hauteur des cell/multicell et yy la hauteur de mon entête de ticket]
 
En procédant ainsi, avant de générer le ticket en pdf je sais déjà quelle sera sa longueur max.
 
Il ne reste plus que:
$taillepage= array(80,$longueurticket);
 
$pdf = new FPDF('P','mm', $taillepage);
$pdf->AddPage();
 
et on poursuit sur le formatage du pdf.
 
Voila comment j'ai détourné mon problème initial.
 
Je te laisse essayer si ca te tente!!

Reply

Marsh Posté le 06-09-2014 à 00:01:58    

Du moment que ça marche pour toi, que qq soit la longueur du ticket, même si ça prend plusieurs pages A4, ta méthode marche et que ça t'imprime tout nickel, tant mieux ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed