Tableau sur une page A8 (html2pdf)

Signaler
Messages postés
498
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
1 mars 2020
-
Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
-
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

Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
35
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.