Tableau sur une page A8 (html2pdf)

msi79 Messages postés 509 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 2 mai 2023 - Modifié par f0xi le 5/11/2015 à 02:29
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 - 3 nov. 2015 à 23:26
Bonjour,
mon client veut que ses factures soient en ticket de caisse . j'ai tenté avec imprimer une zone en utilisant une div mais en vain . Alors je veux essayer la bibliothèque html2pdf en paramétrant avec un format A8. il se trouve que mon ticket déborde. Alors je voudrais de l'aide .

voici mon code :
<?php
/*
*Generer un PDF à patir d'une base de donnée
*/
//Connexion a la base de données
//Connexion a la base de données
mysql_connect('localhost','root','') or die('error');
mysql_select_db('globalaedbiac') or die('Bdd introuvable');
mysql_query('SET NAMES utf8');
ob_start();
include('functions/FACTUREDERNIER_tva.func.php');
$today = date("d/m/Y H:i:s");
if(isset($_GET['num'])) $num = urldecode($_GET['num']); //echo $num;
if(isset($_GET['clef'])) $clef = urldecode($_GET['clef']);

$query = mysql_query("SELECT * 
      FROM articles 
      WHERE  clef = '".$clef."'
         ") 
or die('error'); 
?>
<page backtop="20mm" backleft="10mm" backright="10mm" backbottom="30mm" >
  <table width="220" border="0" style="text-align:left">

    <tr>
      <td colspan="3" align="center" style="font-size:24px">Ticket de Caisse</td>
    </tr>
    <tr>
      <td colspan="3" align="center" style="font-size:14px">CEL: 58 58 81 85</td>
    </tr>
    <tr>
      <td style="font-size:9px">#<?php echo $clef;  ?>  </td>
      <td colspan="2" style="font-size:9px"><?php echo $today;  ?></td>
    </tr>
    <tr>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
   <?php
    while($rows = mysql_fetch_assoc($query)) {  
   $j=$i%2;  
   ?>
    <tr>
      <td width="63"><?php echo $rows["articleVendu"];  ?></td>
      <td width="98"><?php echo $rows["articleQuant"];  ?></td>
      <td width="45"><?php echo $rows["articlePU"];  ?></td>
    </tr>
  <?php
  }
  ?>
    <tr>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>

      <td>TOTAL</td>
      <td> </td>
      <td><?php 
                          $sql1 = "SELECT SUM(articleQuant*articlePU) AS depense
         FROM articles
         WHERE  clef = '".$clef."'
                                ";
            
       // on envoie la requête
       $req1 = mysql_query($sql1) or die('Erreur SQL !<br>'.$sql1.'<br>'.mysql_error());
       $depense = mysql_fetch_assoc($req1);
       echo $depense["depense"];

                      ?></td>
    </tr>
    <tr>
      <td>Mt Reçu</td>
      <td> </td>
      <td><?php 
                          $sql11 = "SELECT *
         FROM tb_somme_remise
         WHERE  num = '".$clef."'
         
                                ";
            
       // on envoie la requête
       $req1 = mysql_query($sql11) or die('Erreur SQL !<br>'.$sql11.'<br>'.mysql_error());
       $mtremi = mysql_fetch_assoc($req1);
       echo $mtremi["mt"];
                      ?></td>
    </tr>
    <tr>
      <td>Monnai</td>
      <td> </td>
      <td><?php 
            $monnai = $mtremi["mt"] - $depense["depense"];
      echo   $monnai;        
//AJOUT DE MONNAI
mysql_query("UPDATE tb_somme_remise SET monnai='".$monnai."'
                                            
            
        WHERE  num = '".$clef."'
       
      ")or 
die(mysql_error());                      
       
    ?></td>
    </tr>
    <tr>
      <td>Mt remi</td>
      <td> </td>
      <td><?php 
            $mtremis = $mtremi["monnai_remi"] ;
      echo   $mtremis;        
                  
       
    ?></td>
    </tr>
    <tr>
      <td>Avoir</td>
      <td> </td>
      <td><?php 
            $avoir = $mtremi["avoir"] ;
      if($avoir >0){echo   $avoir;}else if($avoir <=0){echo 0;}
          
                  
       
    ?></td>
    </tr>
    <tr>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td colspan="3" align="center">MERCI DE VOTRE FIDELITE</td>
    </tr>
    <tr>
      <td colspan="3" align="center">A BIENTOT</td>
    </tr>
    <tr>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
  </table>
</page>
<?php
$content = ob_get_clean();
require_once("html2pdf/html2pdf.class.php");
$pdf = new HTML2PDF('P','A8','fr','true','UTF-8');
$pdf->writeHTML($content);
$pdf->pdf->IncludeJS('print(true)');
$pdf->Output('liste.pdf');
?>

1 réponse

f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
Modifié par f0xi le 3/11/2015 à 23:30
Déjà, tu utilise mysql au lieu de mysqli, il faut mettre à jour pour éviter les problèmes de dépréciation sur les serveur php v >= 5

Ensuite le format A8 c'est 52mm de large pour 74mm de haut.
Reste à savoir si le ticket de caisse est en portrait (52mm) ou en paysage (74mm).
Il faut ensuite tout caler et vérifier que les phrases ne dépasse pas de la taille du document.

Étrangement les tickets de caisse (rouleau) sont sur des imprimantes spécifiques (thermique) qui possède leur propre langage d'impression (EPL, ZPL etc) c'est l'idéal pour faire de beaux tickets tout propres.
Si il utilise des imprimantes normales ... je vois pas trop l'intérêt d'imprimer en A8 ... mais bon ... pourquoi pas.

Utilise plutôt la lib FPDF qui permet beaucoup plus de choses, directement en PHP (lib utilisée par de nombreux sites), facile à comprendre et à mettre en oeuvre.
0
Rejoignez-nous