bonjour à tous,
je suis en train de faire un système de génération automatique de planning , mais j'ai l'erreur suivante :
TCPDF ERROR: Some data has already been output, can't send PDF file
voici mon code:

<?php 
    include'bd.php';
    include'../patial/header-planning.php';
ob_start();
?>

<div class="table-responsive">
    <table class="table table-striped">
            <thead>
                <tr>
                    <th>N°de séminaire</th>
                    <th>Intervenant</th>
                    <th>Date</th>
                    <th>Intitulé du séminaire</th>
                </tr>
            </thead>
            <tbody>
                <?php 
                    $sql=$bd->query("select*from planningsitw ");
                    while ($resultat=$sql->fetch(PDO::FETCH_ASSOC)) {                                       
                        echo'<tr>';
                            echo '<td>'.$resultat"id"].'</td>';
                            echo '<td>'.$resultat"Intervenant"].'</td>';
                            echo '<td>'.$resultat"Date"].'</td>';
                            echo '<td>'.$resultat"intitule"].'</td>';                   
                        echo'</tr>';        
                    }                                   
                ?>      
            </tbody>
    </table>        
</div>
<?php 
$res=ob_get_clean();
    require_once('html2pdf/html2pdf.class.php');

    try {

        $pdf =new HTML2PDF('P','A4','fr');

        $pdf->writeHTML($res);
        $pdf->Output('res.pdf');

    } catch (HTML2PDF_EXCEPTION $e) {
        echo'<div class="container"><div class="alert alert-danger">le PDF est indisponible...</div></div>';
        die($e);
    }
  ?>

4 réponses


Tu n'a pas laissé un saut de ligne, un espace ou un caractère avant <?php ou après ?> dans tes fichiers bd.php, header-planning.php ou celui ci-dessus ?

pour en avoir bavé à mort avec ce module, je confirme ce que dis Jo-jo, sur HTML2PDF, il ne doit y avoir le moindre caractère afficher en HTML avant l’exécution de ce prg. Par contre il me semble étrange qu'il ne parle pas de de header déjà définis.

Ya quoi dans ton header-planning.php

pristou
Auteur

flo3376:
tout d'abord merci,
Dans mon header-planning il y a que du code html et dans bd.php la connexion avec la base de donnée :
voici le code de header-planning

<!DOCTYPE html>
<html lang="">l
    <head>
        <title>Title Page</title>
        <meta charset="UTF-8">
        <meta name=description content="">
        <meta name=viewport content="width=device-width, initial-scale=1">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <!-- Bootstrap CSS -->
        <link href="../css/bootstrap.min.css" rel="stylesheet" media="screen">
    </head>
    <body>
        <script src="../js/jquery.js"></script>
        <!-- Bootstrap JavaScript -->
        <script src="../js/bootstrap.min.js"></script>
    </body>
</html>

et voici le code de bd.php :

<?php 
try {
    $bd=new PDO("mysql:host=localhost;dbname=site-test","root","");
} catch (PDOException $e) {
    die($e);
}
 ?>

et quand je change l'emplacement de

include'bd.php';
    include'../patial/header-planning.php';

et je les mets après

ob_start();

une autre une erreur est survenue :
le PDF est indisponible...
ERREUR n°1
Fichier : C:\wamp\www\html\lib\html2pdf\html2pdf.class.php
Ligne : 1251

La balise <SCRIPT> n'existe pas encore.

Si vous voulez la rajouter, vous devez créer les méthodes o_SCRIPT (pour l'ouverture) et c_SCRIPT (pour la fermeture) en suivant le modèle des balises existantes.

De plus, si vous créez ces méthodes, n'hésitez pas à en faire profiter tout le monde en m'écrivant sur webmaster@html2pdf.fr afin qu'elles seretrouvent dans la prochaine version d'HTML2PDF.

Oui tu dois obligatoirement afficher aucun contenu avant la génération du PDF.
donc ton fichier header-planning.php fait bugger le plugin si tu mets pas ob_start() avant.

Pour l'erreur : La balise <SCRIPT> n'existe pas encore.

Tu ne peux pas mettre de javascript dans un fichier pdf donc tu dois retirer les 2 balises <script>..</script>

<script src="../js/jquery.js"></script>
        <!-- Bootstrap JavaScript -->
        <script src="../js/bootstrap.min.js"></script>